九度OJ 1190:大整数排序 (大数运算、排序)
来源:互联网 发布:windows 10 安装office 编辑:程序博客网 时间:2024/05/17 05:53
- 题目描述:
对N个长度最长可达到1000的数进行排序。
- 输入:
输入第一行为一个整数N,(1<=N<=100)。
接下来的N行每行有一个数,数的长度范围为1<=len<=1000。
每个数都是一个正数,并且保证不包含前缀零。
- 输出:
可能有多组测试数据,对于每组数据,将给出的N个数从小到大进行排序,输出排序后的结果,每个数占一行。
- 样例输入:
311111111111111111111111111111222222222222222222222222222222222233333333
- 样例输出:
33333333111111111111111111111111111112222222222222222222222222222222222
- 来源:
- 2006年华中科技大学计算机研究生机试真题
思路:
大整数比较。除了本代码,还有一种思路是前缀补零然后按字典序排序。
代码:
#include <stdio.h>#include <string.h>#include <stdlib.h> #define N 100#define M 1000 int cmp(const void *a, const void *b){ char *c = (char *)a; char *d = (char *)b; if (strlen(c) != strlen(d)) return strlen(c) - strlen(d); else { for (int i=0; i<strlen(c); i++) { if (c[i] != d[i]) return c[i] - d[i]; } return 0; }} int main(void){ int n, i; char s[N][M+1]; while (scanf("%d", &n) != EOF) { for (i=0; i<n; i++) scanf("%s", s[i]); qsort(s, n, sizeof(s[0]), cmp); for (i=0; i<n; i++) { printf("%s\n", s[i]); } } return 0;}/************************************************************** Problem: 1190 User: liangrx06 Language: C Result: Accepted Time:10 ms Memory:948 kb****************************************************************/
0 0
- 九度OJ 1190:大整数排序 (大数运算、排序)
- 九度OJ-1190:大整数排序
- 【九度OJ】1190:大整数排序
- 九度OJ--大整数排序
- 【九度OJ】题目1190:大整数排序 解题报告
- 题目1190:大整数排序 九度OJ
- 九度OJ 1125:大整数的因子 (大数运算)
- 九度OJ 1117:整数奇偶排序 (排序)
- 九度-1190 大整数排序
- 九度1190:大整数排序
- 【九度】题目1190:大整数排序
- 九度题目1190:大整数排序
- 九度题目1190:大整数排序
- 九度oj-1117-整数奇偶排序
- 九度OJ 1119:Integer Inquiry(整数相加) (大数运算)
- 九度OJ 1076 N的阶乘 (大整数运算)
- 九度OJ 1202:排序 (排序)
- 九度OJ 1037:Powerful Calculator(强大的计算器) (大整数运算)
- Linux命令大全----系统管理相关命令
- struts2 之配置拦截器使网站页面在session失效后退回到登录页面
- php数组
- 电容滤波半径
- 为Eclipse构建Maven项目
- 九度OJ 1190:大整数排序 (大数运算、排序)
- 相变冷却系统应注意的一些问题
- textView键盘自动弹出
- Xcode 7 支持http请求info.plist设置
- 瀑布流翻页 锁的实现
- glog
- log4j常用配置信息
- Intellij IDEA无法启动:Failed to create JVM:error code -4
- 【Android】Android中使用JNI调用底层C++代码