第一题
任务描述:
每一个任务有三种策略 resA、resB、resC,每一种策略都对应一个完成该任务的时间,现在输入人数和每一个人的任务所用的三种策略的时间。
1.从第一个人依次选择三个策略中耗时最少的策略
2.相邻人不能选用同一种策略
3.若同一任务有策略耗时相同,则选择最后的策略
求所有人完成任务的耗时
输入用例:
3
5 7 9
6 1 3
4 2 8
输出用例:
10
// 本题为考试多行输入输出规范示例,无需提交,不计分。
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
int[][] res = new int[n][3];
for(int i = 0; i < n; i++){
for(int j = 0; j < 3; j++){
res[i][j] = sc.nextInt();
}
}
int count = 0;
int index = 0;
int[] array = new int[3];
ArrayList<Integer> arrayList = new ArrayList<>();
for (int i = 0; i < n; i++) {
if(i==0){
for (int j = 0; j < 3; j++) {
array[j] = res[i][j];
}
Arrays.sort(array);
for (int j = 0; j < 3; j++) {
if(array[0] == res[i][j]){
//获得该用户选择的策略
index = j;
}
}
count = count + array[0];
}else{
//拿到该用户的三种资源消耗并将上一个用户选择的策略排除
for (int j = 0; j < 3; j++) {
if(j!=index){
arrayList.add(res[i][j]);
}
}
if(arrayList.get(0) >= arrayList.get(1)){
count = count + arrayList.get(1);
for (int j = 0; j < 3; j++) {
if(arrayList.get(1) == res[i][j]){
//获得该用户选择的策略
index = j;
}
}
}else {
count = count + arrayList.get(0);
for (int j = 0; j < 3; j++) {
if(arrayList.get(0) == res[i][j]){
//获得该用户选择的策略
index = j;
}
}
}
arrayList.clear();
}
}
System.out.println(count);
}
}
```java
在这里插入代码片
**
第二题
任务描述:求一个数组中众数组成的新数组的中位数
输入用例:1 2 2 3 4 4 5 5 9 5
输出用例:4
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Scanner;
public class Main1 {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
ArrayList<Integer> array = new ArrayList<>();
ArrayList<Integer> arrayList = new ArrayList<>();
while (input.hasNext()){
String[] strs = input.nextLine().split(" ");
//获得初始数组
for (int i = 0; i < strs.length; i++) {
array.add(Integer.parseInt(strs[i]));
}
//记录每个数字出现的个数
int count = 0;
for (int i = 0; i < array.size(); i++) {
for (int j = i; j < array.size(); j++) {
if(array.get(i).equals(array.get(j))){
count++;
}
}
//获得众数数组
if(count > 1 && !arrayList.contains(array.get(i))){
arrayList.add(array.get(i));
}
count = 0;
}
Integer[] newArray = arrayList.toArray(new Integer[arrayList.size()]);
//对新数组排序
Arrays.sort(newArray);
for (int i = 0; i < newArray.length; i++) {
System.out.println(newArray[i]);
}
int index;
if ((newArray.length) % 2 != 0) {
index = newArray.length / 2;
System.out.println(newArray[index]);
} else {
float result = (float) (newArray[(newArray.length-1)/2] + newArray[(newArray.length-1)/2+1])/2;
System.out.println(result);
}
array.clear();
arrayList.clear();
}
}
}
**