博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
poj2488旧题重做标准DFS
阅读量:6412 次
发布时间:2019-06-23

本文共 1279 字,大约阅读时间需要 4 分钟。

注意:字典序。

其他没什么的了,主要是重新熟悉一下DFS的过程。。。久了就忘了。

#include
#include
using namespace std;bool vis[25][25];bool flag=0;int p,q;int dx[8] = {-2, -2, -1, -1, 1, 1, 2, 2};int dy[8] = {-1, 1, -2, 2, -2, 2, -1, 1}; // 字典序。char path[50];void DFS(int depth,int x,int y){ if(depth==p*q) //DFS首先是结束条件 { flag=true; return ; } for(int i=0;i<8&&flag==false;i++) //然后直接对每一步情况进行分析,这里flag算一个剪枝 { int new_x=x+dx[i]; int new_y=y+dy[i]; //限制条件 if(new_x > 0 && new_y > 0 && new_x <= q && new_y <= p && vis[new_y][new_x] == false) {//操作 vis[new_y][new_x]=true; path[2*depth]=new_x+'A'-1; path[2*depth+1]=new_y+'1'-1; //递归 DFS(depth+1,new_x,new_y); vis[new_y][new_x]=false; } }}void Init(){ for(int y = 1; y <= p; y ++) for(int x = 1; x <= q; x ++) vis[y][x] = false; flag=false; vis[1][1]=true; path[0]='A'; path[1]='1';}int main(){ int T,t; cin>>T; t=1; while(t<=T) { cin>>p>>q; Init(); DFS(1,1,1); if(flag) { cout<<"Scenario #"<
<<':'<

 

转载于:https://www.cnblogs.com/amourjun/archive/2013/03/26/5134215.html

你可能感兴趣的文章
一些常用的网络命令
查看>>
CSP -- 运营商内容劫持(广告)的终结者
查看>>
DIV+CSS命名规范有助于SEO
查看>>
Spring事务
查看>>
spring-data jpa自定义dao
查看>>
Sigar之python的基本使用
查看>>
js生成二维码
查看>>
禁止输入法联想输入表情
查看>>
VMware网卡设置
查看>>
jq 写方法,尽量使用绑定 事件的方式
查看>>
怎样使wordpress主题显示不同的侧栏?
查看>>
C指针练习
查看>>
web项目buildPath与lib的区别
查看>>
php对redis的set(集合)操作
查看>>
我的友情链接
查看>>
ifconfig:command not found的解决方法
查看>>
js使用正则表达式判断手机和固话格式
查看>>
计算机是怎么存储数字的
查看>>
github精选:微信小程序开发技巧(12月31日更新)2016
查看>>
struts2 中文 url参数
查看>>