多重部分和问题 dfs
来源:互联网 发布:淘宝千人千面收费吗 编辑:程序博客网 时间:2024/06/06 19:49
Description
有n种不同大小的数字,每种各个。判断是否可以从这些数字之中选出若干使它们的和恰好为K。
Input
首先是一个正整数T(1<=T<=100)
接下来是T组数据
每组数据第一行是一个正整数n(1<=n<=100),表示有n种不同大小的数字
第二行是n个不同大小的正整数ai(1<=ai<=100000)
第三行是n个正整数mi(1<=mi<=100000),表示每种数字有mi个
第四行是一个正整数K(1<=K<=100000)
Output
对于每组数据,如果能从这些数字中选出若干使它们的和恰好为K,则输出“Yes”,否则输出“No”,每个输出单独占一行
Sample Input
233 5 83 2 21721 21 14
Sample Output
Yes
No
#include<iostream>#include<string.h>#include<algorithm>using namespace std;int n,k,a[1010][2],flag,v[1010];void dfs(int sum){int i,j;if (flag==1){return ;}if (sum > k){return ;}if (sum == k){flag = 1;return ;}for (i=0; i<n; i++){if (v[i] < a[i][1]){v[i]++;dfs(sum+a[i][0]);v[i]--;}}}int main(){int T,i,j;cin>>T;while (T--){cin>>n;for (i=0; i<n; i++){cin>>a[i][0];}for (i=0; i<n; i++){cin>>a[i][1];}cin>>k;flag = 0;memset(v, 0, sizeof(v));dfs(0);if (flag == 1){cout<<"Yes"<<endl;}else{cout<<"No"<<endl;}}return 0;}
0 0
- 多重部分和问题 dfs
- 多重部分和问题
- 多重部分和问题
- 多重部分和问题
- 多重部分和问题
- 多重部分和问题
- 多重部分和问题
- 多重部分和问题
- 多重部分和问题
- 多重部分和问题
- 多重部分和问题
- DFS 部分和问题
- [DFS]部分和问题
- DFS 部分和问题
- DFS-部分和问题
- 多重部分和问题 DP
- 多重部分和问题 dp
- [dp]多重部分和问题
- Adding DNS addresses into /etc/resolv.conf
- 抽象类与接口学习笔记
- Python语言中的类型之字符串型--Python(11)
- 设计模式详解
- 1.4.ARM裸机第四部分-GPIO和LED
- 多重部分和问题 dfs
- 《软技能-代码之外的生存能力》第四篇——生产力
- Disable Network Manager in Ubuntu
- Github全面详解-13解决文件冲突
- 只有mdf文件和ldf文件,怎么恢复数据库
- 行为型模式: 策略模式
- bzoj 3132 二维树状数组
- 初等爬虫的学习过程1
- Description Resource Path Location Type cvc-complex-type.2.4