#37434: 提示


zhoudaniel02@gmail.com (周孝倫)

學校 : 銘傳大學
編號 : 235507
來源 : [223.140.157.105]
最後登入時間 :
2024-04-29 21:31:07
j123. 2. 運貨站 -- 2022年10月APCS | From: [114.136.231.35] | 發表日期 : 2023-09-08 19:28

創建二維矩陣

有兩種方式

一種是從門口放,直到碰到底或其他貨物,要設計成for(int i=C-1;i>=0;i--) if(box[j][i-1]==i)break;

另一種是從底部找空間,如果遇到空間且貨物的右邊沒有任何物品就放置

不會有超時問題

switch (shape) {

case ("A"):

for(int w=0;w<C;w++) { 從底部找

for(int u=w;u<C;u++) { 判斷最後面的東西,直接把貨物推到最後面

if(box[h][u]==1||box[h+1][u]==1||box[h+2][u]==1||box[h+3][u]==1) {

w=u+1;

}

}

if(w<C&&box[h][w]==0&&box[h+1][w]==0&&box[h+2][w]==0&&box[h+3][w]==0) {//如果沒有壓到東西就放,空間-4

box[h][w]=1;

box[h+1][w]=1;

box[h+2][w]=1;

box[h+3][w]=1;

space-=4;

thr=false;

break;

}

}

if(thr==true)//擺到了最後面之後如果還是壓到東西就掰掰

throwout++;

break;

}

 

 
ZeroJudge Forum