【題目描述】
給定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...