• 字符串子串(网易2017春招笔试题)


    字符串子串(网易2017春招笔试题)

    题目:


    一种双核CPU的两个核能够同时的处理任务,现在有n个已知数据量的任务需要交给CPU处理,假设已知CPU的每个核1秒可以处理1kb,每个核同时只能处理一项任务。n个任务可以按照任意顺序放入CPU进行处理,现在需要设计一个方案让CPU处理完这批任务所需的时间最少,求这个最小的时间。 


    输入描述:


    输入包括两行:

    第一行为整数n(1 ≤ n ≤ 50)

    第二行为n个整数length[i](1024 ≤ length[i] ≤ 4194304),表示每个任务的长度为length[i]kb,每个数均为1024的倍数。


    输出描述:


    输出一个整数,表示最少需要处理的时间


    输入例子1:


    5

    3072 3072 7168 3072 1024


    输出例子1:


    9216



    java版本的代码实现:
    package cn.cat.test;
    
    import java.util.Arrays;
    
    public class Test {
    	public static void main(String[] args) {
    		int[] tasks = new int[]{3072, 3072, 7168, 3072, 1024};
    		Arrays.sort(tasks);
    		//最末尾的元素索引
    		int lastIndex = tasks.length - 1;
    		if (lastIndex <= 2) {
    			System.out.println("双核CPU并行处理的最小时间为:" + (tasks[lastIndex] / 1024) );
    			return;
    		}
    		
    		int maxAvg = tasks[lastIndex];
    		int minAvg = tasks[lastIndex - 1];
    		int temp;
    		for (int i = lastIndex - 2; i >= 0; i--) {
    			if ((minAvg + tasks[i]) < (maxAvg + tasks[i])) {
    				minAvg += tasks[i];
    			} else {
    				maxAvg += tasks[i];
    			}
    			
    			if (minAvg > maxAvg) {
    				temp = maxAvg;
    				maxAvg = minAvg;
    				minAvg = temp;
    			}
    		}
    		System.out.println(String.format("细分为两个组,任务量分别为%d, %d , 双核CPU并行处理的最小时间为: %d", 
    				minAvg, maxAvg, (maxAvg / 1024)));
    	}
    }
    



  • 相关阅读:
    解析XML技术
    XML名命空间
    XML解析器
    java列表组件鼠标双击事件的实现
    XML(可拓展标记语言)基本概念
    数据包式套接字:基于UDP协议的Socket网络编程
    流式套接字:基于TCP协议的Socket网络编程(案例3)
    剑指 Offer 58
    剑指 Offer 58
    剑指 Offer 57
  • 原文地址:https://www.cnblogs.com/catgwj/p/7492827.html
Copyright © 2020-2023  润新知