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,一般使用后 ...
随机推荐
- [转]NuGet 包升级
Update-Package 在 NuGet 的命令控制台执行这个就会升级所有 NuGet 包,不带参数. 使用 VS2015 时,插件 Web Extension Pack 2015 和 Web.E ...
- centos 7.5 安装mysql
1.Mysql: 在CentOS中默认安装有MariaDB,这个是MySQL的分支,但为了需要,还是要在系统中安装MySQL,而且安装完成之后可以直接覆盖掉MariaDB. 1.下载并安装MySQL官 ...
- [UE4]事件代理,无输出参数,蓝图中不需要绑定
.h UFUNCTION(BlueprintImplementableEvent, meta=(DisplayName = "LoginSuccess")) void LoginS ...
- td高度不随内容变化display:block;display:block;display:block;display:block;display:block;
在TD里加个DIV就可以解决!CSS对应改成#aaa td div{ height:236px; overflow:hidden; 在TD里加个DIV就可以解决!CSS对应改成#aaa td div{ ...
- eclipse在线安装jd反编译插件
eclipse在线安装jd反编译插件地址 http://jd.benow.ca/jd-eclipse/update
- application/xml 和 text/xml的区别
application/xml and text/xml的区别 经常看到有关xml时提到"application/xml" 和 "text/xml"两种类型, ...
- ie6 双边距问题
div 设置float和margin margin在float方向上会变成设置值的两倍 解决方法,加上css _display:inline
- ftps加密服务器
咱不废话,理论不提,直接上步骤,[linux下的ftps服务器系统搭建步骤如下,按此步骤,即可搭建ftps服务器系统] 1.[安装vsftpd] yum -y install vsftpd 2.[安装 ...
- 在Apache下开启SSI配置
开启SSI:html.shtml页面include网页文件 使用SSI(Server Side Include)的html文件扩展名,SSI(Server Side Include),通常称为&quo ...
- javascript 浮点数加减乘除计算会有问题, 整理了以下代码来规避这个问题
/* * js数学计算 add by yan */ /** ** 加法函数,用来得到精确的加法结果 ** 说明:javascript的加法结果会有误差,在两个浮点数相加的时候会比较明显.这个函数返回较 ...