C++ 为SPOJ ANDROUND(5832)获得WA

C++ 为SPOJ ANDROUND(5832)获得WA,c++,algorithm,C++,Algorithm,我正在尝试解决这个问题: 我的算法使用32行N列的2D数组,因为在31轮之后,数组不会改变。然后,它计算2D数组中的每个字段,方法是取上一行列中保持不变的值的和及其相邻值。我已经检查了几乎所有类型的输入,并得到了所需的输出。但还是得到了WA。这是我的密码。如果有人能指出错误或给出我的程序失败的测试用例 #include <cstdio> #include <cstring> using namespace std; static long A[33][20002], N

我正在尝试解决这个问题:

我的算法使用32行N列的2D数组,因为在31轮之后,数组不会改变。然后,它计算2D数组中的每个字段,方法是取上一行列中保持不变的值的和及其相邻值。我已经检查了几乎所有类型的输入,并得到了所需的输出。但还是得到了WA。这是我的密码。如果有人能指出错误或给出我的程序失败的测试用例

#include <cstdio>
#include <cstring>
using namespace std;

static long A[33][20002], N, T, K;

int main()
{
    scanf("%ld", &T);
    while(T--){
        memset(A, 0, sizeof A);
        scanf("%ld %ld", &N, &K); K=(K>31)? 31:K;                       \\Setting K=31 if K>31
        for(int i=1; i<=N; ++i) scanf("%ld", &A[0][i]);
        A[0][0]=A[0][N]; A[0][N+1]=A[0][1];                                \\first row is the input array

        for(int i=1; i<=K; ++i){
            for(int j=1; j<=N; ++j)
                A[i][j]= (A[i-1][j]&A[i-1][j-1]) & A[i-1][j+1];  \\taking AND of previous element in column and its neighbors.

            A[i][0]=A[i][N]; A[i][N+1]=A[i][1];           \\for making array cyclic.
        }
        for (int i=1; i<=N; ++i) printf("%ld ", A[K][i]);                     \\Printing the array after required rounds.
        printf("\n");
    }
    return 0;
}
多谢各位

因为在31轮之后,阵列不会改变

你凭什么相信

在R轮之后,索引i处的元素仅受元素的影响

A[i-R] ... A[i+R]
如果我需要合适的包装 因为在31轮之后,阵列不会改变

你凭什么相信

在R轮之后,索引i处的元素仅受元素的影响

A[i-R] ... A[i+R]
如果我尝试此测试用例,请使用合适的包装

一, 500 1000000000 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 77777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777

一, 500 1000000000
7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 77777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777,wa的意思是错误的答案。不确定您是否得到了它,但您可能希望将数组扩大约2000个元素。不管怎样,您的算法都可能无法通过时间限制。@Ren:是的,wa的意思是错误的答案。不确定您是否得到了它,但您可能希望将数组扩大约2000个元素。无论哪种方式,您的算法都可能无法通过时间限制。