ACM解题--(1)ASCII码排序

来源:互联网 发布:乔布简历 知乎 编辑:程序博客网 时间:2024/04/25 02:48

ASCII码排序

时间限制:3000 ms  |  内存限制:65535 KB
难度:2
描述
输入三个字符(可以重复)后,按各字符的ASCII码从小到大的顺序输出这三个字符。
输入
第一行输入一个数N,表示有N组测试数据。后面的N行输入多组数据,每组输入数据都是占一行,有三个字符组成,之间无空格。
输出
对于每组输入数据,输出一行,字符中间用一个空格分开。
样例输入
3qweasdzxc
样例输出
e q wa d sc x z
代码1
#include <iostream>#include <string>using namespace std;void Swap(char& a, char& b){char t = a;a = b;b = t;}void test(){int n = 0;cin >> n;char szIn[4];while (n--){cin >> szIn;cout << szIn[0] << " " << szIn[1] << " " << szIn[2] << "\n";if (szIn[0] > szIn[1]){Swap(szIn[0], szIn[1]);}if (szIn[2] < szIn[1]){Swap(szIn[2], szIn[1]);}if (szIn[1] < szIn[0]){Swap(szIn[0], szIn[1]);}cout << szIn[0] << " " << szIn[1] << " " << szIn[2] << "\n";}}int main(){test();return 0;}

运行结果:

运行号用户题目结果时间内存语言提交时间

782337arbboterASCII码排序Accepted4232C/C++03-26 15:44:57

代码2

#include <iostream>#include <string>using namespace std;void test(){int n = 0;cin >> n;char szIn[4];char szOut[3];while (n--){cin >> szIn;szOut[0] = (szIn[0] < szIn[1] ? szIn[0] : szIn[1])<szIn[2] ? (szIn[0] < szIn[1] ? szIn[0] : szIn[1]):szIn[2];szOut[2] = (szIn[0] > szIn[1] ? szIn[0] : szIn[1])>szIn[2] ? (szIn[0] > szIn[1] ? szIn[0] : szIn[1]) : szIn[2];szOut[1] = szIn[0] + szIn[1] + szIn[2] - szOut[0] - szOut[2];cout << szOut[0] << " " << szOut[1] << " " << szOut[2] << "\n";}}int main(){test();return 0;}

运行结果:

运行号用户题目结果时间内存语言提交时间

782347arbboterASCII码排序Accepted0232C/C++03-26 15:58:07

由于第二种方法没有swap,所以运行时间减少了。
0 0
原创粉丝点击