题解 P2548 【[AHOI2004]智能探险车】

· · 题解

省选题?不可置信。秒掉的第二道省选题

这道题看着很懵逼,什么意思啊,实际上,只要比较每一种类型是否全部相同即可,如有不相同就打出*

代码如下,详见注释:

#include<iostream>
#include<cstdio>
#include<string>
using namespace std;
#define maxn 1007
int n,m;
bool ans[maxn];
string t[maxn],gg;
inline void Init()//输入及预处理
{
    scanf("%d%d",&n,&m);//输入种类和个数
    for(register int i=1;i<=n;i++)
    {
        cin>>gg;
        t[i]=gg;
    }//先每个存储一份作为比较样本
    for(register int i=2;i<=m;i++)
    {
        for(register int j=1;j<=n;j++)
        {
            cin>>gg;
            if(t[j]!=gg)//如果不一样
                ans[j]=1;//答案就为*
        }
    }
}
inline void Work()
{
    for(register int i=1;i<=n;i++)
        if(ans[i])//如果应当为*
            printf("* ");//就输出*
        else
            cout<<t[i]<<" ";//不然就输出样本(都一样)
}
int main()//华丽的主函数
{
    Init();
    Work();
    return 0;
}