1004-Rails_STDU第二周训练 (nowcoder.com)
死胡同,啥意思:栈底呗。其实是给你个出栈顺序让你判断正不正确(入栈顺序都是从1到N)。
模拟栈的入和出不就好了吗!
ACCODE:
哈哈有了前面那个题铺垫,这个题自己想出来不是有手就行嘛,嘿嘿嘿~~
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
#define INF 0x3f3f3f3f
#define mem(a) memset(a, 0, sizeof(a))
int a[1000010];
int main()
{
int n;
while (cin >> n && n)
{
memset(a, 0, sizeof(a));
while (cin >> a[1] && a[1])
{
stack<int> s;
for (int i = 2; i <= n; i++)
cin >> a[i];
int index, cnt = 1;
for (int i = 1; i <= n; i++)
{
if (i == 1)
index = a[1];
s.push(i);
while (!s.empty()&&s.top() == index)
{
s.pop();
index = a[++cnt];
}
}
for (int i = cnt; i <= n; i++)
{
if (s.top() != a[cnt])
{
cout << "No" << endl;
break;
}
else
{
cnt++;
s.pop();
}
}
if (s.empty())
cout << "Yes" << endl;
}
cout << endl;
}
}
精髓在这呢!
while (!s.empty()&&s.top() == index)
{
s.pop();
index = a[++cnt];
}
你觉得难只不过大脑不想分析过于复杂的知识罢了,被大脑欺骗???