第一题如下:
给你一组整数,围城一个环,从中挑选出合为最大的数的和,且不能取两个相邻的数。
import java.util.*;
public class Max_select
{
public static void main(String[] args)
{
Scanner sc = new Scanner(System.in);
while(sc.hasNext())
{
int w=0;
String str1= sc.nextLine();
String[] str2 = str1.split(",");
int[] arry = new int[str2.length];
int[] arry1 = new int[str2.length];
for(int i=0;i<arry.length;i++)
{
arry[i]=Integer.valueOf(str2[i]);
arry1[i]=Integer.valueOf(str2[i]);
}
if(arry.length==1)
System.out.println(arry[0]);
else if(arry.length==2)
w=0;
else if(arry.length==3)
System.out.println(sort(arry1));
else
{
if(arry.length%2==0)
System.out.println(max_ou(arry));
else
{
System.out.println(max_ji(arry));
}
}
}
}
public static int max_ji(int[] a)
{
int[] w = new int[a.length];
int sum=0;
int j=0;
for(int i=0;i<a.length;i++)
{
sum=0;
j=0;
for(;j<a.length-1;)
{
sum=sum+a[j];
j=j+2;
}
w[i]=sum;
tranfer(a);
// print(a);
// System.out.println();
}
Arrays.sort(w);
return w[w.length-1];
}
public static void tranfer(int[] a)
{
int temp=a[0];
for(int i=0;i<a.length-1;i++)
{
a[i]=a[i+1];
}
a[a.length-1]=temp;
}
public static int max_ou(int[] a)
{
int sum=0;
int[] max = new int[2];
for(int i=0;i<2;i++)
{
sum=0;
for(int j=i;j<a.length;)
{
sum=sum+a[j];
j=j+2;
}
max[i]=sum;
}
Arrays.sort(max);
return max[max.length-1];
}
public static int sort(int[] a)
{
Arrays.sort(a);
return a[a.length-1];
}
public static void print(int[] a)
{
for(int i=0;i<a.length;i++)
{
System.out.print(a[i]+" ");
}
}
}
结果如下:
1,2
3,4,5
5
2,3,4,6,4,5,8,7
21
1,2,3,4,5,6,7,8,9
24
1,2,3,4,3,4,2,1,3,4,5,6
21