DFS应用
来源:互联网 发布:淘宝折800拼团 编辑:程序博客网 时间:2024/05/19 08:03
深度优先搜索
跟着林总走。
POJ 1979 Red and Black
简单递归,求能走过的可达总点数。
‘.’ - a black tile 可达
‘#’ - a red tile 不可回溯
‘@’ - a man on a black tile(appears exactly once in a data set) 起始点
#include <stdio.h>char wall[21][21];int sum=0,m,n,i,j;char w;void dfs(int a,int b)//挨个函数调用{ if(wall[a][b]=='#')//碰到墙 return; if(a>m-1||a<0&&b>n-1||b<0)//超出边界 return; sum++; wall[a][b]='#';//走过的标记成墙 dfs(a+1,b);//上下左右各扩展一步 dfs(a,b+1); dfs(a-1,b); dfs(a,b-1);}int main(){ int a,b; while(scanf("%d%d",&m,&n),m||n) { for(i=0;i<m;i++) { getchar();//可以利用getchar()函数让程序调试运行结束后等待编程者按下键盘才返回编辑界面 //也可以吃换行符吧 //百度完才理解林总嫌弃的眼神 for(j=0;j<n;j++) { scanf("%c",&w); wall[i][j]=w; if(w=='@')//遇到起始点,开始 { a=i; b=j; } } } dfs(a,b); printf("%d",sum); } return 0;}
HDU 2553 N皇后问题
#include <iostream>#include <stdio.h>#include <math.h>#include <stdlib.h>using namespace std;int sum=0;//计数用int a[22],N;//计算N = 1~21皇后的不同放置数量,然后打表int ans[22];//ans for answerint canplace(int row)//row表示一行row列{ for(int i=0;i<row;i++) { if((abs(row-i)==abs(a[row]-a[i]))||a[row]==a[i])//对角线和列 return 0; else return 1; }}void queen(int row)//row表示第row行{ for(int i=0;i<N;i++)//从头开始 { a[row]=i;//试探当前行的每一个位置 if(canplace(row))//如果这一行的row位置可以放 queen(row+1);//那就下一行 if(row==N) sum++;//到头了,count住一种方法 }}void main(){ int i,m; for(i=0;i<22;i++) { //sum=0; N=i; queen(0); ans[i]=sum; } while(scanf("%d",&N)&&N) printf("%d",ans[N]); //getchar();}
0 0
- DFS应用
- poj 1321 dfs应用
- uva11396 dfs应用
- DFS的简单应用
- DFS及其应用 专题
- DFS的应用
- uva 10765 dfs及其应用
- DFS的时间戳应用
- [c]HDOJ1455 dfs的应用
- 回溯法,DFS的应用
- bfs/dfs的应用--countComponents
- 基础算法之DFS应用
- [ACM]A Knight's Journey DFS应用
- HDU4499 Cannon DFS 回溯的应用
- LA4452 dfs及其应用(2-SAT)
- hdu 5438 Ponds(拓扑应用、DFS)
- DFS应用——查找强分支
- 【LeetCode】77. Combinations,DFS的变形应用
- 教程:在SUSE Linux Enterprise Server 11中安装 : lrzsz
- 学习kubernetes中遇见的一些坑(持续更新)
- [并发并行]_[中级]_[实现Pthread线程并发读写锁rwlock]
- 菜鸡日记002--windows10&deepin双系统安装
- MySQL在线DDL工具pt-online-schema-change
- DFS应用
- iOS10通知(三)--通知的取消和修改
- ffmpeg命令行工具利用libx264和libx265编码YUV文件
- 前端框架Vue(3)—— vue.resource 、axios、ajax 异步通信
- 利用java代码将本地文件打开展示
- keepalived安装配置实战心得(实现高可用保证网络服务不间断)
- Android调用手机图库选择图片并调用手机的图片裁剪工具
- java虚拟机中的垃圾收集器和JVM常用设置参数
- 统计字符