Time Limit: 1000 ms Memory Limit: 65536 KiB
Problem Description
X在最后的几周安心学习,考试有惊无险,so,X和女友就要计划一下放假后的时间了,来一场说走就走的旅行,这是两个人的一致想法,但是究竟去哪里玩,就要好好考虑一下了。
X和他的女友都有一些自己想去的地方,于是X想让大家帮他找一找两个人都想去的地方。
Input
测试案例有多组,每个案例:
第一行输入两个数n,m(n < 100 && m < 100)。X想要去的地方有n个,女友想要去的地方有m个。
之后n行,每行一个字符串(长度小于10)表示X想去的地名。
之后m行,每行一个字符串(长度小于10)表示女友想去的地名。
Output
将在n中和在m中都出现过得字符串输出(字典序)。
如果没有相同的字符串,输出”sad!”(不含引号)。
Sample Input
2 2
aaa
bbb
aaa
bbb
Sample Output
aaa
bbb
Hint
Source
winddreams
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main()
{
char a[100][11],b[100][11],c[100][11],s[11];
int n,m,i,j,k;
while(~scanf("%d%d",&n,&m))
{
for(i=0;i<n;i++) //X想去的地名;
{
scanf("%s",a[i]);
}
for(i=0;i<m;i++) //女友想去的地方;
{
scanf("%s",b[i]);
}
for(k=0,i=0;i<n;i++)
{
for(j=0;j<m;j++)
{
if(strcmp(a[i],b[j])==0) //如果相同,复制到c字符串中;
strcpy(c[k++],a[i]);
}
}
for(i=0;i<k-1;i++) //排序,这里的排序可以用冒泡排序的思想;
{
for(j=0;j<k-1-i;j++)
{
if(strcmp(c[j],c[j+1])>0)
{
strcpy(s,c[j]);
strcpy(c[j],c[j+1]);
strcpy(c[j+1],s);
}
}
}
for(i=0;i<k;i++)
printf("%s\n",c[i]);
if(k==0) //如果k==0,说明没有向c中复制;
printf("sad!");
}
return 0;
}
运行结果:
2 2
aaa
bbb
aaa
bbb
aaa
bbb
^Z
Process returned 0 (0x0) execution time : 7.175 s
Press any key to continue.
1552

被折叠的 条评论
为什么被折叠?



