問題描述:
現有一組砝碼,重量互不相等,分別為m1、m2……mn;他們可取的最大數量分別為x1、x2……xn。現在要用這些砝碼去稱物體的重量,問能稱出多少中不同的重量。輸入:注:稱重重量包括0
要對輸入資料進行校驗
方法原型:public
static
intfama(
intn,
int weight,
int nums)
nt n:n表示有多少組重量不同的砝碼,1<=n<=10<><=n<=10<><=n<=10<><=n<=10<><=n<=10<><=n<=10<><=n<=10<><=n<=10<>
int weight:表示n組砝碼的重量,1<=mi<=10<><=mi<=10<><=mi<=10<><=mi<=10<><=mi<=10<><=mi<=10<><=mi<=10<><=mi<=10<>
int num:表示n組砝碼的最大數量,1<=xi<=10<><=xi<=10<><=xi<=10<><=xi<=10<><=xi<=10<><=xi<=10<><=xi<=10<><=xi<=10<>
輸出:
利用給定的砝碼可以稱出的不同的重量數
樣例輸入:
2 1 2 2 1
樣例輸出:
5動態規劃方法求解
設dp[1000]陣列為標記陣列。當dp[i]=0時,表示質量為i的情況,目前沒有稱出;當dp[i]=1時,表示質量為i的情況已經稱出。
本題目中有多個砝碼,我們順序處理每乙個砝碼。
當處理第j個砝碼,質量為wj時,有下列推導公式:
完整程式**如下:
#include using namespace std;
static int fama(int n, int weight, int nums)
; dp[0] = 1;
int sum = 0;
for (int i = 1; i <= n; i++)
for (int i = 1; i <= n; i++)
}} int count = 0;
for (int i = 1; i <= sum; i++)
return count+1;
}int main(void)
for (int i = 1; i <= n; i++)
cout << fama(n, weight, nums);
deleteweight;
deletenums;
return 0;
}
華為OJ 稱砝碼
題目描述 現有一組砝碼,重量互不相等,分別為m1,m2,m3 mn 每種砝碼對應的數量為x1,x2,x3 xn。現在要用這些砝碼去稱物體的重量,問能稱出多少中不同的重量。注 稱重重量包括0 方法原型 public static int fama int n,int weight,int nums 輸...
華為機試 稱砝碼
現有一組砝碼,重量互不相等,分別為m1,m2,m3 mn 每種砝碼對應的數量為x1,x2,x3.xn。現在要用這些砝碼去稱物體的重量,問能稱出多少中不同的重量。注 稱重重量包括0 方法原型 public static intfama intn,int weight,int nums 輸入包含多組測試...
華為機試 稱砝碼 矩陣乘法
1.稱砝碼 題目描述 現有一組砝碼,重量互不相等,分別為m1,m2,m3 mn 每種砝碼對應的數量為x1,x2,x3.xn。現在要用這些砝碼去稱物體的重量,問能稱出多少中不同的重量。注 稱重重量包括0 方法原型 public static intfama intn,int weight,int nu...