傳送門
題目描述
現有n個砝碼,重量分別為a1,a2,a3,……,an,在去掉m個砝碼後,問最多能稱量出多少不同的重量(不包括0)。
輸入輸出格式
輸入格式:
輸入檔案weight.in的第1行為有兩個整數n和m,用空格分隔
第2行有n個正整數a1,a2,a3,……,an,表示每個砝碼的重量。
輸出格式:
輸出檔案weight.out僅包括1個整數,為最多能稱量出的重量。
輸入輸出樣例
輸入樣例:
3 1
1 2 2
輸出樣例:3說明
【樣例說明】
在去掉乙個重量為2的砝碼後,能稱量出1,2,3共3種重量。
【資料規模】
對於20%的資料,m=0;
對於50%的資料,m≤1;
對於50%的資料,n≤10;
對於100%的資料,n≤20,m≤4,m<n,ai≤100。
沒什麼好說的吧……
先暴搜,然後用揹包統計數量。
#include
#include
#include
bool f[2010];
int n,m,ans;
int a[23];
bool v[23];
int max(int x,int y)
void dp()
ans=max(ans,num);
}void dfs(int yx,int ys)
dfs(yx+1,ys);
v[yx]=false;
dfs(yx+1,ys+1);
v[yx]=true;
}int main()
洛谷P1441 砝碼稱重
現有n個砝碼,重量分別為 aia iai 在去掉 mmm 個砝碼後,問最多能稱量出多少不同的重量 不包括 000 請注意,砝碼只能放在其中一邊。第 111 行為有兩個整數 nnn 和 mmm,用空格分隔。第 222 行有 nnn 個正整數 a1,a2,a3,ana 1,a 2,a 3,ldots a...
洛谷 P1441 砝碼稱重(DFS回溯 DP)
題目大意 已知有n個砝碼,我們從中可以任意去掉m個,問我們最多可以得到多少種不同的重量。解題思路 首先,我們把解題分為兩個思路 首先,我們看任意去掉m個。這個我們可以用dfs模擬,關鍵在於停止條件。我們知道我們每一步都可以選擇新增或者不新增某個砝碼,然後重複n次。這樣我們就有最簡單的遞迴停止條件,遞...
P1441 砝碼稱重 搜尋 dp
你會發現 對於這種很像揹包的dp。不打滾動陣列很有可能錯,因為很多時候可能會忘記保留以前狀態的答案,體現在f i j max f i 1 j f i j 上,因為f i j 可能被f i b i 更新,所以要取max,若想不取max,則必須保證這個狀態只會被更新一次 這題刷錶比填表更好寫,刷表你的初...