#40004: 能有人幫我看看哪裡錯嗎謝謝


yp11051026@yphs.tp.edu.tw (911-24吳秉儒)

學校 : 臺北市私立延平高級中學
編號 : 163548
來源 : [1.162.69.186]
最後登入時間 :
2024-06-16 17:28:50
j123. 2. 運貨站 -- 2022年10月APCS | From: [203.72.178.1] | 發表日期 : 2024-04-19 17:45

#include<bits/stdc++.h>
using namespace std;
bool b[40][60]={true};
int main()
{
    int r,c,a,n,l=0,k;
    char p;
    cin>>r>>c>>n; a=r*c;
    for(int i=0;i<40;i++) for(int j=0;j<60;j++) b[i][j]=true;
    while(n--){
        cin>>p>>k; 
        bool h=false;
        int st=0;
        for(int i=0;i<c;i++) if(!b[k][i]) st=i;
        for(int i=st;i<c;i++){
            if(p=='A'&&b[k][i]&&b[k+1][i]&&b[k+2][i]&&b[k+3][i]&&(k+4)<=r){
                b[k][i]=b[k+1][i]=b[k+2][i]=b[k+3][i]=false;
                a-=4;
                h=true; break;
            }
            if(p=='B'&&b[k][i]&&b[k][i+1]&&b[k][i+2]&&(i+3)<=c){
                b[k][i]=b[k][i+1]=b[k][i+2]=false;
                a-=3;
                h=true; break;
            }
            if(p=='C'&&b[k][i]&&b[k][i+1]&&b[k+1][i]&&b[k+1][i+1]&&(k+2)<=r&&(i+2)<=c){
                b[k][i]=b[k][i+1]=b[k+1][i]=b[k+1][i+1]=false;
                a-=4;
                h=true; break;
            }
            if(p=='D'&&b[k][i]&&b[k][i+1]&&b[k][i+2]&&b[k-1][i+2]&&(i+3)<=c&&k>=1){
                b[k][i]=b[k][i+1]=b[k][i+2]=b[k-1][i+2]=false;
                a-=4;
                h=true; break;
            }
            if(p=='E'&&b[k][i]&&b[k+1][i]&&b[k+2][i]&&b[k+1][i-1]&&b[k+2][i-1]&&(k+3)<=r&&i>=1){
                b[k][i]=b[k+1][i]=b[k+2][i]=b[k+1][i-1]=b[k+2][i-1]=false;
                a-=5;
                h=true; break;
            }
        } if(!h) l++;
    } cout<<a<<' '<<l<<'\n';
}

 
#40746: Re: 能有人幫我看看哪裡錯嗎謝謝


cges30901 (cges30901)

學校 : 不指定學校
編號 : 30877
來源 : [39.9.74.255]
最後登入時間 :
2024-10-14 22:20:08
j123. 2. 運貨站 -- 2022年10月APCS | From: [39.15.65.200] | 發表日期 : 2024-06-11 08:51

假設測資是

5 5 3
B 3
A 1
C 0

當A放入後長這樣:

這時C是放不進去的,會被A卡到,但是你的程式會把C放到左上角

 
ZeroJudge Forum