数字排序问题(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.字符数组的使用;
给一个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.字符数组的使用;
相关文章推荐
- C语言的缓冲区
- 338. Counting Bits 数字的二进制中1的个数
- c++第5次作业
- C++预处理器
- 字符串的一个小测试
- c++第五次上机实验
- 空心三角形(图形的输出)c语言
- HDU 4417-Super Mario(划分树-二分查找)
- 介绍const
- 山东省第四届ACM大学生程序设计竞赛-Boring Counting(划分树-二分查找)
- C++第五次作业
- C++第5次实验- 教师类
- c/c++中与时间相关的问题
- Contest 2016-5-7 B(HDU 5616)
- C++第五次上机实验
- C++课程上 有关“指针” 的小结
- C++中模板的使用
- C++中模板的使用
- c++上机实验5-项目三
- C++函数指针