zoukankan      html  css  js  c++  java
  • 名字匹配(水题)

    Description

        S公司在招聘新的人才,由于S公司是个大公司,所以来应聘的人非常多。这可难坏了我们的小Q小姐,因为有个人交了两份申请表,这样不得不让小Q每次得看两回申请表,现在小Q小姐想统计出来有多少人交了两份申请表。

        现在我们来简化这个问题,对于该问题有两个字符窜是s1和s2,每个字符窜都包含许多人的名字,不同人的名字用空格隔开,现在让你统计s1和s2,出现相同人名字的个数是多少。

       例如s1=“Alice Bob Jame”

              s2=“Bob MINA”

              则答案是1,因为两窜人名相同的是Bob

    Input

     输入首先包含一个正整数T,表示有T组测试样例;

    然后分别输入字符窜s1和s2(len<100),每个字符窜包含许多个人的名字,名字和名字之间用空格隔开

    可以保证每个人名在每个字符窜中仅仅出现一次

    Output

     对于每组测试数据,用一行输出一个ans,表示有多少个人名字在两窜中都出现了

    Sample Input

    2
    Alice Bob Jame
    Bob MINA
    a b c d
    a b c d
    

    Sample Output

    1
    4
    


    解题思路:水题,将一串字符串按照空格拆分成一个个的单词作为名字,进行名字匹配,只需要遍历两个存储名字的二维数组即可,然而我还是wa了好
    几发,原因是没有想到名字之间可能间隔了不止一个空格。

    上代码:
     1 #include<stdio.h>
     2 #include<string.h>
     3 int main()
     4 {
     5     int n,i,j,k,u,z,m,len1,len2,count;
     6     char a[110],b[110];
     7     char x[110][110]={0},s[110][110]={0};
     8     scanf("%d",&n);
     9     getchar();
    10     while(n--)
    11     {
    12         gets(a);
    13         gets(b);
    14         len1=strlen(a);
    15         len2=strlen(b);
    16         k=0,j=0;
    17         for(i=0; i<=len1; i++)
    18         {
    19             if(a[i]!=' '&&a[i]!='')
    20             {
    21                 x[j][k++]=a[i];
    22             }
    23             else if((a[i]==' '&&a[i+1]!=' ')||(a[i]==''))
    24             {
    25                     x[j][k]='';
    26                     j++;
    27                     k=0;
    28             }
    29         }
    30         u=0,z=0;
    31         for(i=0; i<=len2; i++)
    32         {
    33             if(b[i]!=' '&&b[i]!='')
    34             {
    35                 s[z][u++]=b[i];
    36             }
    37             else if((b[i]==' '&&b[i+1]!=' ')||(b[i]==''))
    38             {
    39                     s[z][u]='';
    40                     z++;
    41                     u=0;
    42             }
    43         }
    44         count=0;
    45         for(i=0; i<j; i++)
    46         {
    47             for(m=0; m<z; m++)
    48             {
    49                 if(strcmp(x[i],s[m])==0)
    50                     count++;
    51             }
    52         }
    53         printf("%d
    ",count);
    54 
    55     }
    56     return 0;
    57 }
    
    
    
    
    
  • 相关阅读:
    hdu4612 无向图中随意加入一条边后使桥的数量最少 / 无向图缩点+求树的直径
    Python 之 安装模块的多种方法
    开源项目Universal Image Loader for Android 说明文档 (1) 简单介绍
    IDEA下使用Jetty进行Debug模式调试
    离线安装Cloudera Manager5.3.4与CDH5.3.4(一)
    让你提前认识软件开发(38):完毕第一个新需求
    Windows App开发之经常使用控件与应用栏
    【剑指Offer学习】【面试题58:二叉树的下一个结点】
    【Win】编写简单的bat文件
    【Linux】MySQL解压版安装及允许远程访问
  • 原文地址:https://www.cnblogs.com/wkfvawl/p/8831078.html
Copyright © 2011-2022 走看看