• OJ刷题——你爱我么?


    题目描述

      LCY买个n束花准备送给她暗恋的女生,但是他不知道这个女生是否喜欢他。这时候一个算命先生告诉他让他查花瓣数,第一个花瓣表示"爱",第二个花瓣表示"不爱",第三个花瓣表示"爱".....
    为了使最后结果是"爱",LCY需要从n束花中选出一些,你能帮他算出最后他送给这个女生的花中最多包含多少个花瓣吗?

    输入

      首先输入一个整数T,表示测试实例的个数。
      接下来T组测试实例,每组实例首先输入一行,包括一个整数n(1 <= n <= 100)。
      然后输入一行,n个数a1,a2...an(1 <= ai <= 100),表示每束花包含的花瓣的个数。

    输出

      每组实例输出一个整数,表示LCY最多能送多少个花瓣给这个女生。

    样例输入
    3
    1
    1
    1
    2
    3
    5 6 7
    样例输出 
    1
    0
    13

    思路分析:读入时将数据按照奇偶性分开存储,根据“奇数个奇数的和是奇数,偶数个奇数的和是偶数”可知当输入无奇数时肯定不能得到和是奇数的输出,当奇数个数为奇数时全部可取,当奇数个数为偶数时,不取最小的一个。
    附上代码:
    import java.util.ArrayList;
    import java.util.Collections;
    import java.util.Scanner;
    
    public class Main{
    
        public static void main(String[] args) {
            // TODO Auto-generated method stub
            Scanner scan = new Scanner(System.in);
            int total = scan.nextInt();
            for(int i = 0;i<total;i++) {
                int n = scan.nextInt();
                ArrayList<Integer> alOdd = new ArrayList<Integer>();
                ArrayList<Integer> alEven = new ArrayList<Integer>();
                int sum = 0;
                for(int j = 0;j<n;j++) {
                    int temp = scan.nextInt();
                    if(temp%2==0) {
                        alEven.add(temp);
                    }else {
                        alOdd.add(temp);
                    }
                }
                if(alOdd.size()==0) {//没有奇数,最后和肯定是偶数
                    System.out.println(0);
                    continue;
                }else {//有奇数,能够组合出奇数
                    for(int m = 0;m<alEven.size();m++) {//偶数的全都要
                        sum+=alEven.get(m);
                    }
                    //奇数的要奇数个
                    int lenOdd = alOdd.size();
                    if(lenOdd%2==0) {//奇数有偶数个,最小的一个不要
                        Collections.sort(alOdd);//升序排序
                        for(int m = 1;m<lenOdd;m++) {
                            sum+=alOdd.get(m);
                        }
                    }else {//奇数有奇数个,全都要
                        for(int m = 0;m<lenOdd;m++) {
                            sum+=alOdd.get(m);
                        }
                    }
                    
                }
                System.out.println(sum);
            }
        }
    
    }
    
    
    
    
    
  • 相关阅读:
    MVC4.0 上传Excel并存入数据库
    解决汉化pycharme之后设置打不开的问题
    初学JavaScript正则表达式(一)
    phpstudy配置虚拟域名
    设置了相对定位relative之后,改变top值,如何去掉多余空白?
    git clone克隆代码显示“无权限或者确认存储库是否存在”
    xampp配置虚拟域名
    PHP连接Navicat For Mysql并取得数据
    Vue中怎样使用swiper组件?
    Vue项目开发前的准备工作,node的安装,vue-cli的安装
  • 原文地址:https://www.cnblogs.com/lzhxue/p/12679843.html
Copyright © 2020-2023  润新知