Flip Game 深搜
来源:互联网 发布:sql 父子级联查询 编辑:程序博客网 时间:2024/05/29 11:35
A - Flip Game
POJ - 1753dA - Flip Game
POJ - 1753
1.思路:此题只有四行四列,可用深搜来做。有一个思想误区,在从(0,0)开始遍历后,每路过一个可翻的点时,都有
翻或不翻两个选择,这些不同选择提供了多种不同的方法,(如果数据可以找到)这些方法中一定有正确的,
再将最少的结果输出。(如果数据找不到)输出不可能即可。
2.注意:此题和其他普通的搜索不同的是:一般情况下搜索的方向是走完一个点后去往下一个点的方向,此题的重点不
是该走的方向,而是翻或不翻。
3.第一次写这个代码的时候有一些问题。需要注意的有:
a.每递归一次都要验证一遍是否已得到所得结果,此时的结果最小不能将整个地图遍历完再验证。
b.验证后发现可以就return,去寻找其他方法;
c.当遍历完时,此时进入递归x=4,也要return;
d.输出结果的限制是min<=16。
POJ - 1753
1.思路:此题只有四行四列,可用深搜来做。有一个思想误区,在从(0,0)开始遍历后,每路过一个可翻的点时,都有
翻或不翻两个选择,这些不同选择提供了多种不同的方法,(如果数据可以找到)这些方法中一定有正确的,
再将最少的结果输出。(如果数据找不到)输出不可能即可。
2.注意:此题和其他普通的搜索不同的是:一般情况下搜索的方向是走完一个点后去往下一个点的方向,此题的重点不
是该走的方向,而是翻或不翻。
3.第一次写这个代码的时候有一些问题。需要注意的有:
a.每递归一次都要验证一遍是否已得到所得结果,此时的结果最小不能将整个地图遍历完再验证。
b.验证后发现可以就return,去寻找其他方法;
c.当遍历完时,此时进入递归x=4,也要return;
d.输出结果的限制是min<=16。
代码:
#include<stdio.h>int c[5][2]={0,0,1,0,0,1,-1,0,0,-1},min1;char a[5][5];int sou(){ int i,j; for(i=0;i<4;i++) for(j=0;j<4;j++) if(a[i][j]!=a[0][0]) return 0; return 1;}void turn(int x,int y){ int i; for(i=0;i<5;i++) { int dx=x+c[i][0]; int dy=y+c[i][1]; if(dx<0||dy<0||dx>=4||dy>=4)continue; if(a[dx][dy]=='b') a[dx][dy]='w'; else a[dx][dy]='b'; }}void dfs(int x,int y,int s){ if(sou()) { if(s<min1) min1=s; return; } if(x==4)return ; turn(x,y); if(y==3)dfs(x+1,0,s+1); else dfs(x,y+1,s+1); turn(x,y); if(y==3)dfs(x+1,0,s); else dfs(x,y+1,s);}int main(){ int i; for(i=0;i<4;i++) scanf("%s",a[i]); min1=999; dfs(0,0,0); if(min1<=16)printf("%d\n",min1); else printf("Impossible\n");}
阅读全文
0 0
- Flip Game 深搜
- POJ 1753 Flip Game 深搜
- Flip Game
- Flip Game
- Flip Game
- Flip Game
- Flip Game
- Flip Game
- flip game
- Flip Game
- Flip Game
- FLIP GAME
- Flip Game
- Flip Game
- Flip Game
- Flip Game
- Flip Game
- Flip Game
- Node.js 来构建前端的环境
- oracle 循环insert
- 数据库——触发器
- Java中的main()方法详解
- hbase shell之常用过滤器设置
- Flip Game 深搜
- Tomcat logs 目录下各日志文件的含义
- swift中的手势
- css应用表格排版td中的文本过长,设置不换行,随内容同行显示样式
- 红黑树及其操作
- C_线性表(ADT)-顺序表的表示和实现
- pytorch Batch Normalization批标准化
- HTMl5内置存储sessionStorage和localStorage
- Android关于Service服务