李聪


私信TA

用户名:uq_77396067382

访问量:6173

签 名:

等  级
排  名 285
经  验 5540
参赛次数 0
文章发表 23
年  龄 0
在职情况 学生
学  校
专  业

  自我简介:

参考代码:

import java.util.Scanner;
public class T2112 {
	public static void main(String[] args) {
		Scanner scanner=new Scanner(System.in);
		int n=scanner.nextInt();//部队数
		int num[]=new int[n];
		for (int i = 0; i < num.length; i++) {
			num[i]=scanner.nextInt();
		}
		int m=scanner.nextInt();//战斗力
		int dp[]=new int[m+1];//每个战斗力的最优解合成次数
		for (int i = 0; i < dp.length; i++) {
			dp[i]=Integer.MAX_VALUE;//设置默认值整型最大数
		}
		for (int i = 0; i < n; i++) {
			if (num[i]<=m) {
				dp[num[i]]=1;//每个部队战斗力自身最优解决方案是1
			}
		}
		for (int i = 1; i <=m; i++) {
			for (int j = 0; j < n; j++) {
				if (i-num[j]>=0&&dp[i-num[j]]!=Integer.MAX_VALUE) { //为默认值Integer.MAX_VALUE则没有合成次数
					dp[i]=Math.min(dp[i], dp[i-num[j]]+1);//比较合成次数
				}
			}
		}
		if (dp[m]==Integer.MAX_VALUE) {//没有合成次数
			System.out.println(-1);
		}
		else {
			System.out.println(dp[m]);
		}
	}
}


 

0.0分

1 人评分

看不懂代码?想转换其他语言的代码? 或者想问其他问题? 试试问问AI编程助手,随时响应你的问题:

编程语言转换

万能编程问答

代码解释器

  评论区