洛谷 P1441 砝碼稱重(深搜 DP)

2021-08-18 08:57:45 字數 961 閱讀 7939

傳送門

題目描述

現有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,則必須保證這個狀態只會被更新一次 這題刷錶比填表更好寫,刷表你的初...