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,一般使用后 ...
随机推荐
- red hat官方的rhel操作系统版本号与内核版本号的对应关系
原文在如下网址:https://access.redhat.com/articles/3078 The tables below list the major and minor Red Hat En ...
- 洛谷 P2054 [AHOI2005]洗牌
题目描述 为了表彰小联为Samuel星球的探险所做出的贡献,小联被邀请参加Samuel星球近距离载人探险活动. 由于Samuel星球相当遥远,科学家们要在飞船中度过相当长的一段时间,小联提议用扑克牌打 ...
- xss总结漏洞篇
Xss漏洞 Xss漏洞出现在1996年.Xss漏洞又名跨站脚本漏洞 Xss可能造成的危害 网站弹框(刷流量) 网站挂马 会话劫持 Cookie被盗取 用户提权 账号被盗 尽量DDOS 蠕虫攻击 Xss ...
- 本地git仓库常用操作
SSH配置: 本机创建SSH key $ ssh-keygen -t rsa -C "youremail@example.com" 将SSHkey添加到git仓库:id_rsa.p ...
- ganglia
A.lamp界面快速搭建---------------------------------------------------------------------------------------- ...
- ucenter 认证登录
1==>new RegisterBase($email, $password, $repassword, $client_id, $client_secret, $is_from) 1.1 ...
- springboot sybase 数据库
依赖:(驱动) <!-- https://mvnrepository.com/artifact/net.sourceforge.jtds/jtds --> <dependency&g ...
- HTML5 Canvas ( 事件交互, 点击事件为例 ) isPointInPath
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...
- 线程安全计算 AtomicLong
一般如果我们自己写一个计数器方法,需要考虑线程安全问题,尤其高并发访问的时候. AtomicLong 已处理并发问题,直接使用.java.util.concurrent.atomic包提供多种线程安全 ...
- 13 python 常用的内置方法介绍
1.isinstance(obj,cls)和issubclass(sub,super) isinstance(obj,cls)检查是否obj是否是类 cls 的对象 class Foo(object) ...