我正在尝试这个问题:http://www.spoj.com/problems/ANDROUND
我的算法是32行和N列的二维数组(32个因为31轮之后,数组不会改变)。然后,它通过获取前一行中的值的AND(列保持相同)及其邻居来计算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;
}
谢谢。
答案 0 :(得分:4)
因为在31轮之后,阵列不会改变
是什么让你相信?
在R
轮之后,索引i
处的元素仅受元素影响
A[i-R] ... A[i+R]
(如果i <= R
或N < i+R
,请进行适当的包装。)
因此,只保证在N/2
轮之后数组保持不变。
答案 1 :(得分:0)
试试这个测试用例。
1 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 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 6 < / P>