您的位置:首页 > 编程语言 > C语言/C++

数字排序问题(c++)

2016-05-07 21:50 645 查看
Description

给一个N位的正整数,该数不包含前导0,先让你调整其中每个数字的位置,得到另一个n位的数,并且使得这个数越小越好,而且这个数不能包含前导0。比如543210可以变成102345,而12345保持不变才是最优结果。

Input

第一行一个整数T(T<=100),表示有T组数据。

每组数据先输入一行一个整数N(1<=N<=100),表示位数,接下来一行输入一个N位的不包含前导0的正整数。

Output

每组数据对应一行输出,即调整数字位置后能得到的最小的不包含前导0的数。

Sample Input

3

6

543210

3

123

3

231

Sample Output

102345

123

123

AC代码:

#include<stdio.h>

#include<string.h>

#include<algorithm>

using namespace std; //c++头文件;

int main ()

{

int t;

scanf("%d",&t);

while (t--)

{

int n,i,j;

char a[101];

scanf("%d%s",&n,a); //数字的排序(使用字符数组);

sort (a,a+n); //c++中sort排序;

if(a[0]=='0') //0特殊情况,优先考虑;

{

for(i=1; i<n; i++)

if(a[i]!='0') //0特殊情况,特殊考虑;

{

a[0]=a[i];

a[i]='0'; //不改变顺序,单独调换;

break; //跳出循环;

}

}

printf("%s",a); //输出字符串;

printf("\n");

}

return 0;

}

总结:数字排序问题:

1.数字也是字符,分情况使用字符数组和数组;

2.排序问题,c++sort排序优先考虑;

3.字符数组的使用;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: