文章

3

粉丝

370

获赞

6

访问

27.4k

头像
用map的做法
P1098 中山大学2018年机试
发布于2021年1月30日 23:13
阅读数 8.8k

细节比较烦,调了好久
关键是要留长的,不能留短的

#include <bits/stdc++.h>
using namespace std;

int main()
{
map<string ,int > m;
int n;
while(cin>>n)
{
    if(n==0)break;
	string s0;
	cin>>s0;
    m[s0]=1;
    n--;

    while(n--)
    {
        string s;
        cin>>s;
        for(map<string ,int >::iterator it=m.begin();it!=m.end();it++)
        {   if(it->second==0)continue;
            string s2=it->first;
            if(s==s2)continue;
            else if(s.length()>s2.length())//下面是保留长的代码串,删去短的
            {
                //cout<<s.find(s2)<<endl;
                if(s.find(s2)==0)
                {
                    m[s2]=0;
                    m[s]=1;
                    break;
                }
                else m[s]=1;
            }
            else
            {  // cout<<s2.find(s)<<endl;
                if(s2.find(s)==0)
                {
                    m[s]=0;
        ...
登录查看完整内容


登录后发布评论

暂无评论,来抢沙发