HDU_1175_连连看
题目:http://acm.hdu.edu.cn/showproblem.php?pid=1175
大意:连连看规则,只能转两次弯,先输入矩阵0表示没有棋子,正整数表示不同的棋子,然后询问,输入两点坐标,判断能否消除。(询问没有先后顺序,都针对当前状态)
分析:dfs,普通迷宫搜索,加上判断转弯次数。
总结:看题仔细,继续加强dfs。
代码:
#include<iostream>
#include<cstdio>
#include<cstring>
#include<cmath>
using namespace std;
#define N 1005 int dir[][]= {{-,},{,},{,},{,-}};
int map[N][N];
int vis[N][N];
int n,m;
int flag=;
int a1,a2,b1,b2; bool inside(int x,int y)
{
if(x>=&&x<=n&&y>=&&y<=m)
return ;
return ;
} void dfs(int x,int y,int turn,int dire)
{
if(!inside(x,y))
return;
if(turn->)
return;
if(x==b1&&y==b2)
{
//cout<<turn<<'*'<<endl;
flag=;
return;
}
if(flag==)
return;
for(int i=; i<; i++)
{
int mx=x+dir[i][];
int my=y+dir[i][];
if(map[mx][my]==&&!vis[mx][my])
{
if(i!=dire)
{
vis[mx][my]=;
dfs(mx,my,turn+,i);
vis[mx][my]=;
}
else
{
vis[mx][my]=;
dfs(mx,my,turn,dire);
vis[mx][my]=;
}
} }
} int main()
{
int q;
while(scanf("%d%d",&n,&m)!=EOF&&n&&m)
{
for(int i=; i<=n; i++)
for(int j=; j<=m; j++)
scanf("%d",&map[i][j]);
scanf("%d",&q);
while(q--)
{ scanf("%d%d%d%d",&a1,&a2,&b1,&b2);
if((map[a1][a2]!=map[b1][b2])||(map[a1][a2]==||map[b1][b2]==))
printf("NO\n");
else
{
flag=;
int tmp=map[a1][a2];
map[b1][b2]=;
memset(vis,,sizeof(vis));
dfs(a1,a2,,);
map[a1][a2]=map[b1][b2]=tmp;
if(flag)
printf("YES\n");
else
printf("NO\n");
}
}
}
return ;
}
HDU_1175_连连看的更多相关文章
- 传智播客--XAML布局--连连看界面(小白内容)
一个简单的10*10连连看,有100个格子,可以在XAML里面用ColumnDefinition和RowDefinition各写10组,但是这样效率会很慢,因此,可以采用动态生成的方式进行. publ ...
- 连连看游戏(dfs)【华为上机题目】
1 连连看游戏 今天同学给我做了道编程题目,貌似是华为的,题目描述大概是这样的: 给定一个连连看棋盘,棋盘上每个点都有各种图案(用非0数字表示),输入棋盘上的任意两个左标,判断这两个坐标对应的图案是否 ...
- mfc 连连看3.2 修改器
内涵图 连连看3.2下载
- JavaScript写一个连连看的游戏
天天看到别人玩连连看, 表示没有认真玩过, 不就把两个一样的图片连接在一起么, 我自己写一个都可以呢. 使用Javascript写了一个, 托管到github, 在线DEMO地址查看:打开 最终的效果 ...
- 连连看[HDU1175]
连连看 Time Limit: 20000/10000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submi ...
- Android 绿豆蛙版连连看(简陋版)
(里面有六张绿豆蛙的图片) 1.选中会有红色框 2.可以直线连(横竖相邻或是横竖间隔空格) 3.可以拐一次弯连接 4.可以拐两次弯连接 5.连接时会有线显示 6.绿色代表进度条,蓝色代表时间条 imp ...
- HDU 1175 连连看
连连看 Time Limit: 20000/10000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submi ...
- 连连看的设计与实现——四人小组项目(GUI)
项目GUI界面经过简单设计,整理如下:(图片截取致宠物连连看3.1) 点开游戏后界面显示: 点击菜单游戏—>初级 后显示 -------------------------- > 当游戏时 ...
- 连连看的设计与实现——四人小组项目(NABCD)
小组名称:天天向上 成员:王森.张政,张金生,栾骄阳 题目:连连看游戏 NABCD N(需求) 游戏最大的乐趣在于玩法,我们要想在众多的连连看游戏当中脱颖而出,就需要增加更多富有乐趣.吸引用户的玩法. ...
随机推荐
- react组件是怎么来的
组件的创造方法为React.createClass() ——创造一个类,react系统内部设计了一套类系统,利用它来创造react组件.但这并不是必须的,我们还可以用es6的class类来创造组件,这 ...
- 省市县三级联动js代码
省市县三级联动菜单,JS全国省市县(区)联动代码,一般可以用于用户注册或分类信息二手交易网站,需要的朋友直接复制代码就可以用了,不过有朋友反馈说缺少某些城市,具体缺少哪个尚不知,请想用的朋友自己补全吧 ...
- ≪统计学习精要(The Elements of Statistical Learning)≫课堂笔记(三)
照例文章第一段跑题,先附上个段子(转载的哦~): I hate CS people. They don't know linear algebra but want to teach projecti ...
- 有时候当你改动了xib   你调试,各种改的时候又没变化的时候
当你xib 改变了 调试的时候又没变化的时候,当你各种改错无用的时候,就是xcode xib的缓存问题了. please clear xcode . command + shift + K . ...
- Cocos2d-X开发中国象棋《四》设计游戏场景
设计完開始界面后就要设计游戏界面了 为了理清设计思路先看一张游戏界面效果图 游戏界面设计思路: 1.在窗体上放一张桌子 2.在桌子上放一个棋盘 3.在棋盘右边加入新局button,暂不实现详细的功能 ...
- 代理ip 测试
Line #1218 : 101.232.208.245 - - [16/Jan/2018:02:47:34 +0800] "GET /?xltestdesfs HTTP/1.1" ...
- ZOJ 3609 Modular Inverse(扩展欧几里德)
题目链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=4712 The modular modular multiplicat ...
- [Pa2013]Iloczyn
https://www.zybuluo.com/ysner/note/1300802 题面 给定正整数\(n\)和\(k\),问能否将\(n\)分解为\(k\)个不同正整数的乘积. \(n\leq10 ...
- node.js开发错误——DeprecationWarning: Mongoose: mpromise
原文地址 使用mongoose进行数据库操作时,总是提示: (node:5684) DeprecationWarning: Mongoose: mpromise (mongoose's default ...
- J20170616-hm
所以(ゆえん) 理由,原因,来由