赈灾救济粮采购

赈灾救济粮采购

题目描述

某年某月某日某地发生了洪涝灾害,政府为了解决灾民的生活问题,在第一时间下拨了一定数量的救灾经费用于去市场采购大米(散装)再分发给灾民。如果市场上有m家店出售大米,每家店大米的单价和重量已知,请问,为了满足更多灾民的需求,最多能采购多少重量的大米呢? 要求程序中先定义一个类Store表示米店,里面有price和weight两个成员变量分别表示店内大米的单价和总量;还要求该Store类实现了系统提供的接口Comparable(具体可查询JDK的API文档),重写接口中的比较方法,使得米店的自然顺序是按大米的 单价从低到高的顺序。用数组来保存m家米店的信息,并用Arrays.sort()对这些米店按单价排序,然后按单价从低到高的顺序在各家店中采购大米。
 
输入描述

输入数据首先包含一个正整数c,表示有c组测试用例,每组测试用例的第一行是两个整数n和m(0
 
输出描述

对于每组测试数据,请输出能够购买大米的最多重量。 每个实例的输出占一行,保留2位小数。
 
输入样例

1 7 2 3 3 4 4
 
输出样例

2.33

import java.util.*;
class store
{
	int n;
	int m;
}
class mycmp implements Comparator
{
	public int compare(store a,store b)
	{
		return a.n-b.n;
	}
}
public class Main {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		int x,y,n,m,i,j;
		Scanner in=new Scanner(System.in);
		store [] a=new store[1000];
		x=in.nextInt();
		while(x>0)
		{
			n=in.nextInt();
			m=in.nextInt();
			for(i=0;i=a[i].n&&a[i].m>0)
				{
					n-=a[i].n;
					sum++;
					a[i].m--;
				}
				if(n<=0)
					break;
				if(a[i].m<=0)
					continue;
				if(n>0&&n0)
				{
					sum+=n*(1.0/a[i].n);
					n=0;
				}
			}
			System.out.printf("%.2f\n", sum);
			x--;
		}
	}
}


你可能感兴趣的:(java)