杭电1175——连连看(DFS)
来源:互联网 发布:越南 社会主义 知乎 编辑:程序博客网 时间:2024/05/13 04:13
原题链接:http://acm.hdu.edu.cn/showproblem.php?pid=1175
# include<stdio.h># include<string.h>int x1,y1,x2,y2,flag,n,m;int dir[4][2]={{-1,0},{1,0},{0,-1},{0,1}};int chess[1005][1005];int visited[1005][1005];void dfs(int x,int y,int lastdir,int turn);int main(){ int i,j,q; while(scanf("%d%d",&n,&m)!=EOF) { if(n==0&&m==0) break; for(i=1;i<=n;i++) { for(j=1;j<=m;j++) { scanf("%d",&chess[i][j]); } } scanf("%d",&q); for(i=1;i<=q;i++) { scanf("%d%d%d%d",&x1,&y1,&x2,&y2); memset(visited,0,sizeof(int)*1005*1005); flag=0; if(chess[x1][y1]!=chess[x2][y2]) printf("NO\n"); else { if((x1==x2&&y1==y2)||chess[x1][y1]==0) { printf("NO\n"); continue; } dfs(x1,y1,-1,0); if(flag==1) printf("YES\n"); else printf("NO\n"); } } } return 0;}void dfs(int x,int y,int lastdir,int turn)//(x,y)表示当前的位置,lastdir表示上次深搜的方向,上下用0表示,左右用1表示//turn表示转折次数{ if(x<=0||x>n||y<=0||y>m) return ; if(turn>2) return ; if(!((x==x1&&y==y1)||(x==x2&&y==y2))&&chess[x][y]) return; if(x==x2&&y==y2&&turn<=2) { flag=1; return ; } int nx,ny,k; for(k=0;k<4;k++) { nx=x+dir[k][0]; ny=y+dir[k][1]; int curdir=k/2; //判断是否还需要在转折一次 if(visited[nx][ny]) continue; visited[nx][ny]=1; if(curdir+lastdir==1)//当前节点和上次节点的扩展,一个纵向(上下扩展),一个横向(左右扩展),出现转折 { dfs(nx,ny,curdir,turn+1); } else { dfs(nx,ny,curdir,turn); } visited[nx][ny]=0; if(flag==1) return ; }}
0 0
- 杭电1175——连连看(DFS)
- hdu 1175 连连看 搜索—dfs
- 杭电 1175 连连看
- HDU 1175—— 连连看( BFS 、DFS)
- 连连看(DFS)
- 杭电 hdu 1175 连连看 测试数据
- 杭电oj 1175连连看
- 杭电1175简单搜索 连连看
- hdu 1175 连连看 (DFS)
- hdu 1175 连连看 (DFS)
- hdu 1175 连连看(DFS)
- hdu 1175 连连看 (简单DFS)
- HDU 1175 连连看(DFS)
- HDU 1175 连连看 (DFS + 剪枝)
- HDOJ 1175 连连看 (DFS)
- HDU 1175 连连看(DFS)
- HDOJ 1175连连看 (DFS)
- hdu 1175 连连看(DFS)
- Angular JS中scope的作用域
- Lua 编程: 如何给文件写入二进制数据
- Windows命令行视频教程-01-简介命令提示符
- 高精度模板总结(string 实现加、减、乘、除)常用版
- [Scala函数特性系列]——作为值的函数和借贷模式
- 杭电1175——连连看(DFS)
- 28. Implement strStr()
- 【慕课笔记】第四章 JAVA中的集合框架(上) 第1节 JAVA中的集合框架概述
- 入门训练 A+B问题
- 何为Java引用
- POJ 3601-Subsequence【尺取法】
- POJ 2288 Islands and Bridge 状压DP
- i2s_s3c_irq_nextbyte
- 蓝桥杯 算法训练 最大最小公倍数