CCF認證201604 2俄羅斯方塊

2021-10-04 02:19:33 字數 1724 閱讀 9274

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列的方格圖上進行,方格圖上的每乙個格仔可能已經放置了方塊,或者沒有放置方塊。每一輪,都會有乙個新...