【模拟】2048

2048

题目大意:

模拟2048游戏

原题:

题目描述

此时,Conan却在一旁玩着2048。
这是一个4*4的矩阵,初始全为0。每次一个没有数字的格子中会随机出现一个2或4,每次可以选择上下左右其中一个方向去滑动,每滑动一次,所有的数字方块都会往滑动的方向靠拢外,相同数字的方块在靠拢、相撞时会相加。
Conan想看看今天自己运气咋样,于是就闭着眼睛,在屏幕上随便滑来滑去。所以这个模拟的任务就交给你了。过了一会,他然后睁开眼睛,如果游戏没有结束(滑动后如果没有空格子,则游戏结束),请输出矩阵(格式参见样例),否则输出“Game over!”(不包含引号)。

输入

输入第一行包含一个整数N,表示Conan滑了几下。
接下来N 行,x, y, v, f表示第x行与第y列出现数字为v后,Conan滑的方向为f(f为字符,U, D, L, R分别表示向上下左右滑)。
行从上往下1-4标号,列从左往右1-4标号。
数据保证在游戏未结束时,只会在空白区域出现数字。

输出

输出按题目描述。

输入样例

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

说明

【数据规模与约定】

对于100%的数据满足。

解题思路:

直接模拟每一步,然后判断一下是否结束就行了

代码:

#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++;//寻找数字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;//放进去x=getchar();while (x!='U'&&x!='D'&&x!='L'&&x!='R')x=getchar();if (x=='U')//向上if (up()&&i!=n)//模拟并判断是否结束{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");}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/321031.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

在Docker中部署Asp.net core2.1以及修改发布

本篇文章主要是如何在Docker容器中运行ASP.NET Core应用程序&#xff0c;以及修改系统之后&#xff0c;发布更新。本文章采用自定义的Docker文件系统要求&#xff1a;1.服务器或本地已经安装docker一、创建一个Asp.Net Core 2.1 Web应用&#xff08;若可以熟练创建项目&#xf…

HDU5322 - cdq分治FFT加速dp

5322 Hope [CDQ分治FFT加速计算dp] 题意 每一个每一个排列,排列中每个数向它后面第一个比它大的数连一条边. 每个排列对于答案的贡献是这个排列所生成的图中的每一个联通量中点的个数的平方之积. 例如:排列 1,2,3,6,4,51,2,3,6,4,51,2,3,6,4,5 其中 1,2,3,61,2,3,61,2,3,6形…

AT2300-[ARC068C]Snuke Line【整除分块】

正题 题目链接: https://www.luogu.com.cn/problem/AT2300 https://atcoder.jp/contests/arc068/tasks/arc068_c 题目大意 有mmm个车站&#xff0c;nnn种礼品&#xff0c;第iii种可以在[li,ri][l_i,r_i][li​,ri​]的车站买到&#xff0c;第ddd辆车会近过编号为ddd的倍数的车…

【二分】游戏

游戏 题目大意&#xff1a; 有三个套餐&#xff0c;1&#xff1a;一个a、一个b和一个c,2&#xff1a;一个a和两个b&#xff0c;3&#xff1a;两个a和一个b&#xff0c;现在有一定的a、b和c&#xff0c;要使任意两个形同的套餐不相邻&#xff0c;问最多可以有多少个套餐&#…

要用Identity Server 4 -- OAuth 2.0 超级简介

OAuth 2.0 简介OAuth有一些定义:OAuth 2.0是一个委托协议, 它可以让那些控制资源的人允许某个应用以代表他们来访问他们控制的资源, 注意是代表这些人, 而不是假冒或模仿这些人. 这个应用从资源的所有者那里获得到授权(Authorization)和access token, 随后就可以使用这个access…

清明梦超能力者黄YY[树链剖分+扫描线,线段树合并]

清明梦超能力者黄YY 题目连接 https://www.nowcoder.com/acm/contest/206/I 暂时有两种做法. 算法一 涉及:树链剖分,扫描线 在一个线段的情况下,我们可以把一个染色区间拆成左端点处增加事件,右端点处删除事件. 维护一颗权值线段树. 这样,端点从小到大扫描时,遇到增加事件…

初一模拟赛总结(3.23)

成绩&#xff1a; rankrankranknamenamenamescorescorescoreT1T1T1T2T2T2T3T3T3T4T4T4111lyflyflyf300300300100100100100100100100100100000222wjjwjjwjj290290290100100100100100100909090000333hkyhkyhky270270270100100100100100100707070000444fyfyfy24024024010010010010…

CF1110E-Magic Stones【结论题,差分】

正题 题目链接:https://www.luogu.com.cn/problem/CF1110E 题目大意 给出一个序列cic_ici​和一个序列tit_iti​。每次操作可以将cici−1ci1−ci(1<i<n)c_ic_{i-1}c_{i1}-c_i(1<i<n)ci​ci−1​ci1​−ci​(1<i<n) 解题思路 首先要求c1t1,cntnc_1t_1,c_nt…

好代码是管出来的——C#的代码规范

代码是软件开发过程的产物&#xff0c;代码的作用是通过编译器编译后运行&#xff0c;达到预期的效果(功能、稳定性、安全性等等)&#xff0c;而另外一个重要作用是给人阅读。对于机器来说只要代码正确就能够正确的运行程序&#xff0c;但是人不同&#xff0c;如果代码编写混乱…

【图论】【高精】产生数(ssl 1021/ luogu 1037)

产生数 ssl 1021 luogu 1037 题目大意&#xff1a; 有一个数&#xff0c;可以使某些数字变成相对应的数字&#xff0c;问有多少种变法 原题&#xff1a; Description 给出一个整数 n&#xff08;n<10^30) 和 k 个变换规则&#xff08;k<15&#xff09;。   规则…

P3224-[HNOI2012]永无乡【平衡树,启发式合并】

正题 题目链接:https://www.luogu.com.cn/problem/P3224 题目大意 nnn个点&#xff0c;每次可以连接两个点和询问一个点所在联通块中第kkk大的数。 解题思路 我们发现可以启发式合并&#xff0c;对于每个联通块维护一个线段树&#xff0c;然后每次合并时将小的暴力丢入大的平…

牛客国庆集训派对Day6

牛客国庆集训派对Day6 以下是我个人题解,出题人题解附带在最后 A.Birthday 费用流裸题,只要注意到135...2k−1k2135...2k-1 k^2135...2k−1k2即可已做这道题了. 其他的地方连边都很方便.每一个区域向汇点连很多条容量为111的边,但费用分别是1,3,5,...,2k−11,3,5,...,2k-11…

.NET Core微服务之基于IdentityServer建立授权与验证服务(续)

上一篇《.NET Core微服务之基于IdentityServer建立授权与验证服务》我们基于IdentityServer4建立了一个AuthorizationServer&#xff0c;并且继承了QuickStartUI&#xff0c;能够成功获取Token了。这一篇我们了解下如何集成API Service和MVC Web Application。一、集成API Serv…

P4587-[FJOI2016]神秘数【主席树】

正题 题目链接:https://www.luogu.com.cn/problem/P4587 题目大意 nnn个数&#xff0c;每次选择一个区间&#xff0c;然后询问这个区间的子集和所不能表示的最小的正整数。 解题思路 假设我们从小到大加入数字&#xff0c;我们发现如果这个数不是111显然这个区间内至少有一个…

【图论】【Floyed】舞会邀请(CODE[VS] 2604)

舞会邀请 CODE[VS] 2604 题目大意&#xff1a; Smart要叫一些人开Party&#xff0c;每个人可以通知一部分人&#xff0c;Smart去通知一些人&#xff0c;再让这些人去通知其他人&#xff0c;问Smart最少通知几个人&#xff0c;可以使全部人都被通知到 原题&#xff1a; 题目…

ASP.NET Core 2.1 : 十一. 如何在后台运行一个任务

在大部分程序中一般都会需要用到后台任务&#xff0c; 比如定时更新缓存或更新某些状态。一、应用场景以调用微信公众号的Api为例&#xff0c; 经常会用到access_token&#xff0c;官方文档这样描述&#xff1a;“是公众号的全局唯一接口调用凭据&#xff0c;有效期目前为2个小…

【Floyed】工厂的烦恼(ssl 1762)

工厂的烦恼 ssl 1762 题目大意&#xff1a; 求一个图中最长的路线的长度 原题&#xff1a; Description 某工厂发现厂里的机器在生产产品时要消耗大量的原材料&#xff0c;也就是说&#xff0c;有大量的原材料变成了废物。因此厂里想找出消耗原材料最大的一条生产线路进行…

P3899-[湖南集训]谈笑风生【主席树】

正题 题目链接:https://www.luogu.com.cn/problem/P3899 题目大意 给出nnn个点的一棵有根树&#xff0c;每次询问一个(p,k)(p,k)(p,k)&#xff0c;求有多少个点对(b,c)(b,c)(b,c)满足 ppp和bbb是ccc的祖先bbb与ppp的距离不超过kkk 蛤蛤蛤蛤蛤蛤蛤蛤蛤蛤蛤蛤蛤蛤蛤蛤蛤蛤蛤蛤蛤…

好代码是管出来的——.Net中的代码规范工具及使用

上一篇文章好代码是管出来的——C#的代码规范介绍了编码标准中一些常用的工具&#xff0c;本篇就具体来介绍如何使用它们来完成代码管理。  本文主要内容有&#xff1a;Roslyn简介开发基于Roslyn的代码分析器常用的基于Roslyn的代码分析器在.Net Framework项目中使用代码分析…

NCPC2018 D.Delivery Delays[二分答案+DP check]

Delivery Delays 题意 100010001000个点,500050005000条边的无向图,披萨店在111号店.100010001000份披萨订单,每个订单有下单时间,送达地点,披萨制作出来的时间.你是快递员初始在111号点,每次可以拿无穷多披萨,送完以后返回111号点继续送,送餐的时候要求按照下单顺序送达,求等…