求助! 不知道为什么有三个测试样例过不了
查看原帖
求助! 不知道为什么有三个测试样例过不了
668726
YYY_HHX楼主2022/4/22 16:22

我用的就是直接暴力枚举,在Clion上看应该没问题提交了之后,我用了一次下载数据

输入:

3

输出:

8 1 6
3 5 7
4 9 2

与我自己在IDE上完全一样

附上代码,有没有大佬帮本蒟蒻看看这道题,麻烦啦!!!

#include "cstdio"
#include "iostream"
using namespace std;
typedef struct {
    int k;
    int x,y;
}Node;
int main (){
    int N , k = 2;
    cin>>N;
    Node node[N*N+1];
    for(int i=1;i<=N*N;i++)
        node[i].k=0,node[i].x=0,node[i].y=0;
    node[1].x=1;
    node[1].y=(N+1)/2;
    node[1].k=1;
    for(k=2;k<=N*N;k++){
        if(node[k-1].x==1&&node[k-1].y!=N)
            node[k].k=1,node[k].x=N,node[k].y=node[k-1].y+1;
        if(node[k-1].y==N&&node[k-1].x!=1)
            node[k].k=1,node[k].x=node[k-1].x-1,node[k].y=1;
        if(node[k-1].x==1&&node[k-1].y==N)
            node[k].k=1,node[k].x=node[k-1].x+1,node[k].y=node[k-1].y;
        int j=0;
        if(node[k-1].x!=1&&node[k-1].y!=N){
            for(int i=1;i<=k;i++){
                if((node[i].x==node[k-1].x-1)&&(node[i].y==node[k-1].y+1)&&node[i].k){
                    j=i;
                    break;
                }
            }
            if(j==0){
                node[k].x=node[k-1].x-1;
                node[k].y=node[k-1].y+1;
                node[k].k=1;
            }
            if(node[j].k){
                node[k].x=node[k-1].x+1;
                node[k].y=node[k-1].y;
                node[k].k=1;
            }
        }
    }
    for(int i=1;i<=N;i++){
        for(int j=1;j<=N;j++){
            for(int l=1;l<=N*N;l++){
                if(node[l].x == i && node[l].y == j){
                    printf("%d ",l);
                }
            }
        }
        cout<<endl;
    }


}
2022/4/22 16:22
加载中...