最大整数——解题报告

来源:互联网 发布:修改定位软件 编辑:程序博客网 时间:2024/06/04 19:51

最大整数——解题报告

原题

测试可见洛谷P1107

最大整数(Noip1998)
【问题描述】
设有n个正整数(n≤20),将它们联接成一排,组成一个最大的多位整数。
例如:n=3时,3个整数13,312,343联接成的最大整数为:34331213
又如:n=4时,4个整数7,13,4,246联接成的最大整数为:7424613
【输入格式】
n
n个数
【输出格式】
联接成的多位数
【输入样例】maxnum.in
3
13 312 343
【输出样例】maxnum.out
34331213

算法分析

不必说的,用字符串连接这些数字[(string)+(string)]
先排序,然后一个个加起来
Attention:cmp不要只比较前几位,不然非常容易炸
直接相加后比较
代码如下

#include<bits/stdc++.h>using namespace std;string num[20];int comp(string a,string b){    return ((a+b)>(b+a)? 1:0);} int main(){    int n;   // freopen("maxnum.in","r",stdin);    //freopen("maxnum.out","w",stdout);    cin>>n;    for(int i=0;i<n;i++)        cin>>num[i];    sort(num+0,num+n,comp);    for(int i=0;i<n;i++)        cout<<num[i];    cout<<endl;    fclose(stdin);    fclose(stdout);     return 0;}
原创粉丝点击