#40270: 大大們有人能幫小弟我解惑嗎


123123 (unknown1)

學校 : 不指定學校
編號 : 45211
來源 : [182.234.7.197]
最後登入時間 :
2024-05-11 21:10:11
m371. 2. 卡牌遊戲 -- 2023年10月APCS | From: [182.234.7.197] | 發表日期 : 2024-05-03 22:03

我用的是C++,在測試的時候最後4筆測資總顯示我的答案與正確答案相差2

#16: 5% WA (line:1)

您的答案為: 193539
正確答案為: 193541

#17: 5% WA (line:1)

您的答案為: 199508
正確答案為: 199510

#18: 5% WA (line:1)

您的答案為: 182823
正確答案為: 182825

#19: 5% WA (line:1)

您的答案為: 197311
正確答案為: 197313


程式碼如下:

#include <iostream>

using namespace std;

int main()
{
    int n,m,sum;
    cin>>n>>m;
    int card[100][100];
    sum=0;
    for(int i=0;i<n;i++){
        for(int j=0;j<m;j++){
            cin>>card[i][j];
        }
        for(int j=0;j<m-1;j++){
            if(card[i][j]==card[i][j+1]){
                sum+=card[i][j];
                card[i][j]=-1;
                card[i][j+1]=-1;
            }
        }
    }
    for(int i=0;i<n-1;i++){
        for(int j=0;j<m;j++){
            if(card[i][j]==card[i+1][j]){
                sum+=card[i][j];
                card[i][j]=-1;
                card[i+1][j]=-1;
            }
        }
    }
    int times=1;
    while(times){
        times=0;
        for(int i=0;i<n;i++){
            for(int j=0;j<m-1;j++){
                if(card[i][j]!=-1 && card[i][j+1]==-1){
                    for(int k=1;k<m-j;k++){
                        if(card[i][j+k]!=-1){
                            if(card[i][j]==card[i][j+k]){
                                sum+=card[i][j];
                                card[i][j]=-1;
                                card[i][j+k]=-1;
                                times=1;
                            }
                        break;
                        }
                    }
                }
            }
        }
        for(int i=0;i<n-1;i++){
            for(int j=0;j<m;j++){
                if(card[i][j]!=-1 && card[i+1][j]==-1){
                    for(int k=1;k<n-i;k++){
                        if(card[i+k][j]!=-1){
                            if(card[i][j]==card[i+k][j]){
                                sum+=card[i][j];
                                card[i][j]=-1;
                                card[i+k][j]=-1;
                                times=1;
                            }
                        break;
                        }
                    }
                }
            }
        }
    }
    cout<<sum;
    return 0;
}

 
ZeroJudge Forum