dfs小练 【dfs】
1.前n个自然数的所有排列:
#include <iostream>
#include <cstdio>
#include <cstring> using namespace std; int count=,n;
bool *b;
int *a; void dfs(int); int main()
{
scanf("%d",&n);
b=new bool[n+];
a=new int[n+];
memset(b,,n+);//这里不能写sizeof(b),b为变量指针
dfs();
return ;
}
void dfs(int t)
{
for(int i=;i<=n;i++)
{
if(b[i]) continue;
b[i]=;
a[t]=i;
if(t==n)
{
printf("%d ",count++);
for(int j=;j<=n;j++) printf("%d",a[j]);
puts("");
b[i]=;
return;
}
dfs(t+);
b[i]=;
}
}
2.迷宫是否有通路(dfs):
#include <iostream>
#include <cstdio>
#include <cstring> using namespace std; const int N=;
char mi_gong[N][N];
bool b[N][N];
int dx[]={,-,,},dy[]={,,,-};
int n,m,x1,x2,y1,y2;
bool bb; void Create();
bool CanMove(int x,int y);
void Dfs(int x,int y,int step); int main()
{
Create();
Dfs(x1,y1,);
if(bb==) puts("小老鼠出不来,被憋死了。");
return ;
}
void Create()
{
puts("请输入迷宫的行列数以及小老鼠的起点和终点,然后再输入迷宫每个格点,.代表可以走,#代表不可以走。");
scanf("%d%d%d%d%d%d",&n,&m,&x1,&y1,&x2,&y2);
for(int i=;i<=n;i++)
{
getchar();
for(int j=;j<=m;j++)
{
scanf("%c",&mi_gong[i][j]);
}
}
}
bool CanMove(int x,int y)
{
return x>&&x<=n&&y>&&y<=m&&mi_gong[x][y]=='.'&&b[x][y]==;
}
void Dfs(int x,int y,int step)
{
if(bb) return;
if(x==x2&&y==y2)
{
puts("小老鼠可以走出迷宫。");
bb=;
return;
}
int tx,ty;
b[x][y]=;
for(int i=;i<;i++)
{
tx=x+dx[i];
ty=y+dy[i];
if(CanMove(tx,ty)) Dfs(tx,ty,step+);
}
b[x][y]=;
}
3.给出n个正整数a1,a2,a3,...,an,和一个正整数k,问是否能从n个数中选出若干个数,使其和为k:
#include <iostream>
#include <cstdio>
#include <cstring> using namespace std; bool ans;
int n,k,*a,*s;
void dfs(int i,int sum); int main()
{
scanf("%d%d",&n,&k);
a=new int[n];
s=new int[n];
for(int i=;i<n;i++) scanf("%d",&a[i]);
int s0=;
for(int i=n-;i>=;i--) s0+=a[i],s[i]=s0;
dfs(,);
if(ans) cout<<"true";
return ;
}
void dfs(int i,int sum)
{
if(ans||sum>k||sum+s[i]<k) return;
if(i==n)
{
if(sum==k) ans=true;
return;
}
dfs(i+,sum+a[i]);
dfs(i+,sum);
}
dfs小练 【dfs】的更多相关文章
- 随手练——DFS小练
1. 单词接龙 https://www.luogu.org/problemnew/show/P1019 题目描述 单词接龙是一个与我们经常玩的成语接龙相类似的游戏,现在我们已知一组单词,且给定一个开头 ...
- 洛谷P1120小木棍[DFS]
题目描述 乔治有一些同样长的小木棍,他把这些木棍随意砍成几段,直到每段的长都不超过50. 现在,他想把小木棍拼接成原来的样子,但是却忘记了自己开始时有多少根木棍和它们的长度. 给出每段小木棍的长度,编 ...
- 何时使用hadoop fs、hadoop dfs与hdfs dfs命令(转)
hadoop fs:使用面最广,可以操作任何文件系统. hadoop dfs与hdfs dfs:只能操作HDFS文件系统相关(包括与Local FS间的操作),前者已经Deprecated,一般使用后 ...
- 何时使用hadoop fs、hadoop dfs与hdfs dfs命令
hadoop fs:使用面最广,可以操作任何文件系统. hadoop dfs与hdfs dfs:只能操作HDFS文件系统相关(包括与Local FS间的操作),前者已经Deprecated,一般使用后 ...
- js 计时器小练-20160601
今天要做一个计时器小练,所以我就做了练习,代码如下. // 初始化时间,以及定义全局量去接收计时器 var timer = 0; var t; var h, min, sec, millisec; / ...
- Hadoop:hadoop fs、hadoop dfs与hdfs dfs命令的区别
http://blog.csdn.net/pipisorry/article/details/51340838 'Hadoop DFS'和'Hadoop FS'的区别 While exploring ...
- hadoop fs、hadoop dfs与hdfs dfs的区别
不多说,直接上干货! hadoop fs: 使用面最广,可以操作任何文件系统. hadoop dfs与hdfs dfs : 只能操作HDFS文件系统相关(包括与Local FS间的操作),前 ...
- Hadoop点滴-何时使用hadoop fs、hadoop dfs与hdfs dfs命令
何时使用hadoop fs.hadoop dfs与hdfs dfs命令 编辑 删除 hadoop fs:使用面最广,可以操作任何文件系统. hadoop dfs与hdfs dfs:只能操作HDFS文件 ...
- hadoop fs、hadoop dfs与hdfs dfs命令的区别
Hadoop fs:使用面最广,可以操作任何文件系统. hadoop dfs与hdfs dfs:只能操作HDFS文件系统相关(包括与Local FS间的操作),前者已经Deprecated,一般使用后 ...
随机推荐
- 页面引用jquery中文变乱码的问题
<script type="text/javascript" src="Js/JavaScript.js"></script> 方法 ...
- ubuntu14.04 login loop issue
无法进入图形界面的所有问题几乎都碰到了,可惜尝试所有办法,还是各种broken packages 等,无法重装 ubuntu-desktop 成功. 耽误了2天,果断决定重装系统算了..尽管很多软件, ...
- jquery的相关应用
1.jQuery获取鼠标事件源(万能) 1 //任意位置 2 3 $(document).ready(function(){ 4 5 $(document).click(function(){ 6 $ ...
- mongodb 如何区分大小写
mongodb是区分大小写的,在做mongodb数据库操作是经常使用toUpperCase()等方法将value转换为大写存到数据库中 e.g. 在做数据库模糊查询时语句如下 db.COLLECTIO ...
- Solr Web增加Basic安全性验证
Solr在5.0版本后,不再提供war包部署的方式,取而代之的是内置了jetty服务, 但是我们发现其中并没有内置任何安全性相关检查,任何人如果知道了我们的外网地址就能直接访问并修改其中的索引 ...
- Oracle 11g trace events
oracle的events,是我们在做自己的软件系统时可以借鉴的 Oracle 11g trace eventsORA-10001: control file crash event1ORA-1000 ...
- 并发工具类(一)等待多线程的CountDownLatch
前言 JDK中为了处理线程之间的同步问题,除了提供锁机制之外,还提供了几个非常有用的并发工具类:CountDownLatch.CyclicBarrier.Semphore.Exchanger.Ph ...
- html-文本属性
1.文本标记线 text-decoration: 下划线-underline 删除线-line-through 上划线-overline 2.文本大小写 text-transform 默认值none ...
- leetcode242
public class Solution { public bool IsAnagram(string s, string t) { Dictionary<char, int> dic ...
- selector 模块
selector 模块进行自动匹配,当是windows系统时,自动匹配select, linux系统时,自动匹配epoll,传输时会明确告诉内核响应服务器的地址,速度要更快 import select ...