zoukankan      html  css  js  c++  java
  • 九度oj 题目1190:大整数排序

    题目1190:大整数排序

    时间限制:1 秒

    内存限制:32 兆

    特殊判题:

    提交:4142

    解决:1867

    题目描述:

    对N个长度最长可达到1000的数进行排序。

    输入:

    输入第一行为一个整数N,(1<=N<=100)。
    接下来的N行每行有一个数,数的长度范围为1<=len<=1000。
    每个数都是一个正数,并且保证不包含前缀零。

    输出:

    可能有多组测试数据,对于每组数据,将给出的N个数从小到大进行排序,输出排序后的结果,每个数占一行。

    样例输入:
    3
    11111111111111111111111111111
    2222222222222222222222222222222222
    33333333
    样例输出:
    33333333
    11111111111111111111111111111
    2222222222222222222222222222222222
    分析:将每个大整数看成字符串,如果长度不同,则按长度从小到大排序,否则按字典序排序。(直接按字典序排序不行,如例子,
    回先输出1开头的。)
     1 #include <iostream>
     2 #include <algorithm>
     3 #include <string>
     4 #include <vector>
     5 using namespace std;
     6 bool cmp(string a, string b){
     7     int len_a = a.length();
     8     int len_b = b.length();
     9     if(len_a != len_b)
    10         return len_a < len_b;
    11     else
    12         return a < b;
    13 }
    14 
    15 int main(){
    16     int n;
    17     string s;
    18     vector<string> v;
    19     while(cin >> n){
    20         v.clear();
    21         for(int i = 0; i < n; i++){
    22             cin >> s;
    23             v.push_back(s);
    24         }
    25         sort(v.begin(), v.end(), cmp);
    26         for(int i = 0; i < n; i++){
    27             cout << v[i] << endl;
    28         }
    29     }
    30     //system("pause");
    31     return 0;
    32 }


  • 相关阅读:
    【数据结构(C语言版)系列三】 队列
    【数据结构(C语言版)系列二】 栈
    【数据结构(C语言版)系列一】 线性表
    [转]Boosting
    吴恩达机器学习笔记
    C语言之图像旋转
    DP【洛谷P4290】 [HAOI2008]玩具取名
    背包 DP【洛谷P4158】 [SCOI2009]粉刷匠
    最短路+状压DP【洛谷P3489】 [POI2009]WIE-Hexer
    模板 Trie树
  • 原文地址:https://www.cnblogs.com/qinduanyinghua/p/6496791.html
Copyright © 2011-2022 走看看