虽然A了,然不明白之前的代码为什么会WA
查看原帖
虽然A了,然不明白之前的代码为什么会WA
1025958
511_Juruo_wyk楼主2023/11/21 20:13
#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;
}

这是原来的代码,测试点 44、55、66 WA了,77、88、99、1010 RE了。

把const int N = 11改成const int N = 1<<11后就行了,直接 ACAC。

RE没了很简单,因为数组不会越界了,但是我有点不明白为什么 44、55、66 测试点的WA也没了,有木有 dldl 帮忙解释一下为啥子嘞?谢谢!

2023/11/21 20:13
加载中...