2023-06-22

【ZeroJudge】j390. 第五題、二維陣列----四邊算數 解法分享

點擊前往題目👉j390 (須先加入競賽【海山高中資訊研究社社內競賽試題公開練習】)

開場

今天挑選了海山高中資訊研究社社內競賽的題目!是陣列相關的題目。棕熊看了一下,感覺挺適合那些想練習較複雜題目的初學者,那麼,我們就開始吧~

範例程式

#include <iostream>
using namespace std;
int main(){
    int a,b;
    cin>>a>>b;
    int x[a][b];
    for(int i=0;i<a;i++){
        for(int j=0;j<b;j++)
            cin>>x[i][j];
    }
    int blue=x[0][b-1],orange=x[0][0],red=x[0][0];
    float purple=x[a-1][0];
    for(int i=1;i<a;i++)
        blue+=x[i][b-1];
    for(int i=1;i<a;i++)
        orange-=x[i][0];
    for(int i=1;i<b;i++)
        red*=x[0][i];
    for(int i=1;i<b;i++)
        purple+=x[a-1][i];
    cout<<blue<<"\n"<<orange<<"\n"<<red<<"\n"<<purple/2;
    return 0;
}

解析

這一題實際上也沒有很難,但就是題目敘述複雜了些,需要想一下,不過實際上,若讀懂了題目,應該是很快就能答出來的!接下來,來看看這題的解題思路吧!
題目要求我們分別輸出:
藍色以及其上下兩白色框代表的數字之
橘色以及其上下兩白色框代表的數字之
紅色以及其左右兩白色框代表的數字之
紫色以及其左右兩白色框代表的數字之除以2
所以首先,我們要令一些變數並且賦值,如上方程式碼的第4-12行:
    int a,b;
    cin>>a>>b;
    int x[a][b];
    for(int i=0;i<a;i++){
        for(int j=0;j<b;j++)
            cin>>x[i][j];
    }
    int blue=x[0][b-1],orange=x[0][0],red=x[0][0];
    float purple=x[a-1][0];
這裡,我們定義了一些變數,分別是a、b、blue、orange、red跟purple,並且賦值。
第7-10行的for迴圈是賦值給我們的二維陣列x,而blue、orange、red及purple是用來儲存我們的運算結果的。
    for(int i=1;i<a;i++)
        blue+=x[i][b-1];
    for(int i=1;i<a;i++)
        orange-=x[i][0];
    for(int i=1;i<b;i++)
        red*=x[0][i];
    for(int i=1;i<b;i++)
        purple+=x[a-1][i];
    cout<<blue<<"\n"<<orange<<"\n"<<red<<"\n"<<purple/2;     return 0;
以上程式的邏輯應該不用再詳述,我盡可能地使其容易理解......blue+=x[i][b-1];orange-=x[i][0];red*=x[0][i];
purple+=x[a-1][i];
是分別計算藍、橘、紅、紫色格的數值。紫色那一列我是先將其全部加起來求其總和,最後再輸出其除以2的數值。

結語

以上就是今天的內容啦!希望大家都有了解這次的內容!如果有不懂的歡迎留言詢問~~

沒有留言:

張貼留言

留言注意事項:

勾選「通知我」可在後續有回覆時寄信給您!

使用Safari恐無法登入留言(只能以匿名方式留言)!

敬請詳細描述問題,以方便站方迅速判斷與解答!

依據本站免責聲明,本站得逕行刪除含有不適合存在於本站的言論與字詞的發言,敬請謹慎留言!