您的位置:首页 > 编程语言

百度编程 兼职题目。

2015-09-12 22:14 337 查看
Alice 是个手机发烧友,最近新出了一款他非常喜欢的手机,手机价格比较高而她手里的资金不太充裕,所以想要做个兼职赚些钱再买。现在有n芬兼职。

package test;

import java.util.Arrays;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Iterator;
import java.util.Scanner;

public class Solution {
public static void main(String[] args) {
int n, m, k;
Scanner scanner = new Scanner(System.in);
n = scanner.nextInt();
m = scanner.nextInt();
k = scanner.nextInt();
int[] pro = new int
;
HashMap<Integer, Integer[]> mapvalue = new HashMap<Integer, Integer[]>();
int[] div = new int[n * n * n];
int counti = 0;

for (int i = 0; i < pro.length; i++) {
pro[i] = scanner.nextInt();
}
HashSet<Integer> set = new HashSet<Integer>();
for (int i = 0; i < pro.length - m + 1; i++) {
setValue(pro, i, m, set, mapvalue);
}
int[] values = new int[set.size()];
int i = 0;
Iterator<Integer> it = set.iterator();
while (it.hasNext()) {
int tmp = it.next();
System.out.print(" "+tmp);
values[i++] = tmp;

}
System.out.println();
Arrays.sort(values);
int sum = 0;
int count = 0;
int j;
for ( j = values.length - 1; j >= 0 && count < k; j--) {
if (counti == 00 || donotContaint(values[j], mapvalue, div, counti)) {
sum += values[j];
System.out.print(" "+values[j]);
count++;
Integer [] tmpdate = mapvalue.get(values[j]);
for (int l = 0; l < tmpdate.length; l++) {
div[counti++] = tmpdate[l];
}
}
}
System.out.println(j);
System.out.println("" + sum);
}

private static boolean donotContaint(int value,
HashMap<Integer, Integer[]> mapvalue, int[] div, int counti) {
if (counti == 0) {
return true;
}
Integer[] tmpdata = mapvalue.get(value);
for (int i = 0; i < tmpdata.length; i++) {
int tmp = tmpdata[i];
for (int j = 0; j < counti; j++) {
if (tmp == div[j]) {
return false;
}
}
}

return true;
}

private static void setValue(int[] pro, int i, int m, HashSet<Integer> set,
HashMap<Integer, Integer[]> mapvalue) {
int sum = 0;
Integer[] child = new Integer[m];
int s = 0;
for (int j = i; j < i + m; j++) {
sum += pro[j];
child[s++] = pro[j];
}
mapvalue.put(sum, child);
set.add(sum);
}
}


  
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: