这两个代码有什么区别

问题描述

我最近一直在问一个问题,我在社论中使用了类似的方法。该问题的链接如下: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循环而不是其中的代码)。再次运行。