Problem Description
輸入三個字符后,按各字符的ASCII碼從小到大的順序輸出這三個字符。 |
Input
輸入數據有多組,每組占一行,有三個字符組成,之間無空格。 |
Output
對於每組輸入數據,輸出一行,字符中間用一個空格分開。 |
Sample Input
qwe asd zxc |
Sample Output
e q w a d s c x z |
要讓三個數從小到大排,順序就是:
比較1,2兩個數。如果第一個數比第二數大,把這兩個數交換,來保證前面兩個數按升序排列。
比較2,3兩個數。如果第二個數比第三數大,把這兩個數交換,來保證后面兩個數按升序排列。
經過上面兩步,最大的數已經被移到最后。再重復一次第一步。保證三個數都是按升序來排列。
雖然你也可以用排序算法對它進行排序,但那就把問題復雜化了。做ACM的題目,就是要充分利用題目給出的條件(本題一明確指出輸入的只有三個字符)。選擇最優算法,而不是最通用的算法。
1 #include <iostream> 2 #include <algorithm> 3 using namespace std; 4 5 int main() 6 { 7 char n[4]; 8 9 while (cin >> n) 10 { 11 if (n[0] > n[1]) swap(n[0], n[1]); 12 if (n[1] > n[2]) swap(n[1], n[2]); 13 if (n[0] > n[1]) swap(n[0], n[1]); 14 cout << n[0] <<“ ”<< n[1] <<“ ”<< n[2] << endl; 15 } 16 17 return 0; 18 }