子集和的目標值

2022-02-26 14:22:15 字數 861 閱讀 3657

【題目描述】

給定n個整數和目標值t,求某一非空子集使子集的元素的和與目標值之差的絕對值最小,元素可重複。

【輸入描述】

第一行為整數n、t。n為整數個數,t為目標值;

第二行為n個整數ai。

【輸出描述】

乙個整數,為差的最小值的絕對值。

【樣例輸入】

5 91 1 1 4 17

【樣例輸出】

2【資料範圍及提示】

1 <= n <= 101,0 <= ai,t <= 2147484647。

源**:

#include

#include

#include

using

namespace

std;

map

f[102

];int n,t,ans,i[102

];bool flag(0

);void dp(int t,int

sum)

if (sum-t>=ans)

return

;

if(f[t][sum])

return

; f[t][sum]=true

; ans=min(ans,abs(sum-t));

dp(t+1

,sum);

dp(t+1,sum+i[t]);

}int

main()

if (!t&&!ans)

printf("%d

",!flag);

else

printf("%d

",ans);

return0;

}

codevs1692 子集和的目標值

這個題開始想了乙個詭異的dp,水了80分,然後怎麼也沒想到如何存下答案 於是我開啟了題解,被開啟了一扇新世界的大門 用map存dp陣列,666666666,社會社會,太強了 include include include include using namespace std intn long l...

二分查詢 目標值的最小下標和目標值的最大下標

1.我們使用的退出迴圈的條件為l r 2.找到目標值的最小下標,將大於和等於合併成為一種情況 a mid target,答案的下標存在與l 如果只有乙個target值的話,l存的就是唯一target值的下標 3.找到目標值的最大下標,將小於和等於合併成為一種情況 a mid target,答案的下標...

LeetCode之尋找目標值

leetcode第一題 給定乙個整數陣列 nums 和乙個目標值 target,請你在該陣列中找出和為目標值的那 兩個 整數,並返回他們的陣列下標 暴力法 解析 遍歷每個元素 x,並查詢是否存在乙個值與 target x相等的目標元素。如下 暴力匹配 public int twosum int nu...