南大高级算法作业之按照要求保留数组元素使得和最大

import java.util.*;

public class Main {
	
	public static int selectTheMax(String[] num){
		
		int max = -1;
		
		int pos = -1;
		
		for(int i=0;i<num.length;i++){
			
			if(Integer.parseInt(num[i]) > max){
				
				max = Integer.parseInt(num[i]);
				
				pos = i;
				
			}
				
		}
		
		return pos;
		
	}
	
	public static void handle(String[] num,int maxpos){
		
		int maxnum = Integer.parseInt(num[maxpos]);
		
		for(int i=0;i<num.length;i ++){
		
			if(Integer.parseInt(num[i]) == maxnum-1){
			
				num[i] = "-1";
				
				break;
				
			}
		}
		
	}
	

    public static void main(String[] args) {

    	Scanner scan = new Scanner(System.in);

		int e_num = Integer.parseInt(scan.nextLine());//测试数

		while(e_num>0){

			int count = Integer.parseInt(scan.nextLine());//数字数目

			String num[] = scan.nextLine().split(" ");//初始数组
			
			int sum = 0;
			
			int i = 0;
			
			while(i < count){
				
				int temp = selectTheMax(num);
				
				if(temp == -1){
					
					break;
					
				}
				
				if(num[temp] != "-1"){
				
					sum += Integer.parseInt(num[temp]);
				
					handle(num,temp);
					
					num[temp] = "-1";
					
					i ++;
					
				}else{
					
					break;
					
				}
						
			}

			System.out.println(sum);

			e_num --;

		}

    }

}
发布了36 篇原创文章 · 获赞 2 · 访问量 1982

猜你喜欢

转载自blog.csdn.net/fumonster/article/details/103178495