解題思路:
用乙個二維陣列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個小方塊組成的板塊從方格圖的上方落下,玩家可以操作板塊左右移動放到合適的位置,當板塊中某乙個方塊的下邊緣與方...