zoukankan      html  css  js  c++  java
  • hihoCoder1678 版本号排序

    #1678 : 版本号排序

    时间限制:10000ms
    单点时限:1000ms
    内存限制:256MB

    描述

    小Hi在一家互联网巨头公司实习。他发现由于公司不同的部门实在太多了,导致使用的一些开发工具和软件库的版本非常不统一、五花八门。  

    比如一款工具就有2.96, 3.4.5, 4.8.2, 6.4和7.2几种不同的版本。  

    现在给出了N个版本号,请你帮助小Hi把这些版本号从旧到新排序。  

    版本号格式都是若干由'.'连接起来的非负整数。比较版本号新旧时先主版本号(最左的整数)开始,再比较次版本号(第二个整数),以此类推……。

    例如2.96 < 3.4.5 < 4.8.2 < 4.8.4 < 4.13 < 6.4 < 7.2

    特别的,我们认为NULL小于0,也即1.0 < 1.0.0,4.8.2 < 4.8.2.0。

    输入

    第一行包含一个整数N。 (1 ≤ N ≤ 100)  

    以下N行每行一个版本号。 版本号总长度不超过100,主版本号和每个子版本号的数值不超过100

    输出

    N行,每行一个版本号,从旧到新排列。

    样例输入
    9  
    4.8  
    4.8.2  
    7.2  
    2.96  
    3.4.5  
    1.0  
    2  
    6.4  
    1.0.0
    样例输出
    1.0  
    1.0.0  
    2  
    2.96  
    3.4.5  
    4.8  
    4.8.2  
    6.4  
    7.2


    分析:刚开始直接排序,后来发现不对,考虑12<8.0,
    数据量比较小,直接暴力。

    #include<cstdio>
    #include<algorithm>
    using namespace std;
    struct Node{
        char s[200];
        int num;
        int sum[110];
    }a[20000];
    int cmp(Node A,Node B)
    {
        int n=min(A.num,B.num);
        for(int i=0;i<=n;i++)
        {
            if(A.sum[i]==B.sum[i]) continue;
            else if(A.sum[i]>B.sum[i]) return 0;
            else return 1;
        }
        if(A.num>B.num) return 0;
        return 1;
    }
    int main()
    {
        int N;
        scanf("%d",&N);
        for(int i=0;i<N;i++)
        {
            scanf("%s",a[i].s);
            int j=0,temp=0;
            a[i].num=0;
            while(a[i].s[j])
            {
                if(a[i].s[j]=='.')
                {
                    a[i].sum[a[i].num++]=temp;
                    temp=0;
                }
                else temp=temp*10+a[i].s[j]-'0';
                j++;
            }
            a[i].sum[a[i].num]=temp;
        }
        sort(a,a+N,cmp);
        for(int i=0;i<N;i++)
        printf("%s
    ",a[i].s);
        return 0;
    }
    View Code
  • 相关阅读:
    k8s keepalived haproxy 集群成功
    .Net Core 用 EntityFramework 读取 Oracle
    Fedora CoreOS 安装 非LInux专业国内第一手
    Docker 下的 Keepalived + Haproxy 高可用实现 1 实现结果演示
    第二篇 windows container 微软的原生容器
    第一篇 Windows docker 概述
    测试openLiveWrite写博客
    比特币勒索病毒肆虐,腾讯云安全专家给你支招
    WannaCry 勒索病毒用户处置指南
    pytorch 学习笔记之编写 C 扩展,又涨姿势了
  • 原文地址:https://www.cnblogs.com/ACRykl/p/8231843.html
Copyright © 2011-2022 走看看