• zju pat 1027


    //题目考察结构体排序,刚开始有一个case超时,
    (1)将输入改为scanf
    (2)修改将string 改为char,C++的string是相对char字符串更加耗时
    (3)然后对于ID比较,先前是用字符串比较函数strcmp比较耗时,修改为整型比较,就很快,最后补齐0即可
    //1028
    #include <iostream>
    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    #include <string>
    #include <vector>
    #include <algorithm>
    using namespace std;
    typedef struct Node
    {
        int ID;
        char Name[20];
        int grade;
    };
    int C;
    bool cmp(Node n1,Node n2)
    {
         if(C==1)
            return n1.ID < n2.ID;
         else if(C == 2)
         {
             if(strcmp(n1.Name,n2.Name)==0)
                return n1.ID < n2.ID ;
            return strcmp(n1.Name,n2.Name)<0;
    
         }
         else
         {
             if(n1.grade == n2.grade)
                return n1.ID < n2.ID;
            return n1.grade <n2.grade;
    
         }
    }
    
    int main()
    {
        int i;
        int N;
        while(scanf("%d %d",&N,&C)!=EOF)
        {
            vector <Node> nlist(N);
            for(i = 0 ;i < N;i++)
            {
                scanf("%d %s %d",&nlist[i].ID,nlist[i].Name,&nlist[i].grade);
            }
            sort(nlist.begin(),nlist.end(),cmp);
            for(i =0;i< N;i++)
            {
                printf("%06d %s %d
    ",nlist[i].ID,nlist[i].Name,nlist[i].grade);
            }
        }
        return 0;
    }
  • 相关阅读:
    自定义指令directive
    angular中的表单验证
    ng-init,ng-controller,ng-model
    Redis执行lua脚本,key不存在的返回值
    消息队列对比
    数据库设计范式
    网络IO模型
    .NET 线程、线程池
    异步和多线程
    Memcache知识点
  • 原文地址:https://www.cnblogs.com/cheng07045406/p/3536118.html
Copyright © 2020-2023  润新知