华为机试——CandyBrush游戏
来源:互联网 发布:快印客软件 编辑:程序博客网 时间:2024/06/06 03:43
CandyBrush游戏
描述: CandyBrush一款流行的消除游戏,在一个方阵中布满各种糖果,任意交换两个糖果,如果交换后出现横向或者竖向有连续三个相同的情况,则可以消除糖果并得分。
输入25个字符组成的字符串(编号为1到25),表示5×5的方阵,每个字符表示不同类型的糖果(区分大小写),判断是否有解,即交换某两个糖果后能够消除糖果。
举例,下面的方阵无解
T M T M O
X R U C q
A B C X R
U R M T O
T Q C R A
下面的方阵交换(0, 2)和(1, 2)两个糖果后,能消除M
T M T M O
X R M C q
A B C X R
U R M T O
T Q C R A
如果有解,则输出YES,同时输出所有交换方案中,被交换糖果最小编号(1到25),比如:上面的方阵中,被交换的糖果,编号最小的为糖果“T”,编号为3。
如果无解,则输出NO。
运行时间限制: 无限制
内存限制: 无限制
输入:
输入个字符组成的字符串,不含空格,表示5×5的方阵
输出:
如果有解,则输出YES,同时输出所有交换方案中,被交换糖果最小编号,以空格隔开。如果无解,则输出NO。
样例输入:
TMTMOXRMCqABCXRURMTOTQCRA
样例输出:
YES 3
答案提示:
输出最小糖果编号的意思,就是从左至右,从上到下遍历糖果,找到第一个跟其他交换后能消除的糖果即可。
#include<iostream>#include<string>using namespace std;char a[5][5];void swap(int i1,int j1,int i2,int j2){ char t=a[i1][j1]; a[i1][j1]=a[i2][j2]; a[i2][j2]=t;}int xiaochu(){ for(int i=0;i<5;i++) for(int j=0;j<3;j++) { if(a[i][j]==a[i][j+1] && a[i][j]==a[i][j+2]) return 1; } for(int j=0;j<5;j++) for(int i=0;i<3;i++) { if(a[i][j]==a[i+1][j] && a[i][j]==a[i+2][j]) return 1; } return 0;}int main(){ string str; cin>>str; int n=0,flag,min; for(int i=0;i<5;i++) for(int j=0;j<5;j++) a[i][j]=str[n++]; for(int i=0;i<5;i++) for(int j=0;j<5;j++) //从左到右,从上到下,第一个满足的编号最小,知道陈寻终止 { if(j+1<5) { swap(i,j,i,j+1); flag=xiaochu(); if(flag==1) { min=5*i+j+1; cout<<"Yes "<<min<<endl; return 0; } swap(i,j,i,j+1); //不符合时要交换回来,进行下次比较 } if(i+1<5) { swap(i,j,i+1,j); flag=xiaochu(); if(flag==1) { min=i*5+j+1; cout<<"Yes "<<min<<endl; return 0; } swap(i,j,i+1,j); } } cout<<"NO"<<endl; return 0;}
0 0
- 华为机试——CandyBrush游戏
- 2014华为武汉上机试题三:CandyBrush游戏
- 华为机试—24点游戏
- 华为机试—掷骰子游戏
- 华为机试---投篮游戏
- 华为机试题——掷骰子游戏
- 华为机试—取石子游戏(高级题160分)
- 掷骰子游戏 华为机试
- [华为机试练习题]25.圆桌游戏
- 华为机试---Word Maze迷宫游戏
- Android游戏接入——华为篇
- 华为机试—四则运算
- 华为机试—等差数列
- [华为机试练习题]44.24点游戏算法
- 华为编程大赛——24点游戏
- 华为OJ——24点游戏算法
- 华为OJ——24点游戏算法
- 华为机试——回文判断
- 关于新版Delphi的并发操作及公共变量并发读写
- Android 译文:Android中糟糕的AsyncTask
- 解读HDFS
- iOS开发中属性 property 和 synthesize 权威的介绍
- ML基石_7_VC
- 华为机试——CandyBrush游戏
- pat 1096 Consecutive Factors
- linux上SVN解决冲突命令
- KMP算法(C++实现)
- android线程池
- 用便宜的改装件裸板远程wifi智能控制电器
- c#通过代码触发按键点击事件
- iOS注册本地通知、取消本地通知 - 家柱
- 最流行的android组件大全