[HPU] 1075: KACA的数字排序 [排序][水题]
2017-03-04 12:02
309 查看
题目描述
PIPA想让KACA给一串数进行排序。
KACA表示这是个简单的问题,然而当他看到这些数字后,顿时懵逼了。只见各种1234567890987654321……都是非常巨大的数字,但在他思考之后,还是选择接下了这个任务。
输入
第一行是一个整数TT ( 1≤T≤1001≤T≤100 ),代表有TT组测试数据。
每组数据第一行是一个整数nn ( 1≤n≤1001≤n≤100 ),代表有nn个数字。
下面有n行,每行有一个整数xx ( 0≤|x|≤101000≤|x|≤10100 )。
输出
对于每组测试数据,输出从小到大排序后的结果。
每行输出一个数字。
样例输入
1
3
123
345
234
样例输出
123
234
345
PIPA想让KACA给一串数进行排序。
KACA表示这是个简单的问题,然而当他看到这些数字后,顿时懵逼了。只见各种1234567890987654321……都是非常巨大的数字,但在他思考之后,还是选择接下了这个任务。
输入
第一行是一个整数TT ( 1≤T≤1001≤T≤100 ),代表有TT组测试数据。
每组数据第一行是一个整数nn ( 1≤n≤1001≤n≤100 ),代表有nn个数字。
下面有n行,每行有一个整数xx ( 0≤|x|≤101000≤|x|≤10100 )。
输出
对于每组测试数据,输出从小到大排序后的结果。
每行输出一个数字。
样例输入
1
3
123
345
234
样例输出
123
234
345
#include<cstdio> #include<string.h> #include<queue> #include<vector> #include<algorithm> #define INF 0x3f3f3f3f #define MAX_N 105 using namespace std; char s[MAX_N][MAX_N]; int par[MAX_N]; bool cmp(int x,int y){ int lenx=strlen(s[x]),leny=strlen(s[y]); if(s[x][0]=='-'&&s[y][0]=='-'){ if(lenx==leny) return strcmp(s[x],s[y])>0; else return lenx>leny; } else if(s[x][0]=='-') return true; else if(s[y][0]=='-') return false; if(lenx==leny) return strcmp(s[x],s[y])<0; else return lenx<leny; } int main() { int T,n; scanf("%d",&T); while(T--){ scanf("%d",&n); for(int i=0;i<n;i++) scanf("%s",s[i]); for(int i=0;i<n;i++) par[i]=i; sort(par,par+n,cmp); for(int i=0;i<n;i++) puts(s[par[i]]); } return 0; }
相关文章推荐
- hpuoj 【1289】排序求和【水题】&&【sort】
- BToj 1031问题 B: KACA的数字排序 【大数比较--结构体sort && java大数比较】
- [MySQL] 分组排序取前N条记录以及生成自动数字序列,类似group by后 limit
- 面试题38_数字在排序数组中出现的次数
- 数字在排序数组中出现的次数
- hdu 1031 排序水题
- LintCode【简单】101. 删除排序数组中的重复数字 II。代码及思路
- 利用指针对两个数字进行排序
- 在排序数组中,找出给定数字的出现次数
- 数字在排序数组中出现的次数
- 在排序数组中查找和为给定值的两个数字
- 用冒泡法对任意十个数字按由小到大的顺序排序
- 剑指offer:(38)知识迁移 :数字在排序数组中出现的次数
- 数字在排序数组中出现的次数
- fzu 2089 数字游戏(水题,模拟)
- 数字在排序数组中出现的次数
- MySQL关于字符串中数字排序的问题分析
- oracle中数字排序问题
- 剑指offer-面试8:旋转数组的最小数字(查找和排序)
- pat(A) 07-排序1. 排序(水题)