NYOJ 4-ASCII码排序

时间限制:3000 ms | 内存限制:65535 KB | 难度:2

描述

输入三个字符(可以重复)后,按各字符的ASCII码从小到大的顺序输出这三个字符。

输入

第一行输入一个数N,表示有N组测试数据。后面的N行输入多组数据,每组输入数据都是占一行,有三个字符组成,之间无空格。

输出

对于每组输入数据,输出一行,字符中间用一个空格分开。

样例输入

2
qwe
asd

样例输出

e q w
a d s

题目来源

http://acm.nyist.net/JudgeOnline/problem.php?pid=4

方法一:使用数组指针

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
#include<iostream>
#include<algorithm>
using namespace std;

int main(){
int num;
cin>>num;
char a,b,c;
//申请空间
//使用数组指针,分配一个指针数组,将其首地址保存在x
char **x = new char*[num];
for (int i = 0; i < num; i++){
cin>>a>>b>>c;
//然后再为指针数组的每个元素分配一个数组
x[i]=new char[3];
x[i][0] = a; x[i][1] = b; x[i][2] = c;
}

//传递数组参数
for(int j = 0;j < num;j++){
//sort(x[j]);
sort(x[j],x[j]+3);
for(int k = 0;k< 3;k++){
cout<<x[j][k]<<" ";
}
cout<<endl;
}
//释放空间
//该方法定义的动态二维数组的释放
//需先释放指针数组的每个元素指向的数组
for(int i = 0;i < num;i++){
delete x[i];
x[i] = NULL;
}
//然后再释放该指针数组
delete []x;
x = NULL;
//cout<<num;
return 0;
}

方法二:使用Vector

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;

int main(){
int num;
char a,b,c;
cin>>num;
//申请空间
//Vectors 包含着一系列连续存储的元素,其行为和数组类似。
vector<vector<char> > x(num,vector<char>(3));
for (int i = 0; i < num; i++){
cin>>a>>b>>c;
x[i][0] = a;
x[i][1] = b;
x[i][2] = c;
}
for(int j = 0;j < num;j++){
sort(x[j].begin(),x[j].end());
for(int k = 0;k< 3;k++){
cout<<x[j][k]<<" ";
}
cout<<endl;
}

return 0;
}

参考资料

  1. 详解C++指针的指针和指针的引用
  2. C++建立动态二维数组
  3. C++给函数传数组参数
  4. C++中sort()及qsort()的用法总结
文章目录
  1. 1. 方法一:使用数组指针
  2. 2. 方法二:使用Vector
  3. 3. 参考资料

20160315-acm-1/

本页二维码