2019燕山大学程序设计新生赛 镜子大师

思路:

** 每次,将三个数中最大的和最小(非零)的数同时减一,减到三个数中有两个为0时,减得次数为存活的天数。**
欢迎大家批评指正

7-4 镜子大师

镜子大师冈特·欧迪姆是一个来自外世界的恶魔,他的寿命跨过了时间的长河,他能肆意地将时间停止,将人的灵魂剥去…
镜子大师似乎无所不能,但事实可能并非如此,镜子大师的力量来自与他人签订的契约,他通过一些障眼法巧妙的把契约中不利于自己的那部分隐藏起来,以此赢得赌注
不幸的Rampage撞到了镜子大师,镜子大师给Rampage下了一个死亡的诅咒;此外,镜子大师还给了Rampage一定数量的三种药草,每天吃下两棵不同种类的药草可以延缓一天诅咒爆发的时间
镜子大师要求Rampage回答出他最多还能活几天,如果答对了,那么镜子大师就会解除诅咒,否则,Rampage只有死路一条了

输入格式:

输入的第一行包含一个正整数 T (T≤10的​3次方​​),代表测试数据的个数 接下来 T 行,每行输入三个正整数
a,b,c(a,b,c≤10的​次方8​​),分别对应三种药草的数量

输出格式:

对应每组测试数据输出一行,输出一个数代表Rampage最长能存活的天数

输入样例:
6
1 1 1
1 2 1
4 1 1
7 4 10
8 1 4
8 2 8

输出样例:

1
2
2
10
5
9

//package Number;   //pta 不提交 包名
import java.util.Scanner;
class data{
	int a,b,c;
}
public class Main {  //pta中这个类 必须叫  Main
	
    public static int max(int a,int b, int c) {
    	if(a>=b&&a>=c) {
    		return a;
    	}
    	else if(b>=a&&b>=c) {
    		return b;
    	}
    	else {
    		return c;
    	}
    }
    public static int min(int a,int b, int c) {
    	if(a<=b&&a<=c) {
    		return a;
    	}
    	else if(b<=a&&b<=c) {
    		return b;
    	}
    	else {
    		return c;
    	}
    }
    public static int mid(int a,int b, int c) {
    	if((a<=b&&a>=c)||(a<=c&&a>=b)) {
    		return a;
    	}
    	else if((b<=a&&b>=c)||(b<=c&&b>=a)) {
    		return b;
    	}
    	else {
    		return c;
    	}
    }
    public static void sort(data d) {
    	int a1,a2,a3;
    	a1=max(d.a ,d.b ,d.c);
    	a2=mid(d.a ,d.b ,d.c);
    	a3=min(d.a ,d.b ,d.c);
    	d.a=a1;d.b=a2;d.c=a3;
    }
    
    public static void main(String[] args) {

    	Scanner scn=new Scanner(System.in);
    	int n=scn.nextInt();
    	int arr[]=new int[n];
    	for(int i=0;i<n;i++) {
    		arr[i]=0;
    	}
    	data d=new data();
    	for(int i=0;i<n;i++) {
    		d.a=scn.nextInt();
    		d.b=scn.nextInt();
    		d.c=scn.nextInt();
    		sort(d);
    		while(d.c>0) {
    			d.a--;
    			d.c--;
    			arr[i]++;
    			sort(d);
    		}
    		arr[i]+=d.b;
    	}
    	scn.close();
    	for(int i=0;i<n;i++) {
    		System.out.println(arr[i]);
    	}
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

码个稀巴烂

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值