問題描述
從乙個大小為n的整數集中選取一些元素,使得它們的和等於給定的值t。每個元素限選一次,不能乙個都不選。
輸入格式
第一行乙個正整數n,表示整數集內元素的個數。
第二行n個整數,用空格隔開。
第三行乙個整數t,表示要達到的和。
輸出格式
輸出有若干行,每行輸出一組解,即所選取的數字,按照輸入中的順序排列。
若有多組解,優先輸出不包含第n個整數的;若都包含或都不包含,優先輸出不包含第n-1個整數的,依次類推。
最後一行輸出總方案數。
樣例輸入
5-7 -3 -2 5 9
0樣例輸出
-3 -2 5
-7 -2 9
2資料規模和約定
1<=n<=22
t<=maxlongint
集合中任意元素的和都不超過long的範圍
221 -1 2 -2 4 -4 8 -8 16 -16 32 -32 64 -64 128 -128 256 -512 512 -1024 -256 1024
0這個例子過不去 只算了2046個 答案有2047個。
感覺沒寫全 就是 若都包含或都不包含,優先輸出不包含第n-1個整數的 這句話沒寫出來
#include#include#include#include#include using namespace std;
int n,t,a[25],b[25]=,y[25]=,cnt=0 , k=0;;
void dfs(long long x,long long s,long long pos)
; for(int i=0; isign[i] = y[i];
}cout << cnt << endl;
return 0;
}
演算法訓練 和為T
問題描述 從乙個大小為n的整數集中選取一些元素,使得它們的和等於給定的值t。每個元素限選一次,不能乙個都不選。輸入格式 第一行乙個正整數n,表示整數集內元素的個數。第二行n個整數,用空格隔開。第三行乙個整數t,表示要達到的和。輸出格式 輸出有若干行,每行輸出一組解,即所選取的數字,按照輸入中的順序排...
演算法訓練 和為T
問題描述 從乙個大小為n的整數集中選取一些元素,使得它們的和等於給定的值t。每個元素限選一次,不能乙個都不選。輸入格式 第一行乙個正整數n,表示整數集內元素的個數。第二行n個整數,用空格隔開。第三行乙個整數t,表示要達到的和。輸出格式 輸出有若干行,每行輸出一組解,即所選取的數字,按照輸入中的順序排...
演算法訓練 和為T
題目鏈結 問題描述 從乙個大小為n的整數集中選取一些元素,使得它們的和等於給定的值t。每個元素限選一次,不能乙個都不選。include using namespace std long long a 25 select 22 cnt,res,n void solve int cur,long lon...