某商品有2种不同数量的包装,对应不同的价格;同时提供满200元减50元的不限量购物券,试求解最佳购买策略,在单次购买中以最低总价购买正好500个商品。
思路:先计算不同的搭配方法,从中找出价格最低的。折扣是直接从总价里扣,没那么复杂!!!
package test;
import java.util.Scanner;
public class test{
public static void main(String[] args){
Scanner sc=new Scanner(System.in);
int n1,p1,n2,p2,count,end=0x7fffffff,ans=0,tmp=0;
n1=sc.nextInt();
p1=sc.nextInt();
n2=sc.nextInt();
p2=sc.nextInt();
for(int i=0;i<=500/n1;i++){ //第一种包装数有0到500/n1种可能
if((500-i*n1)%n2==0) { //第二种包装数符合实际情况
count=0;
count+=i*p1; //第一种包装总价钱
count+=((500-i*n1)/n2)*p2; //第二种包装总价钱
count-=(count/200)*50; //减去折扣
if(count<end){ //end是最低价格,ans是第一种包装的个数,tmp记录是否有解
end=count;
ans=i;
tmp=1;
}
}
}
if(tmp==1) {
System.out.print(ans+" "+(500-ans*n1)/n2);
}
else {
System.out.print(-1);
}
}
}