c_cpp 子集总和
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c_cpp 子集总和相关的知识,希望对你有一定的参考价值。
#include <iostream>
#include <bits/stdc++.h>
using namespace std;
void subsetSum(int a[], int n, int sum){
bool res[n+1][sum+1];
for(int i=0; i<=n; i++){
for(int j=0; j<=sum; j++){
if(j==0) res[i][j] = true;
else if(i==0) res[i][j] = false;
else res[i][j] = (res[i-1][j] || res[i-1][j-a[i-1]]);
}
}
//cout << res[n][sum]<<endl;
res[n][sum] ? (cout<<"subset exists"<<endl) : (cout<<"subset doesn't exist"<<endl);
if(res[n][sum]){
vector <int> sol;
int i=n, j=sum;
while(i>0 && j>0){
if(res[i-1][j]) i--;
else{
sol.push_back(a[i-1]);
j -= a[i-1];
i--;
}
}
cout << "The subset is" << endl;
for(i=sol.size()-1; i>=0; i--) cout << sol[i] << " ";
}
}
int main(){
int n, sum;
cout << "Enter no. of elements" << endl;
cin >> n;
int a[n];
cout << "enter the elements" << endl;
for(int i=0; i<n; i++) cin >> a[i];
cout << "enter the subset sum" << endl;
cin >> sum;
subsetSum(a,n,sum);
return 0;
}
以上是关于c_cpp 子集总和的主要内容,如果未能解决你的问题,请参考以下文章
为啥我的子集总和方法不正确?
使用动态编程从 Python 上的子集总和问题中获取所有子集
计算 Mat OpenCV 子集的总和
c_cpp 所有子集
打印总和等于 k 的集合的子集
为什么我的子集总和方法不正确?