继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续
感谢您的支持,我会继续努力的
赞赏金额会直接到老师账户
将二维码发送给自己后长按识别
微信支付
支付宝支付

算法 test 五个用例

慕哥9005889
关注TA
已关注
手记 2
粉丝 5
获赞 0

package t170427;

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

public class Solution170427_weimeng {

public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
int test_case=sc.nextInt();//测试用例的数量
for(int t=0;t<test_case;t++){
List<Boat> boatList=new ArrayList<Boat>();
int boatCount=sc.nextInt();//船的数量

for(int i=0;i<boatCount;i++){
Boat boat=new Boat(i+1,sc.nextInt(),sc.nextInt());
boatList.add(boat);
}
Boat b=Collections.min(boatList);
System.out.println("#"+(t+1)+" "+b.index);
}

sc.close();

}

}
class Boat implements Comparable<Boat>{
Boat(int index,int x,int y){
this.index=index;
this.x=x;
this.y=y;
this.distance=xx+yy;
if(x>0 && y>0){
this.xiangxian=1;
}
if(x>0 && y<0){
this.xiangxian=2;
}
if(x<0 && y<0){
this.xiangxian=3;
}
if(x<0 && y>0){
this.xiangxian=4;
}
}

int index;
int x;
int y;
int xiangxian;
int angle;
int distance;
@Override
public int compareTo(Boat boat) {
if(this.xiangxian<boat.xiangxian){
return -1;
}
if(this.xiangxian>boat.xiangxian){
return 1;
}

if(this.xiangxian==1 || boat.xiangxian==3){
//x1/y1>x2/y2 return 1
if(Math.abs(this.xboat.y) >Math.abs(boat.xthis.y)){
return 1;
}
if(Math.abs(this.xboat.y) <Math.abs(boat.xthis.y)){
return -1;
}
}
if(this.xiangxian==2 || boat.xiangxian==4){
//y1/x1>y2/x2 return 1
if(Math.abs(this.yboat.x) >Math.abs(boat.ythis.x)){
return 1;
}
if(Math.abs(this.yboat.x) <Math.abs(boat.ythis.x)){
return -1;
}
}

//象限一样,夹角一样,继续判断距离
if(this.distance>boat.distance){
return 1;
}else{
return -1;
}

}

}
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import java.util.Scanner;

public class Solution {

static int N; // 书的种类
static int K; // 每种书内必读书的个数
static int M; // 读书周期
static int[][] Input = null; // 每本必读书的点赞数
static int sum = 0;
static List<Integer> list = null;

/**

  • @param args
  • @throws FileNotFoundException
    */
    public static void main(String[] args) throws FileNotFoundException {
    Scanner sc = new Scanner(System.in);
    int test_case = sc.nextInt();
    for (int i = 0; i < test_case; i++) {
    sum = 0;
    N = sc.nextInt();
    K = sc.nextInt();
    M = sc.nextInt();

    Input = new int[N][K];
    for (int j = 0; j < N; j++) {
    for (int k = 0; k < K; k++) {
    Input[j][k] = sc.nextInt();
    }
    }
    fnMaxSum(i);
    }
    sc.close();

    }

    private static void fnMaxSum(int test_case) {

    list = new ArrayList<Integer>();
    for (int j = 0; j < N; j++) {
    Arrays.sort(Input[j]);
    }
    for (int j = 0; j < N; j++) {
    for (int k = K - 1; k >= (K - M / 2) && k >= 0; k--) {
    list.add(Input[j][k]);
    }
    }
    Collections.sort(list);
    for (int j = list.size() - 1; j > list.size() - M - 1 && j >= 0; j--) {
    sum += list.get(j);
    }
    System.out.println("#" + (test_case + 1) + " " + sum);
    }

}
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;
import java.util.Scanner;

public class Solution {

static int TestCase;
static int answer;
static int N,M,K;
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
TestCase=sc.nextInt();
for(int t=1;t<=TestCase;t++){
sc.nextLine();
N=sc.nextInt();
M=sc.nextInt();
K=sc.nextInt();
answer=M+1;
Map<Integer,ArrayList<Integer>> relative=new HashMap<Integer,ArrayList<Integer>>();
for(int i=1;i<=K;i++){
sc.nextLine();
int k1=sc.nextInt();
int k2=sc.nextInt();
ArrayList<Integer> arr=relative.get(k1);
if(arr==null){
arr=new ArrayList<Integer>();
}
arr.add(k2);
relative.put(k1, arr);
}
getNum(1,1,relative);
if(answer==M+1){
answer=-1;
}
System.out.println("#"+t+" "+answer);
}
}

public static void getNum(int num,int key,Map<Integer,ArrayList<Integer>> rela){
if(num<=M&&key==N){
if(num<answer){
answer=num;
}
return;
}else{
if(num>M || rela.get(key)==null){
return;
}else{
num++;
for(int i=0;i<rela.get(key).size();i++){
getNum(num,rela.get(key).get(i),rela);
}
}
}
}
}
package t170223;

import java.util.Scanner;

/**

  • 陈潇2017.02.23考试的题目
  • @author meng3.wei
  • @date 20170419
  • 题目很容易,但是没有练习,就是编写不出来
  • 公司经常会有部门出现人力缺口,那么人事部门就会招聘人员。但每个应聘人员都想去自己喜爱的部门,而招聘担当也想满足各位的愿望。

所以限定条件:

1.每个部门只出现1个人力缺口,而应聘人力也是一对一。即N个部门 N个人力

2.应聘人力为 3<N<10 这个范围内

招聘担当为此想出了一个办法来最大满足各位的需求:

即每个人对每个部门进行打分 4个部门时 4个人就进行打分 最高分4分 最低分1分 分数不重复

打分表如下:

部门1

部门2

部门3

部门4

人力1

4

2

3

1

人力2

2

3

4

1

人力3

3

1

2

4

人力4

4

3

1

2

然后招聘担当尽量去每个部门满意度最高的人去相应部门,当然会有多人最想去的部门相同,但一个部门只能去一个人。所以需要在不同的组合选择中。选择出总得分最高的。

方式一:人力1->部门1 人力2->部门3 人力3->部门4 人力4-> 部门2 总得分为 4+4+4+3 =15

方式二:人力1->部门2 人力2->部门3 人力3->部门4 人力4-> 部门1 总得分为 2+4+4+4 =14

方式三:.......

方式四:.......

等等。。。。

要求我们给出所有方式组合中 总得分最高的 分数 即输出15这个值

Test case 输入

2 --case 总数

4 --部门数

4 2 3 1 -- 每个人的打分 依次是1~N的部门

2 3 4 1

3 1 2 4

4 3 1 2

5 --部门数

4 2 3 1 5-- 每个人的打分 依次是1~N的部门

2 3 5 1 4

3 5 2 4 1

4 3 5 1 2

1 4 3 2 5

输出

1 15
2 XX --(自己编的case我没算输出)


/
public class Solution170223_weimeng {
static int[][] deptScore;
static int maxScore=0;
public static void main(String[] args) {

Scanner sc=new Scanner(System.in);
//int test_case=sc.nextInt();
int test_case=1;
for(int t=0;t<test_case;t++){
int deptSize=sc.nextInt();
deptScore=new int[deptSize][deptSize];
int[] array=new int[deptSize];
for(int i=0;i<deptSize;i++){
array[i]=i;
for(int j=0;j<deptSize;j++){
deptScore[i][j]=sc.nextInt();
}
}
process(array,0,array.length-1);
System.out.println(maxScore);
}

sc.close();

/String str="123";
process(str.toCharArray(),0,str.length()-1);
/
}

public static void process(int[] array,int start,int end){
if(start==end){
//System.out.println(String.valueOf(array));
int currentScore=countCurrentScore(array,deptScore);
if(currentScore>maxScore){
maxScore=currentScore;
}

}else{
for(int index=start;index<=end;index++){
int temp=array[start];
array[start]=array[index];
array[index]=temp;
process(array,start+1,end);
temp=array[start];
array[start]=array[index];
array[index]=temp;
}
}
}

public static int countCurrentScore(int[] array,int [][] deptScore){
int count=0;
for(int i=0;i<array.length;i++){
count=count+deptScore[i][array[i]];
}
return count;
}

}

package Solution02_yourname;

import java.util.Scanner;

public class Solution512_lizhun {

static int T,N,small,big;
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
T = sc.nextInt();
for (int testcase = 1; testcase <= T; ++testcase) {
N = sc.nextInt();
small = big = 0;
if (N%2 != 0) {//奇数
small = 2;
if (isSuShu(N - small)) {
big = N - small;
}
} else { //偶数
int x = N/2;
for(int i = x;i > 1; i--){
//如果已经找到了big和small就跳出循环
if (big != 0) {
break;
}

 for (int j = 2; j < i; j++) {
  if (i%j == 0) {
   break;
  }
  if (j == i - 1) { //i = small
   small = i;
   if (isSuShu(N - small)) {
    big = N - small;
    break;
   }
  }
 }
}

}
printRes(testcase);
}

}
private static void printRes(int testcase) {
if (big == 0) {
System.out.println("#" + testcase + " -1");
} else {
System.out.println("#" + testcase + " " + small + " " + big);
}
}
private static boolean isSuShu(int i) {
for (int j = 2; j < i; j++) {
if (i%j == 0) {
return false;
}
}
return true;
}

}
package t170223;

import java.util.Scanner;

/**

  • 陈潇2017.02.23考试的题目
  • @author meng3.wei
  • @date 20170419
  • 题目很容易,但是没有练习,就是编写不出来
  • 公司经常会有部门出现人力缺口,那么人事部门就会招聘人员。但每个应聘人员都想去自己喜爱的部门,而招聘担当也想满足各位的愿望。

所以限定条件:

1.每个部门只出现1个人力缺口,而应聘人力也是一对一。即N个部门 N个人力

2.应聘人力为 3<N<10 这个范围内

招聘担当为此想出了一个办法来最大满足各位的需求:

即每个人对每个部门进行打分 4个部门时 4个人就进行打分 最高分4分 最低分1分 分数不重复

打分表如下:

部门1

部门2

部门3

部门4

人力1

4

2

3

1

人力2

2

3

4

1

人力3

3

1

2

4

人力4

4

3

1

2

然后招聘担当尽量去每个部门满意度最高的人去相应部门,当然会有多人最想去的部门相同,但一个部门只能去一个人。所以需要在不同的组合选择中。选择出总得分最高的。

方式一:人力1->部门1 人力2->部门3 人力3->部门4 人力4-> 部门2 总得分为 4+4+4+3 =15

方式二:人力1->部门2 人力2->部门3 人力3->部门4 人力4-> 部门1 总得分为 2+4+4+4 =14

方式三:.......

方式四:.......

等等。。。。

要求我们给出所有方式组合中 总得分最高的 分数 即输出15这个值

Test case 输入

2 --case 总数

4 --部门数

4 2 3 1 -- 每个人的打分 依次是1~N的部门

2 3 4 1

3 1 2 4

4 3 1 2

5 --部门数

4 2 3 1 5-- 每个人的打分 依次是1~N的部门

2 3 5 1 4

3 5 2 4 1

4 3 5 1 2

1 4 3 2 5

输出

1 15
2 XX --(自己编的case我没算输出)


/
public class Solution170223_weimeng {
static int[][] deptScore;
static int maxScore=0;
public static void main(String[] args) {

Scanner sc=new Scanner(System.in);
//int test_case=sc.nextInt();
int test_case=1;
for(int t=0;t<test_case;t++){
int deptSize=sc.nextInt();
deptScore=new int[deptSize][deptSize];
int[] array=new int[deptSize];
for(int i=0;i<deptSize;i++){
array[i]=i;
for(int j=0;j<deptSize;j++){
deptScore[i][j]=sc.nextInt();
}
}
process(array,0,array.length-1);
System.out.println(maxScore);
}

sc.close();

/String str="123";
process(str.toCharArray(),0,str.length()-1);
/
}

public static void process(int[] array,int start,int end){
if(start==end){
//System.out.println(String.valueOf(array));
int currentScore=countCurrentScore(array,deptScore);
if(currentScore>maxScore){
maxScore=currentScore;
}

}else{
for(int index=start;index<=end;index++){
int temp=array[start];
array[start]=array[index];
array[index]=temp;
process(array,start+1,end);
temp=array[start];
array[start]=array[index];
array[index]=temp;
}
}
}

public static int countCurrentScore(int[] array,int [][] deptScore){
int count=0;
for(int i=0;i<array.length;i++){
count=count+deptScore[i][array[i]];
}
return count;
}

}

package Solution02_yourname;

import java.util.Scanner;

public class Solution512_lizhun {

static int T,N,small,big;
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
T = sc.nextInt();
for (int testcase = 1; testcase <= T; ++testcase) {
N = sc.nextInt();
small = big = 0;
if (N%2 != 0) {//奇数
small = 2;
if (isSuShu(N - small)) {
big = N - small;
}
} else { //偶数
int x = N/2;
for(int i = x;i > 1; i--){
//如果已经找到了big和small就跳出循环
if (big != 0) {
break;
}

 for (int j = 2; j < i; j++) {
  if (i%j == 0) {
   break;
  }
  if (j == i - 1) { //i = small
   small = i;
   if (isSuShu(N - small)) {
    big = N - small;
    break;
   }
  }
 }
}

}
printRes(testcase);
}

}
private static void printRes(int testcase) {
if (big == 0) {
System.out.println("#" + testcase + " -1");
} else {
System.out.println("#" + testcase + " " + small + " " + big);
}
}
private static boolean isSuShu(int i) {
for (int j = 2; j < i; j++) {
if (i%j == 0) {
return false;
}
}
return true;
}

}

打开App,阅读手记
0人推荐
发表评论
随时随地看视频慕课网APP