前往
大廳
主題

[OJ練習] 11349 預先練習的雙指標(課堂作業,非Schedule內容)

テリ君(福佬模式) | 2022-12-22 20:12:45 | 巴幣 0 | 人氣 153

11349(2/5)

#include <stdio.h>
#include <stdlib.h>

int main() {
    
    int t;
    scanf("%d", &t);
    if(t > 300) return 0; // cases T <= 300;
    
    int c = 1; // c for output;
    
    while(t--){
        
        int N = 0;
        char line[16];
        int s = 1;
        scanf("%c", &line);
        fgets(line, sizeof(line), stdin);
        sscanf(line, "N = %d", &N);
        
        int **M = (int**)malloc(sizeof(int*) * N); // int 2D array
        
        for(int i = 0; i < N; i++){ // int 1D array
        *(M + i) = (int*)malloc(sizeof(int) * N);
        }
        
        for (int i = 0; i < N; i++) { // scan the number into arrays
            for (int j = 0; j < N; j++) {
                scanf("%d", (*(M + i) + j));
            }
        }
        
        for(int i = 0; i < N; i++){ // check the symmerty number
        for(int j = 0; j < N; j++){
        if(*(*(M + i) + j) != *(*(M + (N - 1 - i)) + (N - 1 - j))){
        s = 0;
        break;
                }
            }
        }
        
       
        if(s == 1) printf("Test #%d: Symmetric.\n", c);
        else printf("Test #%d: Non-symmetric.\n", c);
        
        for(int i = 0; i < N; i++){
            free(*(M + i)); // Free 2D
        }
        
        free(M); // Free 1D
        
        c++; // case number
    }
    
    return 0;
}

是作業。
老師今天隨教雙指標我隨會,看來腦袋醒著,
雖然對很多熟練者來說可能已經是家常便飯小菜一碟,
但對於初學我來說其實成就感挺好的。
知道*要放哪裡,括弧要怎麼括,真的挺爽的。

晚點危ㄐㄐ上完回家更新今天練習的其他兩題。

創作回應

テリ君(福佬模式)
老師課堂拿我的CODE補充,我的一些變數宣告沒必要放在迴圈內,因為編譯一開始就已經宣告好了
2022-12-29 18:59:16
テリ君(福佬模式)
然後...註解可以寫多一點(?
2022-12-29 19:11:53

更多創作