ccf認證201604-2俄羅斯方塊
分析題目:
題目要求就是俄羅斯落下的最終結果(不消除)。
經思考,應有兩種解法:
1、當作模擬題,一步一步下落,直到落到應落到的位置;
2、去計算當前裡1的最高點,去匹配落下的四個方塊,找到合適的位置。
兩種方法比較:1的思維較為簡單,但速度肯定會慢,2的思維較為複雜,但速度相對較快。
採用解法1程式設計:
1、設定三個陣列,image1510(當前影象矩陣),block44(掉落方塊矩陣),last15*10(上乙個狀態影象矩陣);
2、將image和block分別讀入;
3、將block放入image的合適位置,並將四個方塊的座標存入block(vector);
4、利用count函式,計算當前區域內方塊的數量total;
5、利用block陣列,每次讓四個方塊下降1格,判斷下降後是否會超出區域或者與之前的方塊重疊,使得總方塊數減少(即count != total)。
5、迴圈下降至條件不滿足,即儲存的上乙個副本last,就是最終的方塊圖像。
6、列印last。
1、二維陣列的第乙個數是行,第二個數是列;
2、vector> block;
這個地方注意pair後面要有乙個空格,否則會報錯;
環境
visual c++6.0
#include
#include
#include
#include
using
namespace std;
int image[15]
[10];
//當前影象矩陣
int last[15]
[10];
//上乙個狀態影象矩陣
int block[4]
[4];
//掉落方塊圖像矩陣
intcount
(int n)
//printf("\n");
}//printf("\n");
return re;
}int
main()
//printf("\n");
}//printf("\n");
vectorint,
int>
> block;
//注意這個地方宣告pair後要有乙個空格
for(
int jj=
3; jj>=
0; jj--)}
}int n;
scanf
("%d"
,&n)
;for
(int z=
0; zsize()
; z++
)int total=
count
(n);
//4*15的區域內應該有多少個方塊,既不能多,也不能少
while
(count
(n)== total)
for(
int zz=
0; zzsize()
; zz++)}
for(
int y=
14; y>=
0; y--)if
(y !=0)
printf
("\n");
}return0;
}
無 CCF認證201604 2俄羅斯方塊
試題編號 201604 2 試題名稱 俄羅斯方塊 時間限制 1.0s 記憶體限制 256.0mb 問題描述 問題描述 俄羅斯方塊是俄羅斯人阿列克謝 帕基特諾夫發明的一款休閒遊戲。遊戲在乙個15行10列的方格圖上進行,方格圖上的每乙個格仔可能已經放置了方塊,或者沒有放置方塊。每一輪,都會有乙個新的由4...
CCF 201604 2 俄羅斯方塊
問題描述 俄羅斯方塊是俄羅斯人阿列克謝 帕基特諾夫發明的一款休閒遊戲。遊戲在乙個15行10列的方格圖上進行,方格圖上的每乙個格仔可能已經放置了方塊,或者沒有放置方塊。每一輪,都會有乙個新的由4個小方塊組成的板塊從方格圖的上方落下,玩家可以操作板塊左右移動放到合適的位置,當板塊中某乙個方塊的下邊緣與方...
ccf201604 2 俄羅斯方塊
toc試題編號 201604 2 試題名稱 俄羅斯方塊 時間限制 1.0s 記憶體限制 256.0mb 問題描述 問題描述 俄羅斯方塊是俄羅斯人阿列克謝 帕基特諾夫發明的一款休閒遊戲。遊戲在乙個15行10列的方格圖上進行,方格圖上的每乙個格仔可能已經放置了方塊,或者沒有放置方塊。每一輪,都會有乙個新...