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】的更多相关文章

  1. 随手练——DFS小练

    1. 单词接龙 https://www.luogu.org/problemnew/show/P1019 题目描述 单词接龙是一个与我们经常玩的成语接龙相类似的游戏,现在我们已知一组单词,且给定一个开头 ...

  2. 洛谷P1120小木棍[DFS]

    题目描述 乔治有一些同样长的小木棍,他把这些木棍随意砍成几段,直到每段的长都不超过50. 现在,他想把小木棍拼接成原来的样子,但是却忘记了自己开始时有多少根木棍和它们的长度. 给出每段小木棍的长度,编 ...

  3. 何时使用hadoop fs、hadoop dfs与hdfs dfs命令(转)

    hadoop fs:使用面最广,可以操作任何文件系统. hadoop dfs与hdfs dfs:只能操作HDFS文件系统相关(包括与Local FS间的操作),前者已经Deprecated,一般使用后 ...

  4. 何时使用hadoop fs、hadoop dfs与hdfs dfs命令

    hadoop fs:使用面最广,可以操作任何文件系统. hadoop dfs与hdfs dfs:只能操作HDFS文件系统相关(包括与Local FS间的操作),前者已经Deprecated,一般使用后 ...

  5. js 计时器小练-20160601

    今天要做一个计时器小练,所以我就做了练习,代码如下. // 初始化时间,以及定义全局量去接收计时器 var timer = 0; var t; var h, min, sec, millisec; / ...

  6. Hadoop:hadoop fs、hadoop dfs与hdfs dfs命令的区别

    http://blog.csdn.net/pipisorry/article/details/51340838 'Hadoop DFS'和'Hadoop FS'的区别 While exploring ...

  7. hadoop fs、hadoop dfs与hdfs dfs的区别

    不多说,直接上干货! hadoop fs:    使用面最广,可以操作任何文件系统. hadoop dfs与hdfs dfs :   只能操作HDFS文件系统相关(包括与Local FS间的操作),前 ...

  8. Hadoop点滴-何时使用hadoop fs、hadoop dfs与hdfs dfs命令

    何时使用hadoop fs.hadoop dfs与hdfs dfs命令 编辑 删除 hadoop fs:使用面最广,可以操作任何文件系统. hadoop dfs与hdfs dfs:只能操作HDFS文件 ...

  9. hadoop fs、hadoop dfs与hdfs dfs命令的区别

    Hadoop fs:使用面最广,可以操作任何文件系统. hadoop dfs与hdfs dfs:只能操作HDFS文件系统相关(包括与Local FS间的操作),前者已经Deprecated,一般使用后 ...

随机推荐

  1. post 中文数据到elasticsearch restful接口报json_parse_exception 问题

    我们的客户端程序直接调用es 的restful接口, 通过post json数据去查询, 但post数据有中文的时候,有些中文会报异常,有些中文不会 {"error":{" ...

  2. ROS+L2TP+IPSEC

    在WIN7X64,WIN8.1,WIN10,MACBOOK和苹果的IOS10调试L2TP/IPSEC通过 请注意IPSEC,要求客户端IP必须唯一,不可以有重复,那么访问VPN服务器的客户端IP,就不 ...

  3. JAVA的非对称加密算法RSA——加密和解密

    原文转载至:https://www.cnblogs.com/OnlyCT/p/6586856.html 第一部分:RSA算法原理与加密解密 一.RSA加密过程简述 A和B进行加密通信时,B首先要生成一 ...

  4. xshell连不上虚拟机linux的解决办法(用的默认NAT模式)

    1.找到Linux系统的ip地址 输入命令   ifconfig 2.打开本地网络连接 将VMnet1的ip地址设置为和虚拟机ip同一网段的ip 比如虚拟机Linux系统的ip为   192.168. ...

  5. CSS 背景background实例

    css背景background用于设置html标签元素的背景颜色.背景图片已经其他背景属性.本文章向码农介绍CSS 背景background使用方法和基本的使用实例.需要的码农可以参考一下. 一.Cs ...

  6. 如何使32位Win7支持超过4GB的内存,而不装64位

    如何使32位Win7支持超过4GB的内存 让32位系统支持更大的内存超过4G [情况参数:] PC: 联想商用台式机,M4350 RAM: 1600, DDR3 , 2GB OS: Win7 专业版 ...

  7. C# WEB.API 接收并解析保存base64格式的图片

    using System; using System.Collections.Generic; using System.Drawing; using System.IO; using System. ...

  8. RabbitMQ-从基础到实战(4)— 消息的交换(中)

    转自:https://www.cnblogs.com/4----/p/6590459.html 1.简介 本章节和官方教程相似度较高,英文好的可以移步官方教程 在上一章的例子中,我们创建了一个消费者, ...

  9. Linux SWAP 交换分区配置说明(转)

    一.SWAP 说明 1.1 SWAP 概述 当系统的物理内存不够用的时候,就需要将物理内存中的一部分空间释放出来,以供当前运行的程序使用.那些被释放的空间可能来自一些很长时间没有什么操作的程序,这些被 ...

  10. npm 安装cnpm

    npm install -g cnpm --registry=https://registry.npm.taobao.org