X的旅游计划
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
#include <stdio.h>
#include <string.h>
#include <math.h>
int main()
{
int m,n,i,j;
char a[100][100],b[100][100];
while(~scanf("%d%d",&n,&m))
{
for(i=0;i<n;i++)
scanf("%s",a[i]);
for(i=0;i<m;i++)
scanf("%s",b[i]);
int f=0,t=0;//记住初始化
char c[100][100];
for(i=0;i<n;i++)
{
for(j=0;j<m;j++)
{
if(strcmp(a[i],b[j])==0)//找出相同的字符串
{
f=1;//标记变量
strcpy(c[t++],a[i]);//把字符串复制到新的数组当中去
}
}
}
if(f==1)//如果成立,按照字符典的顺序排序
{
char d[100][100];
for(i=0;i<t-1;i++)//冒泡排序 t的个数减一
{
for(j=0;j<t-1-i;j++)
{
if(strcmp(c[j],c[j+1])>0)
{
strcpy(d[j],c[j]);
strcpy(c[j],c[j+1]);//交换值
strcpy(c[j+1],d[j]);
}
}
}
for(i=0;i<t;i++)
printf("%s\n",c[i]);//不要忘了\n
}
else printf("sad!\n");
}
return 0;
}
这个呢是借鉴的大佬的代码
链接如下
https://blog.csdn.net/zhACMer/article/details/47685941