Eureka


私信TA

用户名:2018112366

访问量:594

签 名:

等  级
排  名 6508
经  验 1409
参赛次数 0
文章发表 1
年  龄 0
在职情况 学生
学  校 西南交通大学
专  业

  自我简介:

TA的其他文章

解题思路:使用递归循环选出三位数(先排序基本能达到选出的为递减顺序)

注意事项:递归会爆栈,所以限制递归次数,超过一千的设置一千就行

参考代码:

package javaA2018第二次;

import java.util.*;

public class 倍数问题 {

static int n,k;

static int a[],b[];

static int x[]=new int [3];

static boolean zhen=false;

static int max=0;

static int js=0;

    public static void main(String []args)

    {

    Scanner scan=new Scanner (System.in);

    n=scan.nextInt();

    k=scan.nextInt();

    a=new int [n];

   

    for(int i=0;i<n;i++)

    {

    a[i]=scan.nextInt();

    }

    scan.close();

    Arrays.sort(a);

    if(n<1000)

    {

    b=new int [n];

          for(int i=0;i<n;i++)

      {

    b[i]=a[n-1-i];

      } 

          Arrays.sort(b);

    }

    else

    {

    b=new int [1000];

          for(int i=0;i<1000;i++)

      {

    b[i]=a[n-1-i];

      } 

          Arrays.sort(b);

    }

    f(0,0);

    System.out.println(max);

    }

private static void f(int k, int count) {

// TODO Auto-generated method stub

if(k>b.length||count>3)

{

return ;

}

if(js>10)

{

return ;

}

if(k==b.length&&count==3)

{

check(x);

// print(x);

return ;

}

for(int i=0;i<2;i++)

{

if(i>0&&k<b.length)

{

for(int m=count;m<count+i;m++)

{

if(count+i<=3)

{

x[m]=b[k];

}

}

}

f(k+1,count+i);

}

}

private static void print(int[] x2) {

// TODO Auto-generated method stub

for(int i=0;i<3;i++)

{

System.out.print(x2[i]+" ");

}

System.out.println();

}

private static void check(int[] x2) {

// TODO Auto-generated method stub

int sum=0;

for(int i=0;i<3;i++)

{

sum+=x2[i];

}

if(sum%k==0)

{

js++;

  if(sum>max)

  {

  max=sum;

  }

// zhen=true;

}

}

}


 

0.0分

3 人评分

  评论区

  • «
  • »