c++の組み合わせ
1208 ワード
コンポジット
タイトルの説明
既知の1次元配列a 1..n、整数mも知られている.配列a中の任意の幾つかの要素の和をmに等しくすることができれば、YESを出力し、逆にNOとする.
入力
入力は2つの行を含み、第1の行は2つの整数n m(1<=n<20,1<=m<=1000000)を含み、第2の行はn個の整数を入力する(各数は1000000を超えない).
しゅつりょく
配列a中の任意の幾つかの要素の和をmに等しくすることができれば、YESを出力し、逆にNOとする.
サンプル入力
サンプル出力
ヒント
(None)
コード+コメント
転載先:https://www.cnblogs.com/LJA001162/p/11032241.html
タイトルの説明
既知の1次元配列a 1..n、整数mも知られている.配列a中の任意の幾つかの要素の和をmに等しくすることができれば、YESを出力し、逆にNOとする.
入力
入力は2つの行を含み、第1の行は2つの整数n m(1<=n<20,1<=m<=1000000)を含み、第2の行はn個の整数を入力する(各数は1000000を超えない).
しゅつりょく
配列a中の任意の幾つかの要素の和をmに等しくすることができれば、YESを出力し、逆にNOとする.
サンプル入力
6 5
2 3 1 4 2 1
サンプル出力
YES
ヒント
(None)
コード+コメント
#include
using namespace std;
int nums[101];
int n; //
int m; // n m
bool flag;
void sum(int n,int m) // m
{
if(nums[n] == m) flag = true; // m, flag true
else if(n == 1) return ; //
else
{
sum(n - 1,m - nums[n]); // nums[n]
sum(n - 1,m); // nums[n]
}
}
int main()
{
cin >> n;
for(int i = 1;i <= n;i ++)
{
cin >> nums[i];
}
cin >> m;
flag = false; // , flag false, m sum flag
sum(n,m);
if(flag)
cout << "Yes" << endl;
else
cout << "No" << endl;
return 0;
}
転載先:https://www.cnblogs.com/LJA001162/p/11032241.html