纸牌游戏-(腾讯2018)

题目:n张牌,每张牌上 写着数字ai;使用最优策略,牛牛先抽,羊羊后抽,求牛牛的总分与羊羊的总分差值;
分析:最优策略,即贪心算法,每次选择当前最大的元素;
实现:
1.基于贪心算法,将元素进行排序(降序排列);
2.每次选择当前最大的元素,牛牛为奇数项,羊羊为偶数项;
说明:输入三个数,分别为:2,7,4,输出结果为:5
输入:
3
2 7 4
输出:
5

package com.bj.tencent;

import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.Scanner;

/* 纸牌游戏: */
public class Test4 {
    public static void main(String[] args) {
        @SuppressWarnings("resource")
        int count = new Scanner(System.in).nextInt();
        ArrayList list = new ArrayList<>();
        @SuppressWarnings("resource")
        Scanner scan = new Scanner(System.in);
        String str = scan.nextLine();
        String strs [] = str.split(" ");
        //如果输入不相符,直接退出
        if (count!=strs.length) return;
        for (int i = 0; i < strs.length; i++) {
            list.add(Integer.parseInt(strs[i]));
        }
        //重写方法,将其改为降序排列
        Collections.sort(list,new Comparator() {
            @Override
            public int compare(Integer o1, Integer o2) {
                return o2-o1;
            }
        });
        int sum = 0;
        for (int i = 0; i < list.size(); i++) {
            if(i%2==0){
                sum+=list.get(i);
            }else{
                sum-=list.get(i);
            }
        }
        //如果含有偶数个元素,需要将元素求绝对值
        //if (list.size()%2==0) sum = -sum;
        System.out.println(sum);
    }

}

知识点:
1.数据输入和字符串的切分;
2.如何使用排序函数?(考虑什么数据结构在满足题目要求的情况下,可以实现排序);
3.对系统函数进行重写,实现降序排序,满足贪心的原则;

你可能感兴趣的:(纸牌游戏-(腾讯2018))