Fork me on GitHub

1070milk

总体思路是 先找出每一瓶牛奶的有效天数是多少 例如 500 就是 两天 ,1000 就是 五天 10000有效牛奶量1000 也就是五天
然后判断那个有效天数所对应的价格最低
ps 里面涉及到除法 所以用double保存 除非要取整数部分 就不用

import java.util.Scanner;
public class Main {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		while (sc.hasNext()) 
		{
			int t = sc.nextInt();
			while (t > 0) 
			{
				int num = sc.nextInt();
				String name[] = new String[num];
				int val[][] = new int[num][3];
				double compare [] = new double[num];
				int temp = 0;
				for (int i = 0; i < num; i++) 
				{
					name[temp] = sc.next();
					val[temp][0] = sc.nextInt();// money9
					val[temp][1] = sc.nextInt();// ml
					//值要大于200 才是有效值
					if (val[temp][1] >= 200) 
					{
						//有效天数
						val[temp][2] = val[temp][1] / 200;// day
						if (val[temp][2] >= 6) {
							val[temp][2] = 5;
						}
						compare[temp] = (val[temp][0]*1.0 / val[temp][2]);//compare
						temp++;
					}
				}
//double 类型数之间的比较
				int p = 0;
				double flag = compare[0];
				for (int i = 1; i < temp; i++) 
				{
					if (flag - compare[i] > 1e-6){
						p = i ;
						flag = compare[i];
					}
					else if(compare[i] - flag > 1e-6) {}
					
					else if (Math.abs(flag - compare[i])  <= 1e-6)
					{
						if (val[p][1] < val[i][1]) 
						{
							p = i;
						}
					}
				}
				System.out.println(name[p]);
				t--;
			}
		}
	}
}
posted @ 2019-07-08 11:40  cznczai  阅读(126)  评论(0编辑  收藏  举报