#38041: C++暴力解


110163@vtsh.tc.edu.tw (黃冠綸)

學校 : 不指定學校
編號 : 212677
來源 : [125.231.137.95]
最後登入時間 :
2024-05-13 13:41:41
m371. 2. 卡牌遊戲 -- 2023年10月APCS | From: [1.200.149.163] | 發表日期 : 2023-10-23 01:01

#include <iostream>

using namespace std;

int main()
{
    int n ,m ,ans=0;
    cin >> n >> m;
    int a[n][m];
    for(int i=0;i<n;i++)
        for(int j=0;j<m;j++)
            cin>>a[i][j];

    int c;//判斷是否找完了
    int bn ,bm ,num;//之前數字所在位置(n ,m)、現在數字
    while(1)//重複無限次找 //-1代表空格
    {
        c=0;
        for(int i=0;i<n;i++)//重複n次找橫向的
        {
            bn=i;
            bm=0;
            num=a[i][0];
            for(int j=1;j<m;j++)
            {
                if(a[i][j]!=-1)
                {
                    if(a[i][j]==num)
                    {
                        ans+=num;
                        a[i][j]=-1;
                        a[bn][bm]=-1;
                        c=1;
                    }
                    else
                    {
                        num=a[i][j];
                        bm=j;
                    }
                }
            }
        }

        for(int i=0;i<m;i++)//重複m次找直向的
        {
            bn=0;
            bm=i;
            num=a[0][i];
            for(int j=1;j<n;j++)
            {
                if(a[j][i]!=-1)
                {
                    if(a[j][i]==num)
                    {
                        ans+=num;
                        a[j][i]=-1;
                        a[bn][bm]=-1;
                        c=1;
                    }
                    else
                    {
                        num=a[j][i];
                        bn=j;
                    }
                }
            }
        }
        if(c==0)
        {
            cout << ans;
            return 0;
        }
    }
}

 
ZeroJudge Forum