求解为什么总是会死循环
查看原帖
求解为什么总是会死循环
1471660
the_nth_peoplo楼主2024/9/28 21:36
int main() {
    int a = 0, b = 1,  d = 9999999, e = 0,p=1,q=1, n = 0, b1, b2, b3, b4, b5, b6, b7, c1 = 0, c2 = 0, c3 = 0, c4 = 0, c5 = 0, c6 = 0, c7 = 0, t = 0;
    cin >>n;
    int** a1 = (int**)malloc(n * sizeof(int));
    for (int i = 0; i < n; i++) {       
        a1[i] = (int*)malloc(n * sizeof(int));
    }
    for (int i = 0; i < n; i++) {
        for (int j = 0; j < n; j++) {
            a1[i][j] = 0;
        }
    }
    a1[0][0] = 1;
    while (b <= n*n-1) {
        
            while (b <= n * n - 1) {
                
                b += 1;
                q += 1;
                a1[p - 1][q  - 1] = b;
                if (q == n) {
                    break;
                }
                if (a1[p - 1][q] != 0) {
                    break;
                }
            }
          
    
            while (b <= n * n - 1) {
               
                b += 1;
                p += 1;
                a1[p  - 1][q - 1] = b;
                if (p == n) {
                    break;
                }
                if (a1[p][q-1] != 0) {
                    break;
                }
            }
           
        
        
            while (b <= n * n - 1) {
                
                b += 1;
                q -= 1;
                a1[p - 1][q  - 1] = b;
                if (q == 1) {
                    break;
                }
                if (a1[p - 1][q-2] != 0) {
                    break;
                }
            }
          
        
       
            while (b <= n * n - 1) {
               
                b += 1;
                p -= 1;
                a1[p  - 1][q - 1] = b;
                if (p == 1) {
                    break;
                }
                if (a1[p - 2][q-1] != 0) {
                    break;
                }
            }
            
        
    }
    for (int i = 0; i < n; i++) {
        for (int j = 0; j < n; j++) {
            if (a1[i][j] < 10) {
                printf("  %d", a1[i][j]);
            }
            else {
                printf(" %d", a1[i][j]);
            }
            if ((j + 1) % n == 0) {
                cout << endl;
            }
        }
    }
    return 0;
}

懒得打头文件了,目前已经通过打补丁解决,但是还是好奇为什么这样子会死循环

2024/9/28 21:36
加载中...