最小排列数
来源:互联网 发布:linux系统网络配置文件 编辑:程序博客网 时间:2024/06/04 19:01
题目描述:
输入一个正整数数组,将它们连接起来排成一个数,输出能排出的所有数字中最小的一个。例如输入数组{32, 321},则输出这两个能排成的最小数字32132。请给出解决问题的算法,并证明该算法。
具体代码:
#include<vector>#include<iostream>#include<cstring>using namespace std;bool cmp (const int a,const int b); <span style="white-space:pre"></span>//声明int main(){ vector <int> num; int n; cin>>n;<span style="white-space:pre"></span>//输入数组的大小 int d; while(n--){cin>>d;num.push_back(d);}//输入每个数 sort(num.begin(),num.end(),cmp);<span style="white-space:pre"></span>//调用sort函数排序 char a[100]; char b[1000]="\0";<span style="white-space:pre"></span>//用以储存最终结果 for(int i=0;i<num.size();i++) {itoa(num[i],a,10); strcat(b,a); cout<<a<<" "; } cout<<'\n'; cout<<b<<endl; return 0;}bool cmp (const int a,const int b){ char c1[100],c2[100]; itoa(a,c1,10); itoa(b,c2,10); for(int i=0,j=0;c1[i]!='\0'||c2[i]!='\0';i++,j++){ if(c1[i]=='\0'&&c2[j]!='\0')i=0; if(c1[i]!='\0'&&c2[j]=='\0')j=0; if(c1[i]!=c2[j]){return(c1[i]<c2[j]);} } return false;}
0 0
- 数据排列,最小排列数
- 最小排列数
- 最小排列数
- 把数组排列成最小的数
- 把数组排列成最小的数
- [剑指offer]把数组排列成最小的数
- 剑指offer30--将数组排列成最小的数
- 将数组中的元素排列成一个最小的数
- 剑指offer-把数组排列成最小的数
- 面试OR笔试17——最小排列数
- 排列数
- 排列数
- 排列数
- 剑指Offer(33)求数组排列出来的最小数
- 【有趣的面试算法题】之六 把正数集中的数排列成一个最小的数,最高位升序排列就好
- 排列数与组合数
- 一组数所有排列
- 字符串排列数
- Java 批量插入数据库(MySQL)数据
- FLASH 之 AMF 格式
- Java构造器
- yii ajaxLink和ajaxButton
- java中级理论资料整理复习
- 最小排列数
- 自定义一个简单的可以加载网络图片的ImageView
- 提交代码, 经常出现工作副本“项目”有未提交的更改 The working copy "Project" has uncommitted changes.
- Oracle将字符串(例:69.05%)转换为数字
- String 用法 C++
- Word Break II
- 查找库中某个表的字段情况
- Can't locate File/Copy/Recursive.pm in @INC (@INC contains:
- HDU - 3065 病毒侵袭持续中