HJ41 称砝码
描述
现有一组砝码,重量互不相等,分别为 m1,m2,m3…mn ;
每种砝码对应的数量为 x1,x2,x3...xn 。现在要用这些砝码去称物体的重量(放在同一侧),问能称出多少种不同的重量。
注:
称重重量包括 0
数据范围:每组输入数据满足 1 \le n \le 10 \1≤n≤10 , 1 \le m_i \le 2000 \1≤mi≤2000 , 1 \le x_i \le 10 \1≤xi≤10
输入描述:
对于每组测试数据:
第一行:n --- 砝码的种数(范围[1,10])
第二行:m1 m2 m3 ... mn --- 每种砝码的重量(范围[1,2000])
第三行:x1 x2 x3 .... xn --- 每种砝码对应的数量(范围[1,10])
第一行:n --- 砝码的种数(范围[1,10])
第二行:m1 m2 m3 ... mn --- 每种砝码的重量(范围[1,2000])
第三行:x1 x2 x3 .... xn --- 每种砝码对应的数量(范围[1,10])
输出描述:
利用给定的砝码可以称出的不同的重量数
示例1
输入:
2 1 2 2 1
输出:
5
import java.io.*; import java.util.*; public class Main{ public static void main(String[] args) throws IOException { Scanner sc = new Scanner(System.in); while(sc.hasNext()) { int zhonglei = sc.nextInt(); //砝码重量 int[] weight = new int[zhonglei]; for(int i=0;i<zhonglei;i++) { weight[i] = sc.nextInt(); } int[] shuliang = new int[zhonglei]; for(int i =0;i<zhonglei;i++) { shuliang[i] = sc.nextInt(); } HashSet<Integer> set = new HashSet<>(); //存放重量 set.add(0); for(int i=0;i<zhonglei;i++){//遍历砝码 ArrayList<Integer> list = new ArrayList<>(set);//取当前所有的结果 for(int j=1;j<=shuliang[i];j++){//遍历个数 for(int k=0;k<list.size();k++){ set.add(list.get(k) + weight[i] * j); //砝码重量x个数:等于重量 } } } System.out.println(set.size()); } } }
分类:
Java
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix