2015-11-24 80 views
0

我有三个排序的数字。我只能更改最后一个或ist数字来获取其他两个数字之间的数字。我会做的最大数量的更改是什么?查找数组中的组合总数?

对于例如:1,2,5 IST变化将是2,3,5 这里1变为2号和5 第二变化之间将3,4,5- 所以输出是2。 谁能告诉我比下面更好的实现?

void printCount() { 
    int a[] = {0,0,0}; 
    Scanner in=new Scanner(System.in); 
    System.out.println("Enter the input"); 
    int count1=in.nextInt(); 
    for (int j=0;j<count1;j++){ 
    for(int i=0;i<3;i++){ 
     a[i]=in.nextInt(); 
    } 
    int count=0;  
    while(true){ 
     if(a[2]==(a[1]+1) && a[1] ==(a[0]+1)){ 
      break; 
     } 
     if((a[1]-a[0]) >a[2]-a[1]){ 
      a[2]=a[0]+1; 
     } 
     else{ 
      a[0]=a[1]+1; 
     } 
     count++; 
     Arrays.sort(a); 
    } 
    System.out.println(count); 
    } 
} 
+3

这里没有实际的问题。这将作为http://codereview.stackexchange.com/上的代码审查问得更好。 – yitzih

回答

1

为什么不做这样的事情,一旦你有数组。我可能会错过一些东西...

int firstDelete = Math.abs(a[2]-a[1])-1; 
int thirdDelete = Math.abs(a[0]-a[1])-1; 
System.out.println(Math.max(firstDelete, thirdDelete)); //Max count