華為OJ稱砝碼

2021-07-29 11:15:21 字數 1409 閱讀 9862

問題描述:

現有一組砝碼,重量互不相等,分別為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...