DFS
来源:互联网 发布:大数据职位 编辑:程序博客网 时间:2024/05/21 17:17
DFS实质就是一种枚举,不过借助递归实现;
DFS的基本模式:
void dfs(int step)
{
判断边界;
for(int i=1;i<=n;++i)//尝试每一种可能;
{
dfs(step+1);/‘/继续下一步
}
返回;
}
例题:
问题描述:
现有等式:【】【】【】+【】【】【】=【】【】【】,要求在每一个【】中填入0~9中某一个数字,最后使得等式成立且每个数字使用一次,输出等式,并输出总个数;例如782+154=936,154+782=936只计数一次,但输出时都输出;
基本思路:
对每一个【】进行深搜;
代码如下:
#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <algorithm>
using namespace std;
int a[10],book[10];
int total;
void dfs(int step)
{
if(step==10)
{
if(a[1]*100+a[2]*10+a[3]+a[4]*100+a[5]*10+a[6]==a[7]*100+a[8]*10+a[9])
{
for(int i=1;i<=9;i++)
{
printf("%d",a[i]);
if(i==3) printf("+");
else if(i==6) printf("=");
}
printf("\n");
total++;
}
}
for(int i=1;i<=9;i++)//可以体现枚举;
{
if(book[i]==0)
{
a[step]=i;
book[i]=1;
dfs(step+1);//对下一个【】进行深搜;
book[i]=0;//恢复;
}
}
return;
}
int main()
{
dfs(1);
printf("%d\n",total/2);
return 0;
}
- DFS
- DFS
- dfs
- dfs
- dfs
- dfs
- DFS
- DFS
- dfs
- DFS
- DFS
- DFS
- dfs
- DFS
- dfs
- dfs
- dfs
- dfs
- php-fpm注册成服务 service
- LeetCode之Nim Game
- oracle 11g首次装好后出现 ORA-01017 invalid username/password;logon denied;
- 线性代数 学习记录
- 初识java正则表达式
- DFS
- LeetCode 210. Course Schedule II
- MySQL InnoDB引擎 MVCC并发控制
- Google Photos 会自动修正照片的白平衡了
- java基础学习(七)多态
- python django 集成已有的数据库
- 堆排序
- 蟠桃记
- 工具类的编写方式