给定一个整数数组和一个整数 k,你需要找到该数组中和为 k 的子数组。如果存在该子数组返回true,否则返回false。
#include <iostream>
#include <vector>
using namespace std;
int main() {
std::cout << "Hello, World!" << std::endl;
int m = 30;
int s = 34;
int arr[m];
vector<vector<bool>> subset(m,vector<int>(s+1,false));
for(int i=0;i<=m;i++){
subset[i][0]= true;
}
subset[0][arr[0]]= true;
for(int i=1;i<=m;i++){
for(int j=1;j<=s;j++){
if(j<arr[i]){
subset[i][j] =subset[i-1][j];
}else{
bool a= subset[i-1][j-arr[i]];
bool b=subset[i-1][j];
if(a || b){
subset[i][j] = true;
}else{
subset[i][j] = false;
}
}
}
}
cout<<subset[m][s]<<endl;
return 0;
}