2015-11-24 113 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