201604 2 俄羅斯方塊

2021-09-27 09:59:41 字數 1401 閱讀 5675

解題思路:

用乙個二維陣列mp儲存原來的方塊圖,用另乙個二維陣列tmp儲存臨時的方塊圖,先把tmp完全按照mp完全複製,然後加入新的方塊,統計出1的個數,然後使用to_down函式將加入的新方塊每次往下移動乙個格仔,如果移動過程中tmp中1的個數變少了,說明新方塊覆蓋了原來的格仔,網上回溯乙個格仔就是我們最後的答案。

#include

using

namespace std;

int mp[20]

[20];

//儲存原始方格圖

int block[5]

[5];

//儲存加入的方塊

int tmp[20]

[20];

//臨時儲存方格圖

int cnt;

//儲存方格圖中1的個數

int pos;

vector<

int> x,y;

//int型別的向量,可以看成長度可變的陣列

intto_down()

int tmp_cnt=0;

for(

int i=

1;i<=

16;i++)}

//統計向下乙個格仔後方格圖中1的個數

if(tmp_cnt!=cnt)

//如果1的個數變少,說明發生了覆蓋返回0,此時mp中儲存的就是最終的答案

return0;

for(

int i=

1;i<=

16;i++)}

for(

int i=

0;isize()

;i++

)return1;

}int

main

(void

)//把方格圖的下邊界全部置為1,更新cnt

for(

int i=

1;i<=

15;i++)}

for(

int i=

1;i<=

4;i++)}

cin>>pos;

for(

int i=

1;i<=

4;i++)}

}while

(to_down()

);//這裡迴圈裡是乙個空語句,這裡的分號不能省略

for(

int i=

1;i<=

15;i++

)else}}

return0;

}

201604 2 俄羅斯方塊

試題編號 201604 2 試題名稱 俄羅斯方塊 時間限制 1.0s 記憶體限制 256.0mb 問題描述 問題描述 俄羅斯方塊是俄羅斯人阿列克謝 帕基特諾夫發明的一款休閒遊戲。遊戲在乙個15行10列的方格圖上進行,方格圖上的每乙個格仔可能已經放置了方塊,或者沒有放置方塊。每一輪,都會有乙個新的由4...

201604 2 俄羅斯方塊

對下降的方塊確定上下左右界限,在地圖中找到下降的起始列和結束列 和下降塊匹配 遍歷地圖map,直到當前的位置的值和下降塊該處的值相與,如果 1,說明找到了第乙個可能是界限的行,然後從當前行進行遍歷,遍歷的方法是 假如下降塊為 0 1 1 0 0 0 1 0 0 0 1 0 0 0 0 0 分離之後的...

CCF CSP 俄羅斯方塊(201604 2)

問題描述 俄羅斯方塊是俄羅斯人阿列克謝 帕基特諾夫發明的一款休閒遊戲。遊戲在乙個15行10列的方格圖上進行,方格圖上的每乙個格仔可能已經放置了方塊,或者沒有放置方塊。每一輪,都會有乙個新的由4個小方塊組成的板塊從方格圖的上方落下,玩家可以操作板塊左右移動放到合適的位置,當板塊中某乙個方塊的下邊緣與方...