问题描述
我最近一直在问一个问题,我在社论中使用了类似的方法。该问题的链接如下:https://www.spoj.com/problems/STPAR/
编辑代码(尽管它来自第三方站点,但我已经对其进行了测试,并给出了AC)-
ModuleNotFoundError: No module named '__main__.A'; '__main__' is not a package
我的代码-
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <stack>
using namespace std;
int a[1111],n;
int main() {
while (scanf("%d",&n) && n != 0) {
for (int i = 0; i < n; i++) scanf("%d",&a[i]);
int k = 0,i = 0;
stack<int> st;
while (i < n) {
while (st.size() && st.top() == k + 1) k++,st.pop();
if (a[i] != k + 1) st.push(a[i]);
else k++;
i++;
}
while (st.size() && st.top() == k + 1) k++,st.pop();
puts(k == n ? "yes" : "no");
}
}
我只是无法理解两个代码之间的区别,因为它们使用完全相似的方法,并且代码也几乎相似。帮助将不胜感激:)
解决方法
您尚未初始化t
值。而且您也不会减少它。
根据问题,没有测试用例的输入。因此,请同时删除变量t
和while循环(我的意思是删除while循环而不是其中的代码)。再次运行。