博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
51Nod 1097 拼成最小的数(字符串的排序)
阅读量:4608 次
发布时间:2019-06-09

本文共 2500 字,大约阅读时间需要 8 分钟。

1 #include 
2 #include
3 #include
4 #include
5 #include
6 7 using namespace std; 8 9 const int MAXN = 1e4 + 10; 10 const int MAXA = 11; 11 12 struct num 13 { 14 char A[MAXA]; // 数据 15 int num; // 值 16 int len; // 长度 17 } Num[MAXN]; 18 19 bool cmp(num a, num b) 20 { 21 // 长度相同则比较大小 22 if (a.len == b.len) 23 { 24 return a.num < b.num; 25 } 26 27 int lenMin = a.len > b.len ? b.len : a.len; 28 29 // 逐位比较 从小到大排 30 for (int i = 0; i < lenMin; i++) 31 { 32 if (a.A[i] != b.A[i]) 33 { 34 return a.A[i] < b.A[i]; 35 } 36 } 37 38 // 一个是另一个的前缀 39 if (a.len > b.len) 40 { 41 int i = 0; 42 while (a.A[lenMin] == a.A[i]) 43 { 44 lenMin++; 45 i++; 46 } 47 if (lenMin == a.len) 48 { 49 return a.A[1] > a.A[0]; 50 } 51 return a.A[lenMin] < a.A[i]; 52 } 53 else 54 { 55 int i = 0; 56 while (b.A[lenMin] == b.A[i]) 57 { 58 lenMin++; 59 i++; 60 } 61 if (lenMin == b.len) 62 { 63 return b.A[1] < b.A[0]; 64 } 65 return !(b.A[lenMin] < b.A[i]); 66 } 67 } 68 69 int main() 70 { 71 72 int N; 73 cin >> N; 74 75 int len = 0; 76 for (int i = 0; i < N; i++) 77 { 78 scanf("%s", Num[i].A); 79 Num[i].num = atoi(Num[i].A); 80 //atoi((string)or(char a[])),将字符串换成整数 81 Num[i].len = strlen(Num[i].A); 82 len += Num[i].len; 83 } 84 sort(Num, Num + N, cmp); 85 int flag = 0; 86 for (int i = 0; i < N; i++) 87 { 88 if (flag + Num[i].len < 1000) 89 { 90 flag += Num[i].len; 91 cout << Num[i].A; 92 } 93 else 94 { 95 for (int j = 0; j < Num[i].len; j++) 96 { 97 cout << Num[i].A[j]; 98 if (++flag == 1000) 99 {100 cout << endl;101 flag = Num[i].len - j - 1;102 printf("%s", Num[i].A + j + 1);103 break;104 }105 }106 }107 }108 cout << endl;109 return 0;110 }

 

转载于:https://www.cnblogs.com/ouyang_wsgwz/p/8722986.html

你可能感兴趣的文章
CLR基础之一---认识CLR [《CLR via C#》读书笔记]
查看>>
HTML(头部,实体,媒体)
查看>>
redis的主从搭建与sentinel高可用服务的搭建
查看>>
单链表的反转
查看>>
排序算法之插入排序
查看>>
读书笔记 - 《经度》
查看>>
暴力 ZOJ 1403 Safecracker
查看>>
POJ3164 Command Network(最小树形图)
查看>>
PHP程序员的技术成长规划
查看>>
Jquery淘宝动画
查看>>
【技巧】外链地址网站标志图标API应用
查看>>
二叉树的建立和遍历
查看>>
Python Django rest framework
查看>>
selenium操作浏览器
查看>>
ioctl函数的使用之查看终端屏幕大小
查看>>
Beta阶段——第1篇 Scrum 冲刺博客
查看>>
python学习之数据类型—字符串string
查看>>
ajax
查看>>
jQuery
查看>>
Django之Pycharm连接及简单操作数据库
查看>>