当前位置:网站首页>1038 Recover the Smallest Number
1038 Recover the Smallest Number
2022-07-03 00:57:00 【Brosto_ Cloud】
Given a collection of number segments, you are supposed to recover the smallest number from them. For example, given { 32, 321, 3214, 0229, 87 }, we can recover many numbers such like 32-321-3214-0229-87 or 0229-32-87-321-3214 with respect to different orders of combinations of these segments, and the smallest number is 0229-321-3214-32-87.
Input Specification:
Each input file contains one test case. Each case gives a positive integer N (≤104) followed by N number segments. Each segment contains a non-negative integer of no more than 8 digits. All the numbers in a line are separated by a space.
Output Specification:
For each test case, print the smallest number in one line. Notice that the first digit must not be zero.
Sample Input:
5 32 321 3214 0229 87
Sample Output:
22932132143287
Custom sort function :
When two strings are not prefixed by one and the other , Sort directly in ascending order ;
When one is the prefix of another : Take the first character after the prefix of a long string ( That is, when the short string length is length when , Take the long string s[length]) Compare it with the first character of the short string , Put the smaller one in front ;
This ensures that the order between each two strings must be the smaller of the two permutations .
After sorting, the answer string is formed in a new order , Take care to remove leading zeros , Note that the answer is 0 The situation of .
#include <iostream>
#include <string>
#include <algorithm>
using namespace std;
string a[10010];
bool cmp(string s1, string s2) {
int length = min(s1.size(), s2.size());
for (int i = 0; i < length; i++) {
if (s1[i] != s2[i]) {
return s1 < s2;
}
}
if (s1.size() < s2.size()) {
if (s2[length] > s1[0]) {
return true;
} else {
return false;
}
} else {
if (s1[length] > s2[0]) {
return false;
} else {
return true;
}
}
}
int main() {
int n;
cin >> n;
for (int i = 0; i < n; i++) {
cin >> a[i];
}
sort(a, a + n, cmp);
bool flag = 0;
string ans = "";
for (int i = 0; i < n; i++) {
ans += a[i];
}
for (int i = 0; i < ans.size(); i++) {
if (ans[i] != '0') {
flag = 1;
}
if (flag) {
cout << ans[i];
}
}
if (flag == 0) {
cout << 0;
}
return 0;
}
边栏推荐
- 指针初阶(基础)
- 【AutoSAR 二 AppL概述】
- 测试右移:线上质量监控 ELK 实战
- Cordova plugin device obtains the device information plug-in, which causes Huawei to fail the audit
- Deep analysis of data storage in memory
- Machine learning: numpy version linear regression predicts Boston house prices
- Initial order of pointer (basic)
- 深度剖析数据在内存中的存储
- Infrared thermography temperature detection system based on arm rk3568
- Use Jenkins II job
猜你喜欢
Vulkan-实践第一弹
Test shift right: Elk practice of online quality monitoring
Leetcode-2280: represents the minimum number of line segments of a line graph
瑞萨RZ/G2L 处理器简介|框架图|功耗|原理图及硬件设计指南
First hand evaluation of Reza electronics rz/g2l development board
数据分析思维分析犯法和业务知识——分析方法(一)
1.12 - Instructions
[AUTOSAR eight OS]
【AutoSAR 六 描述文件】
Shell implements basic file operations (cutting, sorting, and de duplication)
随机推荐
University of Toronto: Anthony coach | the conditions of deep reinforcement learning can induce dynamic risk measurement
In the first half of 2022, there are 10 worth seeing, and each sentence can bring you strength!
Hdu3507 (slope DP entry)
[overview of AUTOSAR four BSW]
Illustrated network: what is virtual router redundancy protocol VRRP?
数组与集合性能比较
antv x6节点拖拽到画布上后的回调事件(踩大坑记录)
数学建模之线性规划(含MATLAB代码)
Nacos+openfeign error reporting solution
数据分析思维分析犯法和业务知识——分析方法(一)
【AutoSAR 七 工具链简介】
Leetcode-224: basic calculator
465. 最优账单平衡 DFS 回溯
Cordova plugin device obtains the device information plug-in, which causes Huawei to fail the audit
【AutoSAR 十一 通信相关机制】
使用jenkins之二Job
全志A40i/T3如何通过SPI转CAN
文件操作IO-Part2
Extension of flutter
Shell 实现文件基本操作(sed-编辑、awk-匹配)