俄羅斯方塊,你可以一次消除一行,也可以一次消除一列。然後給你每一列的的方塊個數。
解題思路:
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...