日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

【模拟】2048

發(fā)布時間:2023/12/3 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【模拟】2048 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

2048

題目大意:

模擬2048游戲

原題:

題目描述

此時,Conan卻在一旁玩著2048。
這是一個4*4的矩陣,初始全為0。每次一個沒有數(shù)字的格子中會隨機出現(xiàn)一個2或4,每次可以選擇上下左右其中一個方向去滑動,每滑動一次,所有的數(shù)字方塊都會往滑動的方向靠攏外,相同數(shù)字的方塊在靠攏、相撞時會相加。
Conan想看看今天自己運氣咋樣,于是就閉著眼睛,在屏幕上隨便滑來滑去。所以這個模擬的任務(wù)就交給你了。過了一會,他然后睜開眼睛,如果游戲沒有結(jié)束(滑動后如果沒有空格子,則游戲結(jié)束),請輸出矩陣(格式參見樣例),否則輸出“Game over!”(不包含引號)。

輸入

輸入第一行包含一個整數(shù)N,表示Conan滑了幾下。
接下來N 行,x, y, v, f表示第x行與第y列出現(xiàn)數(shù)字為v后,Conan滑的方向為f(f為字符,U, D, L, R分別表示向上下左右滑)。
行從上往下1-4標(biāo)號,列從左往右1-4標(biāo)號。
數(shù)據(jù)保證在游戲未結(jié)束時,只會在空白區(qū)域出現(xiàn)數(shù)字。

輸出

輸出按題目描述。

輸入樣例

8 1 3 4 L 2 3 2 U 2 4 2 R 4 1 2 L 3 4 2 L 3 2 2 D 1 3 4 R 1 3 2 U

輸出樣例

0 0 2 8 0 0 0 2 0 0 0 8 0 0 0 0

說明

【數(shù)據(jù)規(guī)模與約定】

對于100%的數(shù)據(jù)滿足。

解題思路:

直接模擬每一步,然后判斷一下是否結(jié)束就行了

代碼:

#include<cstdio> using namespace std; int n,x,y,c,a[10][10]; bool up() {bool pd=true;for (int j=1;j<=4;++j){int i=0,k=1,gg=1;while(k<=4){while (!a[k][j]&&k<=4) k++;//尋找數(shù)字if (k>4) break;if (a[k][j]==a[i][j]&&!gg) a[i][j]*=2,gg=1;//合并else i++,a[i][j]=a[k][j],gg=0;//無法合并if (k!=i) a[k][j]=0;//清空else k++;}if (!a[4][j]) pd=false;//不是空的}if (pd) return true;return false; } bool down() {bool pd=true;for (int j=1;j<=4;++j){int i=5,k=4,gg=1;while(k>0){while (!a[k][j]&&k>0) k--;if (!k) break;if (a[k][j]==a[i][j]&&!gg) a[i][j]*=2,gg=1;else i--,a[i][j]=a[k][j],gg=0;if (k!=i) a[k][j]=0;else k--;}if (!a[1][j]) pd=false;}if (pd) return true;return false; } bool left() {bool pd=true;for (int i=1;i<=4;++i){int j=0,k=1,gg=1;while(k<=4){while (!a[i][k]&&k<=4) k++;if (k>4) break;if (a[i][k]==a[i][j]&&!gg) a[i][j]*=2,gg=1;else j++,a[i][j]=a[i][k],gg=0;if (k!=j) a[i][k]=0;else k++;}if (!a[i][4]) pd=false;}if (pd) return true;return false; } bool right() {bool pd=true;for (int i=1;i<=4;++i){int j=5,k=4,gg=1;while(k>0){while (!a[i][k]&&k>0) k--;if (!k) break;if (a[i][k]==a[i][j]&&!gg) a[i][j]*=2,gg=1;else j--,a[i][j]=a[i][k],gg=0;if (k!=j) a[i][k]=0;else k--;}if (!a[i][1]) pd=false;}if (pd) return true;return false; } int main() {scanf("%d",&n);for(int i=1;i<=n;++i){scanf("%d %d %d",&x,&y,&c);a[x][y]=c;//放進(jìn)去x=getchar();while (x!='U'&&x!='D'&&x!='L'&&x!='R')x=getchar();if (x=='U')//向上if (up()&&i!=n)//模擬并判斷是否結(jié)束{printf("Game over!");return 0;}if (x=='D')//向下if (down()&&i!=n){printf("Game over!");return 0;}if (x=='L')//向左if (left()&&i!=n){printf("Game over!");return 0;}if (x=='R')//向右if (right()&&i!=n){printf("Game over!");return 0;}}for (int i=1;i<=4;++i){for (int j=1;j<=4;++j)printf("%d ",a[i][j]);printf("\n");} }

總結(jié)

以上是生活随笔為你收集整理的【模拟】2048的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。