首页 > 代码库 > nefu 643 teacher Li

nefu 643 teacher Li

题目:大意是说李老师的课堂上有n个学生,给出这n个人名单,今天共来了n-1个人,有一个人没来,给出这n-1个人的名单,来找出没来的那个人。

方法:开始使用map,set都会超时,汗了半天,实在没办法了,看了一下别人的思路,神思路!!大致方法就是把他们n个人的名字加起来,然后在减去n-1个人的名字,剩下的就是没来的那个人的名字。这里需要使用到ASCII码和数字之间通用的属性。

代码:

#include <iostream>
#include <cstdio>
#include <cstring>
using namespace std;

int main()
{
     int i,j,n;
     int s[32],k=1;
     char t[33];
     while(scanf("%d",&n)!=EOF)
     {
         memset(s,0,sizeof(s));
         int len=0;
         for(i=0;i<n;i++)
         {
             scanf("%s",t);
             len=strlen(t);
             for(j=0;j<len;j++)
                s[j]+=t[j];
         }
        for(i=0;i<n-1;i++)
         {
             scanf("%s",t);
             len=strlen(t);
             for(j=0;j<len;j++)
                s[j]-=t[j];
         }
         printf("Scenario #%d\n",k++);
         for(i=0;i<n&&s[i];i++)
          printf("%c",s[i]);
         puts("\n");

     }
    return 0;
}