ETH官方钱包

前往
大廳
主題

[OJ練習(xí)] 11349 預(yù)先練習(xí)的雙指標(biāo)(課堂作業(yè),非Schedule內(nèi)容)

テリ君(桃夫模式) | 2022-12-22 20:12:45 | 巴幣 0 | 人氣 172

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;
}

是作業(yè)。
老師今天隨教雙指標(biāo)我隨會(huì),看來(lái)腦袋醒著,
雖然對(duì)很多熟練者來(lái)說(shuō)可能已經(jīng)是家常便飯小菜一碟,
但對(duì)於初學(xué)我來(lái)說(shuō)其實(shí)成就感挺好的。
知道*要放哪裡,括弧要怎麼括,真的挺爽的。

晚點(diǎn)危ㄐㄐ上完回家更新今天練習(xí)的其他兩題。

創(chuàng)作回應(yīng)

テリ君(桃夫模式)
老師課堂拿我的CODE補(bǔ)充,我的一些變數(shù)宣告沒必要放在迴圈內(nèi),因?yàn)榫幾g一開始就已經(jīng)宣告好了
2022-12-29 18:59:16
テリ君(桃夫模式)
然後...註解可以寫多一點(diǎn)(?
2022-12-29 19:11:53

更多創(chuàng)作