X的旅游计划

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

Output 

aaa
bbb

Hint

#include <iostream>
#include <cstdio>
#include <cstring>
#include <string>
#include <algorithm>
#include <stdio.h>
#include <vector>
using namespace std;
//1.定义三个二维数组,定义m,n两个整型量
//2.先输入str1数组,在输入str2数组
//3.将str1中的每一行数组,去str2中检索一遍,比较字符串相同(不能用==号)的就拷贝进(不能用=号赋值)共同str3数组cnt++
//4.如果数组中有值,那么就进行数组排序,输出字典序列
//4.如果cnt==0最后,那么就输出sad

char str1[101][11],str2[101][11],str3[101][11];
int m,n;
int main()
{
    int cnt;
    while(cin>>m>>n)
    {
        cnt=0;
        for(int i=0; i<m; i++)
        {
            cin>>str1[i];
        }




        for(int j=0; j<n; j++)
        {
            cin>>str2[j];
        }




        for(int i=0; i<m; i++)
        {
            for(int k=0; k<n; k++)
            {
                if(strcmp(str1[i],str2[k])==0)
                {
                    strcpy(str3[cnt++],str1[i]);
                    break;
                }
            }
        }


        for(int i=0; i<cnt-1; i++)
        {
            for (int j=i; j<cnt; j++)
            {
                if(strcmp(str3[i],str3[j])>0)
                {
                    swap(str3[i],str3[j]);
                }
            }
        }


        for(int i=0; i<cnt; i++)
        {
            printf("%s\n",str3[i]);
        }

        if(cnt==0)
        {
            printf("sad!\n");
        }
    }
    return 0;
}

错误的地方有三处:

①字符串之间比较,判断是否相等用strcmp不能用==

②字符串相互赋值,不能用=,用strcpy

③多组输入老犯错

おすすめ

転載: blog.csdn.net/m0_52226803/article/details/121042886