题目:大意是说李老师的课堂上有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;
}