• 刷题之小蓝吃糖果和你究竟有几个好姐妹


    目录

    1、小蓝吃糖果

    1)题目

     2)题目解读

    3)代码

     2你究竟有几个好姐妹

    1)题目

    2)题目解读 

     3)代码


    1、小蓝吃糖果

    1)题目

    小蓝有 n 种糖果,每种数量已知。

    小蓝不喜欢连续 2 次吃同样的糖果。问有没有可行的吃糖方案。

    输入格式:

    第一行是整数 n(0

    第二行包含 n 个数,表示 n 种糖果的数量 mi,0

    输出格式:

    输出一行,包含一个 Yes 或No。

    输入样例:

    在这里给出一组输入。例如:

    1. 3
    2. 4 1 1

    输出样例:

    在这里给出相应的输出。例如:

    No
    

     2)题目解读

    题目要求我们在第一行输入n个数,表示有n种糖果,然后在第二行输入n个数,分别表示这n种糖果的数量。然后这n种糖果不可以连续 2 次吃同样的糖果,问有没有可行的方法把所有糖果全部吃完的方法。我们可以很简单的知道数量最多的糖果最难吃完,因为吃完它需要很多其他糖果的帮助,不然就连续2次吃了相同的糖果,就不符合题意了。所有得出

    除去数量最多的糖果总和>=最多糖果的数量 即可

    3)代码

    1. import java.util.Scanner;
    2. public class Main {
    3. public static void main(String[] args) {
    4. Scanner sc=new Scanner(System.in);
    5. int n=sc.nextInt();
    6. int[] arr=new int[n];
    7. long sum=0;
    8. for (int i=0;i
    9. arr[i]=sc.nextInt();
    10. }
    11. Arrays.sort(arr);
    12. for (int i=0;i1;i++){
    13. sum+=arr[i];
    14. }
    15. if (sum>=arr[n-1]){
    16. System.out.println("Yes");
    17. }else {
    18. System.out.println("No");
    19. }
    20. }}

     2你究竟有几个好姐妹

    1)题目

    小李的QQ列表里有很多联系人,他修改了所有人的备注姓名。其中有些联系人名字的前部或后部被加了诸如"好妹妹"的字样。请你打印出小李的所有的女性"好妹妹"。打印时请按照联系人原始名字升序排列,如果两人名字相同则年龄小的排在前面;如果两人年龄相同,则较早成为好友的排在前面。题目保证好妹妹标志不会同时出现在前缀和后缀,同一天里也不会添加名字相同并且年龄相同的"好妹妹"。

    输入格式:

    第一行给出标识好妹妹标志的字符串,该字符串内不包含空格,最大长度为6并且不区分大小写。第二行给出QQ列表的所有联系人个数n (1≤ n ≤105),随后n行列出所有联系人信息,每行信息格式如下:

    备注姓名 性别 年龄 结交好友日期

    其中备注姓名不超过30个字符;性别用字符表示,F表示女性,M代表男性;结交好友日期采用诸如"2001.01.01"的格式表示。

    输出格式:

    第一行输出好妹妹的数目k,随后k行打印出去掉好妹妹标志的名字、年龄以及结交好友日期。

    输入样例:

    1. hmm
    2. 10
    3. Zoehmm F 28 2001.01.01
    4. hmmBeith F 18 2010.10.21
    5. Zack M 35 1999.09.18
    6. hmmAdam F 21 2010.10.21
    7. Beithhmm F 21 2010.10.21
    8. Chelse F 45 2005.12.03
    9. DaisyHMM F 30 2008.08.05
    10. Eston M 18 2015.03.04
    11. hmmFrany F 8 2018.07.15
    12. JackHM F 7 2017.09.11

    输出样例:

    输出:

    1. 6
    2. Adam 21 2010.10.21
    3. Beith 18 2010.10.21
    4. Beith 21 2010.10.21
    5. Daisy 30 2008.08.05
    6. Frany 8 2018.07.15
    7. Zoe 28 2001.01.01

    2)题目解读 

    题目要求我们找出有好妹妹的标记的人,并且打印时 按照联系人原始名字升序排列,如果两人名字相同则年龄小的排在前面;如果两人年龄相同,则较早成为好友的排在前面。并且要注意题目保证好妹妹标志不会同时出现在前缀和后缀,同一天里也不会添加名字相同并且年龄相同的"好妹妹"。

    好妹妹标志的字符串,不区分大小写。

     3)代码

    1. import java.io.BufferedReader;
    2. import java.io.IOException;
    3. import java.io.InputStreamReader;
    4. import java.util.Arrays;
    5. import java.util.Comparator;
    6. //创建一个类来存储输入的数据
    7. class Friend {
    8. String name;
    9. int age;
    10. String year;
    11. String month;
    12. String day;
    13. public Friend(String n,int a,String y,String m,String d){
    14. name = n;
    15. age = a;
    16. year = y;
    17. month = m;
    18. day = d;
    19. }
    20. @Override
    21. //重写toString方法,方便后面结果的输出
    22. public String toString(){
    23. return name+" "+age+" "+year+"."+month+"."+day;
    24. }
    25. }
    26. //创建Friend_cmp类并实现Comparator接口,去重写compare方法,
    27. //后面使用sort方法以便可以传递一个比较器,去进行排序
    28. class Friend_cmp implements Comparator{
    29. public int compare(Friend o1, Friend o2) {
    30. //1、先进行姓名比较
    31. if(o1.name.equals(o2.name)){
    32. //2、再进行年龄比较
    33. if(o1.age==o2.age){
    34. //3、最后进行认识时间的比较
    35. if(o1.year.equals(o2.year)){
    36. if(o1.month.equals(o2.month)){
    37. int day1 = Integer.parseInt(o1.day);
    38. int day2 = Integer.parseInt(o2.day);
    39. return day1-day2;
    40. }else{
    41. int month1 = Integer.parseInt(o1.month);
    42. int month2 = Integer.parseInt(o2.month);
    43. return month1-month2;
    44. }
    45. }else{
    46. int year1 = Integer.parseInt(o1.year);
    47. int year2 = Integer.parseInt(o2.year);
    48. return year1-year2;
    49. }
    50. }else{
    51. return o1.age-o2.age;
    52. }
    53. }else{
    54. return o1.name.compareTo(o2.name);
    55. }
    56. }
    57. }
    58. public class Main {
    59. public static void main(String[] args) throws IOException {
    60. //数据量过大,使用字符流输入
    61. BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
    62. String hmm_flag = br.readLine().toUpperCase();
    63. int n = Integer.parseInt(br.readLine());
    64. //创建friend数组储存数据
    65. Friend friend[]=new Friend[n];
    66. int index =0;//记录有多少个好妹妹
    67. for(int i=0;i
    68. //输入
    69. String str = br.readLine();
    70. String[] split = str.split(" ");
    71. String mark_nm = split[0].toUpperCase();
    72. //判断是不是女人并且有没有好妹妹标志
    73. if(split[1].equals("F") && mark_nm.contains(hmm_flag)){
    74. String date[]=split[3].split("\\.");
    75. //如果字符串前面有好妹妹标志
    76. if(mark_nm.startsWith(hmm_flag)){
    77. friend[index++]=new Friend(split[0].substring(hmm_flag.length(), split[0].length()),
    78. Integer.parseInt(split[2]),
    79. date[0],
    80. date[1],
    81. date[2]);
    82. }
    83. //如果后面有好妹妹标志
    84. if(mark_nm.endsWith(hmm_flag)){
    85. friend[index++]=new Friend(split[0].substring(0,
    86. split[0].length()-hmm_flag.length()),
    87. Integer.parseInt(split[2]),
    88. date[0],date[1],date[2]);
    89. }
    90. }
    91. }
    92. System.out.println(index);
    93. //使用sort并且传Friend_cmp()比较器进行比较
    94. Arrays.sort(friend,0,index,new Friend_cmp());
    95. for(int i=0;i
    96. //重写toString方法进行输出
    97. System.out.println(friend[i].toString());
    98. }
    99. }
    100. }

  • 相关阅读:
    Linux 中设置静态IP的方法步骤
    Zookeeper入门(一)
    在域控的Users目录下批量创建用户组,名称来自Excel
    【Unity精华一记】特殊文件夹
    通过vNode实现给列表字段打标签
    PCL 半径滤波剔除噪点(二)
    PixiJs学前篇(三):Canvas基础【下篇】
    7. 矢量图层数据查询选择和保存
    阿里云SLB之:基于HTTPS协议的SLB应用场景(十二)
    基于electron+vue+element构建项目模板之【打包篇】
  • 原文地址:https://blog.csdn.net/m0_63951142/article/details/128208479