部分情况下会出现TLE
查看原帖
部分情况下会出现TLE
800102
q_n_q楼主2022/11/16 15:45

n>2时,程序似乎进入了死循环。 麻烦大佬帮忙看看

int main(){
    int n;
    scanf("%d",&n);
    int num[n][n];
    memset(num,0,sizeof(num));
    num[0][0]=1;
    int x=0,y=0;
    int X=1,Y=0;
    int i=1;
    while(i<n*n){
        while(x+X>=0&&y+Y>=0&&x+X<n&&y+Y<n&&num[y+Y][x+X]==0){
            num[y+Y][x+X]=++i;
            x+=X;
            y+=Y;
        }
        int a=x;
        x+=-a-y;
        y+=a-y;
    }
    for(int i=0;i<n;i++){
            for(int j=0;j<n;j++)
                printf("%d",num[i][j]);
            printf("\n");
    }

    return 0;
}
2022/11/16 15:45
加载中...