部分和问题(Depth-First-Search):
来源:互联网 发布:劲舞团做图软件 编辑:程序博客网 时间:2024/05/19 02:40
下面列出一个很简单的DFS,如下:
部分和问题(Depth-First-Search):
给定整数a1,a2,.......an,判断是否存在某种组合,使它们的和恰好为K.。
!限制条件
1<=n<=20
-100000000<=ai<=100000000
-100000000<=K<=100000000
输入实例:n=4
a={1,2,4,7}
k=13
输出:YES!
处理这个问题的方法很简单,并且实现方式也可不同,最直接的方式是:在全部N个数都决定后再判断它们的和是不是K即可。判断每一种组合方式(与顺序无关)是否满足和为K的情况,如果是则输出YES!否则输出NO!
下面列出代码简单实现过程:
#include<iostream>
using namesapce std;
const int MAX_N=50; //全局变量,最大处理数据
int a[MAX_N]; //记录输入的a1~an
int n,k;
bool dfs(int i,int sum){ //从第一个下标为0的元素开始
if(i==n) return sum==k; //递归出口
if(dfs(i+1,sum)) //不加a[i]的情况
return true;
if(dfs(i+1,sum+a[i])) //加a[i]
return true;
return false; //当所有情况都遍历后,,则返回假值false
}
void solve(){ //caculate
if(dfs(0,0)) cout<<"YES!" <<endl;
else
cout<<"NO!";
}
int main(){
cin>>n;
cin>>k;
getchar();
for(int i=0;i<n;i++)
cin>>a[i];
solve();
}
用递归的方式将每种加和结果的可能性事件列举判断是否满足和为k,可知组合的状态数为Cn0+Cn1+Cn2+Cn3+…Cnn=2n-1(N∈[1,20]),时间复杂度为0(2n)。该题也可利用如sum=a1+a2+a3+..+an,判断是否存在数x=an=sum-(a1+a2+...an-1)即可。
- 部分和问题(Depth-First-Search):
- SQL:SEARCH DEPTH FIRST和 SEARCH BREADTH FIRST
- DFS(Depth-First-Search)
- POJ2225Asteroids![Depth first search]
- Non recursive Depth first search
- Depth-first-search的总结
- Depth First Search (DFS)入门
- Tree-DFS(Depth-First-Search)
- Recursive Depth first search graph(adj matrix)
- 深度优先搜索(Depth-First-Search)
- Depth-First-Search(DFS伪代码)
- LeetCode之Depth-first Search题目汇总
- 经典dfs(depth-first search)
- Depth First Search (DFS) | Iterative & Recursive Implementation
- Depth-first Search -- Leetcode problem100. Same Tree
- Depth-first Search -- Leetcode problem112. Path Sum
- 深度优先搜索(Depth-First-Search,DFS)
- Depth-first Search -- Leetcode problem394. Decode String
- Qemu中coroutine机制的实现
- mysql函数大全
- Python特殊语法:filter、map、reduce、lambda [转]
- rman对oralce数据进行全备份
- LeetCode Partition List
- 部分和问题(Depth-First-Search):
- Android事件分发机制完全解析,带你从源码的角度彻底理解(上)
- LeetCode OJ Employees Earning More Than Their Managers
- 第五周项目1——深复制体验(3)
- PHP在线编辑器fckeditor应用
- TCP连接建立过程中为什么需要“三次握手”
- PHP封装上传类
- redhad安装gcc问题---解决依赖问题
- UIImageview and UIImage 之Swift学习