我遇到了一個問題,那就是我需要接受用戶輸入,並返回從最小到最大的任意3個高度的所有組合導致對角線或水平線。例如,如果用戶輸入是3 5 7 10 2 1 1 1,則輸出應該是基於高度的用戶輸入獲取對角線或水平線組合的總組合JAVA
1 1 1
1 2 3
1 3 5
3 5 7
我有一定的工作代碼,但我的問題是如何結果是比1隔開更大的距離。我目前的工作代碼如下。
Arrays.sort(intArray);
int counter = 0;
for(int x = 0; x < intArray.length - 2; x++){
if(intArray[x] == intArray[x+1] && intArray[x] == intArray[x+2] && intArray[x] != 0){
validArray[counter][0] = intArray[x];
validArray[counter][1] = intArray[x+1];
validArray[counter][2] = intArray[x+2];
counter++;
}
if(intArray[x] < intArray[x+1]){
dif = intArray[x+1] - intArray[x];
if(dif == intArray[x+2] - intArray[x+1]){
validArray[counter][0] = intArray[x];
validArray[counter][1] = intArray[x+1];
validArray[counter][2] = intArray[x+2];
counter++;
}
}
}
for(int x = 0; x < validArray.length; x++){
if(validArray[x][0] != 0){
System.out.println(validArray[x][0] + " " + validArray[x][1] + " " + validArray[x][2]);
}
}
如果用戶輸入3 5 7 10 2 1 1 1 我得到
1 1 1
1 2 3
3 5 7
,而不是1 3 5。我明白爲什麼我的代碼不輸出正確的輸出,但我不知道如何去編碼我的循環結構來獲得所需的輸出。任何有關這個問題的幫助,非常感謝!
你是什麼意思由「3高度」的組合?你的意思是行應該是3寬嗎?並且數字是否應該在垂直線上按升序排列(您只提及對角線和水平線)? – Maljam
用戶輸入是一個高度。所以3 5 10 2 1是所有高度的可以說一個極點。使用任何3極,我需要找到所有的組合,如果你把它們按順序排列,極1,極2和極3的高度可以是a)相等,或者b)按升序排列,其中P3-P2 == P2- P1,使P1