完美世界两道编程题


import java.util.Scanner;
//0-1背包 public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int M = sc.nextInt(); int w[] = new int[M]; int p[] = new int[M]; for (int i = 0; i < M; i ) p[i] = sc.nextInt(); for (int i = 0; i < M; i ) w[i] = sc.nextInt(); int t = sc.nextInt(); int dp[][] = new int[M 1][t 1]; for (int i = 1; i < M 1; i ) for (int j = 1; j < t 1; j ) { if (j >= w[i-1]) { if (dp[i - 1][j] < dp[i - 1][j - w[i - 1]] p[i - 1]) dp[i][j] = dp[i - 1][j - w[i - 1]] p[i - 1]; else dp[i][j] = dp[i - 1][j]; } else dp[i][j] = dp[i - 1][j]; } System.out.println(dp[M][t]); } }
import java.util.Scanner;
//硬币找零
public class Main {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		String str = sc.next();
		int w = sc.nextInt();
		String[] strs = str.split(",");
		int n = strs.length;
		int[] p = new int[n];
		int d[] = new int[w   1];
		for (int i = 0; i < n; i  )
			p[i] = Integer.valueOf(strs[i]);
		int temp = 0;
		for (int i = 1; i <= w; i  ) {
			int min = i;
			for (int j = 0; j < n; j  ) {
				if (i >= p[j])
					temp = d[i - p[j]]   1;
				min = temp;
			}
			d[i] = min;
			temp=0;
		}
		if (d[w] == 0)
			System.out.println(-1);
		else
			System.out.print(d[w]);
	}
}

全部评论
楼主第二道好像错了
点赞 回复 分享
发布于 2017-03-30 10:26
我第二题不知道为什么。感觉数据读不进来。所以好伤心
点赞 回复 分享
发布于 2017-03-30 10:51

相关推荐

02-03 12:20
门头沟学院 Java
一天代码十万三:你这个简历东西太杂了,根本看不出你想投什么岗位
点赞 评论 收藏
分享
程序员小白条:找实习多投就行,但25届现在是春招时间呃呃呃,你想以后参加社招吗
点赞 评论 收藏
分享
评论
点赞
9
分享

创作者周榜

更多
牛客网
牛客企业服务