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,一般使用后 ...
随机推荐
- eclipse一些操作记录
1.eclipse debug的时候想知道一个表达式执行的结果值,可以选中,按ctrl+shift+i来看返回的结果值: 2.eclipse java build path有个source,将so ...
- 杂项-ORM:LinqToSQL
ylbtech-杂项-ORM:LinqToSQL LINQ TO SQL 是包含在.NET Framework 3.5 版中的一种 O/RM 组件(对象关系映射),O/RM 允许你使用 .NET 的类 ...
- 硬盘安装雨林木风Win7旗舰版系统教程
硬盘安装雨林木风Win7旗舰版系统教程 安装完成,登录后报administrator无权限, F8 进入安全模式,修改administrator的权限.
- wordpress模板里加keywords和description
刚才我说了,wp会弄的话,功能是很强大的,插件很多,基本上你能想到的功能,插件都开发好了的.现在就来说说这个keywords和description的问题.我在网上找了些资料,总结一下,如果有引用到的 ...
- 1031 Hello World for U (20 分)
1031 Hello World for U (20 分) Given any string of N (≥5) characters, you are asked to form the chara ...
- linux中nmcli命令使用及网络配置
nmcli命令与配置文件对应关系 主机名: 如果说你没有设置主机名的话,默认是localhost.localdomain 修改配置文件的主机名 # hostnamectl set-hostname ...
- mdm9x07 ATC AT+QCFG usbnet
1 中文AT命令详解 1.1. AT+QCFG 扩展配置 AT+ QCFG 扩展配置 测试命令 AT+QCFG=? 响应 …… +QCFG: "usbnet" ...
- Spark 编程模型(下)
创建Pair RDD 什么是Pair RDD 创建Pair RDD Pair RDD的转化操作 Pair RDD的转化操作1 在xshell启动 reduceByKey的意思是把相同的key的valu ...
- 谷歌推出新型强化学习框架Dopamine
今日,谷歌发布博客介绍其最新推出的强化学习新框架 Dopamine,该框架基于 TensorFlow,可提供灵活性.稳定性.复现性,以及快速的基准测试. GitHub repo:https://git ...
- [Python] numpy.nonzero
numpy.nonzero(a) Return the indices of the elements that are non-zero. Returns a tuple of arrays, on ...