#22610: 測試沒問題 送出 WA "共輸出三行"


10931094@stu.tshs.tp.edu.tw (一仁34陳柏睿)

學校 : 不指定學校
編號 : 128980
來源 : [60.248.90.253]
最後登入時間 :
2021-10-22 14:18:14
a015. 矩陣的翻轉 | From: [219.85.104.250] | 發表日期 : 2020-09-19 15:20

J個花了我很久時間r...

 

#include <iostream>

 

using namespace std;

 

int main(){

    int x, y, array_size, counter;

    cin >> x >> y;

    array_size = x*y;

    int a[array_size];

 

    for(int h=1;h<=array_size;++h){

        cin >> a[h];

    }

 

    if(x<=1&&y<=1||x==0||y==0){

        cout << a[1];

        return 0;

    }

 

    for(int i=1;i<=y;i++){

        counter = i;

        cout << a[i] << " ";

        for(int j=1;j<x;++j){

            counter=y+counter;

            if(x==1){

                break;

            }

            //cout << counter << "<< counter!!" << endl;

            cout << a[counter] << " ";

        }

        if(i==y){

            break;

        }else{

            cout << endl;

        }

 

    }

    return 0;

}

 

 

求解

 
#22620: Re:測試沒問題 送出 WA "共輸出三行"


snakeneedy (蛇~Snake)

學校 : 國立高雄師範大學附屬高級中學
編號 : 7661
來源 : [114.40.8.251]
最後登入時間 :
2023-01-25 19:16:06
a015. 矩陣的翻轉 | From: [123.194.188.217] | 發表日期 : 2020-09-20 05:24

注意提示

Hint :
* 測資檔會包含多組矩陣資料

而你的程式碼只接受一筆測資,試著寫成

while (cin >> x >> y) {
  // 處理 x, y
}

注意結果輸出的最後,要有換行,避免矩陣的第一列,黏到前一個矩陣的最後一列
(但矩陣之間不用有空行)

 
#22625: Re:測試沒問題 送出 WA "共輸出三行"


10931094@stu.tshs.tp.edu.tw (一仁34陳柏睿)

學校 : 不指定學校
編號 : 128980
來源 : [60.248.90.253]
最後登入時間 :
2021-10-22 14:18:14
a015. 矩陣的翻轉 | From: [219.85.104.250] | 發表日期 : 2020-09-20 14:48

注意提示

Hint :
* 測資檔會包含多組矩陣資料

而你的程式碼只接受一筆測資,試著寫成

while (cin >> x >> y) {
  // 處理 x, y
}

注意結果輸出的最後,要有換行,避免矩陣的第一列,黏到前一個矩陣的最後一列
(但矩陣之間不用有空行)


謝謝大大的回覆,我已經用 while 處理資料了... 但是現在變成 WA "共輸出四行"... 我自己試著輸入多筆資料都沒問題... 請問我應該如何改善?

 

Here is the code:

#include <iostream>

 

using namespace std;

 

int main(){

    int x, y, array_size, counter;

 

    while(cin >> x >> y){

        array_size = x*y;

        int a[array_size];

 

        for(int h=1;h<=array_size;++h){

            cin >> a[h];

        }

 

        if(x<=1&&y<=1||x==0||y==0){

            cout << a[1];

            break;

        }

 

        for(int i=1;i<=y;i++){

            counter = i;

            cout << a[i] << " ";

            for(int j=1;j<x;++j){

                counter=y+counter;

                if(x==1){

                    break;

                }

                cout << a[counter] << " ";

            }

            if(i==y){

                break;

            }else{

                cout << endl;

            }

        }

        cout << endl;

        x=0;y=0;array_size=0;counter=0;

    }

    return 0;

}

 

 
#22633: Re:測試沒問題 送出 WA "共輸出三行"


snakeneedy (蛇~Snake)

學校 : 國立高雄師範大學附屬高級中學
編號 : 7661
來源 : [114.40.8.251]
最後登入時間 :
2023-01-25 19:16:06
a015. 矩陣的翻轉 | From: [218.161.41.139] | 發表日期 : 2020-09-21 13:08

我猜問題出在

if (x<=1 && y<=1 || x==0 || y==0) {
  cout << a[1];
  break;
}

當遇到測資為

1 1
1

或者 0 0

0 0

時,程式就跳出 while 了

把 break; 改成 continue; 試試

 
ZeroJudge Forum