俄羅斯方塊

2022-08-21 10:27:09 字數 752 閱讀 3881

俄羅斯方塊,你可以一次消除一行,也可以一次消除一列。然後給你每一列的的方塊個數。

解題思路:

1 2

3 4

5 6

7 8

剛開始是貪心,後面實測wa。

sort一遍,讓其保持單調下降,然後從後往前進行列舉,進行動態規劃。

動態轉移方程如下:

ans=min(ans,a[i]+i-1);

為什麼是這個呢?

大家可以畫個圖深入理解一下,這裡就不和大家講了。

時空複雜度

1 2

時間複雜度:o(n)

空間複雜度:o(1)

ac**如下:

#include

using

namespace

std;

int m,a[1000],n;

int ans;

bool cmp(int a,int b)//sort標配不解釋

int main()

a[n+1]=0;//新增末尾0,讓ans可以不漏答案

sort(a+1,a+n+1,cmp);

for(int i=n+1;i>=1;i--)

ans=min(ans,a[i]+i-1);//動態轉移

printf("%d",ans);

if(m)printf("\n");//防止pe,前文講過。

}return

0;}

俄羅斯方塊高階 AI俄羅斯方塊

前文回顧 致青春 python實現俄羅斯方塊 人工智慧大火的今天,如果還是自己玩俄羅斯方塊未免顯得太low,為什麼不對遊戲公升級,讓機器自己去玩俄羅斯方塊呢?有了這個想法之後利用週六週日兩天的時間去蒐集了大量的資料,在電腦宕機好多次之後終於將ai俄羅斯方塊實現了。所謂讓機器自己去玩俄羅斯方塊,就是讓...

俄羅斯方塊

俄羅斯方塊 tetris,俄文 是一款風靡全球的電視遊戲機 和掌上遊戲機遊戲,它由俄羅斯人阿列克謝 帕基特諾夫 發明,故得此名。俄羅斯方塊的基本規則是移動 旋轉和擺放遊戲自動輸出的各種方塊,使之排列成完整的一行或多行並且消除得分。由於上手簡單 老少皆宜,從而家喻戶曉,風靡世界。俄羅斯方塊的開發者是阿...

俄羅斯方塊

include include include include includeusing namespace std include include define mem a,b memset a,b,sizeof a const int sudu 40 const int dir 4 2 cons...