51nod 1268 和为K的组合 【dfs or dp】
来源:互联网 发布:截面数据是什么 编辑:程序博客网 时间:2024/06/06 03:16
dfs做法这个dfs写的不错 开始我写的运行结果是错的,这个是某一个大神的,代码很短 ,而且很精炼,值得学习#include<iostream>#include<stdio.h>#include<string>#include<string.h>using namespace std;int flag=0,n;long long a[30];long long m;void dfs(int l,long long sum){ if(sum==m){ flag=1; return ;} else if(sum>m) return ; for(int i=l+1;i<=n&&!flag;i++) dfs(i,sum+a[i]);}int main(){ cin>>n>>m; for(int i=1;i<=n;i++) cin>>a[i]; long long sum=0; dfs(0,0); if(flag) cout<<"Yes"<<endl; else cout<<"No"<<endl; return 0;}dp做法#include<iostream>#include<stdio.h>#include<string>#include<string.h>using namespace std;typedef long long ll;ll num[100],dp[1000000];int main(){ ll k,n; cin>>n>>k; for(int i=0;i<n;i++) cin>>num[i]; memset(dp,0,sizeof(dp)); for(int i=0;i<n;i++) //枚举每一个物品 for(int j=k;j>=num[i];j--) //枚举每一种大小的状态 dp[j]=max(dp[j],dp[j-num[i]]+num[i]); if(dp[k]==k) cout<<"Yes"<<endl; else cout<<"No"<<endl```````````` return 0;}
阅读全文
0 0
- 51nod 1268 和为K的组合 【dfs or dp】
- 51nod 1268 和为K的组合【Dp/Dfs/折半枚举】
- 51nod 1268 和为K的组合 dfs
- 51nod 1268 和为K的组合 -dfs枚举
- 和为K的组合 51Nod
- 51Nod 1268 和为K的组合(搜索/+回溯)
- 51 nod 1268 和为k的组合
- 51nod 1268 和为K的组合
- 51Nod-1268-和为K的组合
- 51nod 1268 和为k的组合
- 51nod-【1268 和为K的组合】
- 51nod 1268 和为K的组合
- 51Nod 1268 和为K的组合
- 51nod 1268 和为K的组合
- 51nod 1268 和为k的组合
- 51nod 1268 和为K的组合
- 51nod oj 1268 和为K的组合【dfs深搜----或二分区间再二分查找】
- 【51Nod】1268 - 和为K的组合(01背包 || bfs)
- 大数据挑战赛——人机验证
- SAP HANA 服务器硬件选型建议
- Mongo运维
- 策略模式
- vue学习第5天,组件
- 51nod 1268 和为K的组合 【dfs or dp】
- 订餐库
- 解释器模式
- 利用矩阵求解最小二乘法
- WEB接口测试之Jmeter接口测试自动化 (三)(数据驱动测试)
- Zookeeper工作原理(详细)
- 时间片选择(java)
- mongo启动报错,解决办法
- CSS学习杂记