題目描述
現有一組砝碼,重量互不相等,分別為m1,m2,m3…mn;
每種砝碼對應的數量為x1,x2,x3...xn。現在要用這些砝碼去稱物體的重量,問能稱出多少中不同的重量。
注:稱重重量包括0
方法原型:public static int fama(int n, int weight, int nums)
輸入描述:
輸入包含多組測試資料。
對於每組測試資料:
第一行:n --- 砝碼數(範圍[1,10])
第二行:m1 m2 m3 ... mn --- 每個砝碼的重量(範圍[1,2000])
第三行:x1 x2 x3 .... xn --- 每個砝碼的數量(範圍[1,6])
輸出描述:
利用給定的砝碼可以稱出的不同的重量數
輸入例子:
21 2
2 1輸出例子:
5解題思路
遞推思想。
以同一重量的砝碼為一組,則輸入是 n 組。遍歷所有組,每一組在已有的組合基礎上累加自己所能組合的重量,最後就能求出總的組合數(重量數)。
注意:1、需要先手動把第 0 組的組合數(重量數)存入容器,否則會因 s.size() == 0 而直接跳出迴圈,輸出 0 。
2、提取容器大小的**應該寫在遍歷該組之前(23行),不能寫在遍歷該組的過程中(25行)。
ac**如下:
#include #include #include using namespace std;
int main()
for(int i = 0; i < n; ++i)
vectors;
for(int j = 0; j <= m[0]; ++j)
for(int i = 1; i < n; ++i)}}
}cout<
稱砝碼問題
有一組砝碼,重量互不相等,分別為m1 m2 m3 mn 它們可取的最大數量分別為x1 x2 x3 xn 現要用這些砝碼去稱物體的重量 問能稱出多少種不同的重量。input 測試資料第一行乙個整數n n 10 表示有多種不同的砝碼 第二行n 個整數 中間用空格分隔 m1 m2 m3 mn 分別表示 n...
華為OJ 稱砝碼
題目描述 現有一組砝碼,重量互不相等,分別為m1,m2,m3 mn 每種砝碼對應的數量為x1,x2,x3 xn。現在要用這些砝碼去稱物體的重量,問能稱出多少中不同的重量。注 稱重重量包括0 方法原型 public static int fama int n,int weight,int nums 輸...
華為OJ稱砝碼
問題描述 現有一組砝碼,重量互不相等,分別為m1 m2 mn 他們可取的最大數量分別為x1 x2 xn。現在要用這些砝碼去稱物體的重量,問能稱出多少中不同的重量。注 稱重重量包括0 要對輸入資料進行校驗 方法原型 public static intfama intn,int weight,int n...