gpt4 book ai didi

c++ - 为 SPOJ ANDROUND (5832) 获取 WA

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:24:23 27 4
gpt4 key购买 nike

我正在尝试这个问题:http://www.spoj.com/problems/ANDROUND

我的算法由 32 行和 N 列的二维数组构成(32 是因为在 31 轮之后,数组没有改变)。然后,它通过对前一行(保持不变的列)及其相邻行中的值进行 AND 来计算二维数组中的每个字段。我已经检查了几乎所有类型的输入并获得了所需的输出。但仍然得到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;
}

谢谢。

最佳答案

because after 31 rounds, the array doesn't change

是什么让你相信这一点?

R 之后rounds,索引 i 处的元素只受元素的影响

A[i-R] ... A[i+R]

(如果 i <= RN < i+R 则使用合适的包装)。

所以只能保证N/2之后数组不变回合。

关于c++ - 为 SPOJ ANDROUND (5832) 获取 WA,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16328329/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com