深度搜索算法
来源:互联网 发布:寻侠兵书突破数据 编辑:程序博客网 时间:2024/06/08 09:25
有分数1/2,1/3,1/4,1/5,1/6,1/8,1/10,1/12,1/15,求将其中若干个分数相加和恰好为1的组成方案,并打印成等式。
例如:
1. 1/2+1/3+1/6=1
2. 。。。。。。
代码:
#include <stdio.h>
static int MAX = 120;
int a[9][2] = {{60,0},{40,0},{30,0},{24,0},{20,0},{15,0},{12,0},{10,0},{8,0}};
void dfs(int sum, int step)
{
if (sum == MAX)
{
bool f = true;
for (int i = 0; i < 9; i++)
{
if (a[i][1] == 1)
{
if (f == false)
{
printf("+");
}
f=false;
printf("1/%d",120/a[i][0]);
}
}
printf("=1\n");
return ;
}
for(int i = step; i < 9; i++)
{
if (sum + a[i][0] <= 120)
{
a[i][1] = 1;
dfs(sum + a[i][0], i + 1);
a[i][1]= 0;
}
}
return ;
}
static int MAX = 120;
int a[9][2] = {{60,0},{40,0},{30,0},{24,0},{20,0},{15,0},{12,0},{10,0},{8,0}};
void dfs(int sum, int step)
{
if (sum == MAX)
{
bool f = true;
for (int i = 0; i < 9; i++)
{
if (a[i][1] == 1)
{
if (f == false)
{
printf("+");
}
f=false;
printf("1/%d",120/a[i][0]);
}
}
printf("=1\n");
return ;
}
for(int i = step; i < 9; i++)
{
if (sum + a[i][0] <= 120)
{
a[i][1] = 1;
dfs(sum + a[i][0], i + 1);
a[i][1]= 0;
}
}
return ;
}
int main()
{
dfs(0, 0);
return 0;
}
{
dfs(0, 0);
return 0;
}
阅读全文
0 0
- 深度优先搜索算法
- 深度优先搜索算法
- 深度优先搜索算法
- 深度优先搜索算法
- 深度优先搜索算法
- 【深度优先搜索算法】
- 深度优先搜索算法
- 深度优先搜索算法
- 深度优先搜索算法
- 算法---深度优先搜索
- 【算法】深度优先搜索
- 深度优先搜索算法
- 深度优先搜索算法
- 深度优先搜索算法
- 算法笔记--深度搜索
- 算法-深度搜索
- 深度搜索算法
- [ 算法 ] 深度优先搜索算法!
- win10配置caffe和tensorflow+faster Rcnn
- Win7系统安装Visual C++ 6.0解决兼容性问题方法
- 基础的 mysql sql 语句,简单篇,拿起就用
- 【视频开发】【计算机视觉】相机标定(Camera calibration)《二》
- MyEclipse:Java was started but returned exit code=-1
- 深度搜索算法
- 编程实现表1(L的输入-输出模式分布),证实表1的正确性
- web测试方法总结
- js判断linux服务器的图片是否存在
- js中的事件委托或是事件代理详解
- 数据结构实验之图论七:驴友计划
- Hadoop中的join
- 手动将经典 VM 从 VHD 迁移到新的 ARM 托管磁盘 VM
- 生成验证码页面 报 java.lang.IllegalStateException: getOutputStream() has already been called 解决办法