|
发表于 2023-11-8 19:39:18
|
显示全部楼层
这段代码实现了一个铁轨问题的判断。根据输入的数列,判断是否能够通过一系列的入栈和出栈操作,使得最终栈为空。
然而,这段代码存在一些问题。首先,在读取数列时,只读取了n-2个数,而应该读取n个数。其次,在判断是否能够通过一系列操作使得栈为空时,使用了错误的判断条件。
以下是修改后的代码:
- #include <bits/stdc++.h>
- using namespace std;
- const int N=1e3+10;
- int n,b[N];
- int main()
- {
- cin>>n;
- while(cin>>n,n)
- {
- while(1)
- {
- int i=1,j=1;
- for(int k=1;k<=n;k++) // 读取n个数
- cin>>b[k];
- stack<int> s;
- while(i<=n)
- {
- if(i==b[j])
- {
- i++;
- j++;
- }
- else
- {
- s.push(i++);
- }
- while(!s.empty()&&s.top()==b[j])
- {
- j++;
- s.pop();
- }
- }
- if(j<=n)
- cout<<"No";
- else
- cout<<"Yes";
- cout<<endl;
- break;
- }
- }
- }
复制代码
这样修改后的代码能够正确读取n个数,并且在判断是否能够通过一系列操作使得栈为空时,使用了正确的判断条件。 |
|