算法Java(完全背包问题):
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
int c = sc.nextInt();
int w[] = new int[n];
double m[] = new double[n];
double v[] = new double[n];
double max = 0;
int ww = 0;
for (int i = 0; i < n; i++) {
w[i] = sc.nextInt();
}
for (int i = 0; i < n; i++) {
m[i] = sc.nextInt();
v[i] = m[i]/w[i];
}
loop:for (int i = 0; i < n; i++) {
for (int j = i+1; j < n; j++) {
if(v[i]<v[j]) {
double temp = v[i];
v[i] = v[j];
v[j] = temp;
int temp2 = w[i];
w[i] = w[j];
w[j] = temp2;
double temp3 = m[i];
m[i] = m[j];
m[j] = temp3;
}
}
if(ww+w[i] >= c) {
max = max + (c-ww)*v[i];
break loop;
}else {
max = max + m[i];
ww = ww + w[i];
}
}
System.out.println(String.format("%.2f", max));
}
}