CF 230A.Dragons(Java实现)

CF 230A.Dragons(Java实现)_第1张图片

题目分析

        (桐老爷,泪目)题目讲很多字,其实就是打怪升级,初始战斗力>龙的战斗力就能击败龙并炼化经验增加战斗力,然后打下一条龙,如果打不过了就寄

思路分析

        首先我还是想到键值对,分别存储龙的战斗力和给的经验,一个n条龙,然后循环判断战斗力胜负,如果胜则+战斗力,并挑战下一条,负则结束战斗。但是这里忽略了一个点,题目说的是不限顺序所以需要从小到大的战斗力依次去挑战,因此我在外面套了一个list,用sort函数从小到大依次排列;其次示例中会出现重复的战斗力,因此字典的方式会重复键,导致部分存值失败,我一开始想的是在值里套入list去储存多个值,但是想到同一个战斗力的龙直接一起挑战,即值=旧值+新值,所以我用merge函数直接在存储的时候更新省了不少麻烦

代码

        


import java.util.*;

public class Main {

	public static void main(String[] args)  {
		Scanner sc = new Scanner(System.in);
		int s=sc.nextInt();//初始战斗力
		int n=sc.nextInt();//总共龙的个数
		sc.nextLine();
		HashMap map=new HashMap<>();//龙的战斗力和经验对应
		String re="YES";//初始化答案
		for (int i=0;i> list=new ArrayList<>(map.entrySet());//套list
		list.sort((entry1,entry2)-> entry1.getKey()-entry2.getKey());//list的排序,里面用lambda函数表示从小到大
		for (int i=0;ilist.get(i).getKey()){//战斗力获胜
				s+= list.get(i).getValue();//加战斗力
			}else {
				re="NO";//失败就结束
				break;
			}
		}
		System.out.println(re);
	}
}

        感谢您能够看到这里,一起见证小何同学的算法学习,如果您有不同的见解,希望能得到您的指点和点悟;如果您是和我一样的同学,也希望这篇文章能对您有所帮助。

你可能感兴趣的:(java,开发语言)