#include<bits/stdc++.h>
using namespace std;
const int N = 11;
int n,a[N][N];
void work(int n,int x,int y){
if(n==0)return;
for(int i=0;i<n/2;i++)
for(int j=0;j<n/2;j++)
a[x+i][y+j]=1;
work(n/2,x+n/2,y);
work(n/2,x,y+n/2);
work(n/2,x+n/2,y+n/2);
}
int main(){
scanf("%d",&n);
n=(1<<n);
work(n,1,1);
for(int i=1;i<=n;i++){
for(int j=1;j<=n;j++)
printf("%d ",!a[i][j]);
puts("");
}
return 0;
}
这是原来的代码,测试点 4、5、6 WA了,7、8、9、10 RE了。
把const int N = 11改成const int N = 1<<11后就行了,直接 AC。
RE没了很简单,因为数组不会越界了,但是我有点不明白为什么 4、5、6 测试点的WA也没了,有木有 dl 帮忙解释一下为啥子嘞?谢谢!