zoukankan      html  css  js  c++  java
  • [解题报告]List of Conquests

    题目大意

    题目原文:http://uva.onlinejudge.org/external/104/10420.pdf

    背景

    题目的原意是说统计被征服人在哪个国家的数目,并且将国家名称按字母表的顺序进行输出。统计被征服的人在这个国家的数目。

     

    Sample Input

    3
    Spain Donna Elvira
    England Jane Doe
    Spain Donna Anna

    Sample Output

    England 1
    Spain 2

     

    算法:

    还是使用选择冒泡排序。我的代码的基本思路是:

    1:将所有的字符输入。

    2:忽略人名,将属于国家的字符进行再次记录。

    3:将国家名称按字母表顺序排序。

    4:进行对国家名的计数。

    因为自己还是初学者所以代码比较繁琐,以后多学习提高代码的效率。

    代码:这里附上我的代码,你可以去这里提交你的代码验证你的代码是否正确,、

     1 #include<stdio.h>
     2 #include<string.h>
     3 int main(void)
     4 {
     5     char name[2000][80],country[2000][70],temp[70];
     6 
     7     int i,n,k,swap,num[2000];
     8 
     9     while(scanf("%d",&n)!=EOF)
    10     {
    11         getchar();   //吸收输入n时的回车
    12         for(i=0;i<n;i++)
    13         gets(name[i]);
    14 
    15         for(i=0;i<n;i++)
    16         for(k=0;k<80;k++)
    17         {
    18             if(name[i][k]==' ')break;
    19             else
    20             country[i][k]=name[i][k];
    21         }
    22         for(i=0;i<n-1;i++)
    23         {
    24             swap=0;
    25             for(k=0;k<n-i-1;k++)
    26             {
    27                 if(strcmp(country[k],country[k+1])>0)
    28                 {
    29                     swap=1;
    30                     strcpy(temp,country[k]);
    31                     strcpy(country[k],country[k+1]);
    32                     strcpy(country[k+1],temp);
    33                 }
    34 
    35             }
    36             if(!swap)break;
    37         }
    38          for(i=0;i<n;i++)
    39            num[i]=1;
    40 
    41          for(i=0;i<n;i++)
    42         {
    43             if(num[i]==0)continue;
    44             for(k=i+1;k < n;k++)
    45             if(strcmp(country[i],country[k])==0)
    46                {
    47                    num[i]++;
    48                    num[k]=0;
    49                }
    50         }
    51       for(i=0;i<n;i++)
    52        {   if(num[i]!=0)
    53            printf("%s %d\n",country[i],num[i]);
    54        }
    55     }
    56     return 0;
    57 }
  • 相关阅读:
    成员变量、类变量、局部变量的区别
    微服务学习笔记二:Eureka服务注册发现
    微服务学习笔记一:Spring Cloud简介
    Java集合篇六:Map中key值不可重复的测试
    重写Euqals & HashCode
    Java集合篇五:HashMap
    Java集合篇四:Map的基本应用
    Java集合篇三:Vector
    Java集合篇二:LinkList
    Java集合篇一:ArrayList
  • 原文地址:https://www.cnblogs.com/qisong178878915/p/2918885.html
Copyright © 2011-2022 走看看