题解 | #数据分类处理#

数据分类处理

http://www.nowcoder.com/practice/9a763ed59c7243bd8ab706b2da52b7fd

#include<iostream>
#include<vector>
#include<set>
#include<map>
using namespace std;
int main()
{
    int a,b;
    while(cin>>a)
    {
        int c[a];
        for(int i=0;i<a;i++)
        {
            cin>>c[i];
        }
        cin>>b;
        int d;
        set<int>e;
          for(int i=0;i<b;i++)
        {
            cin>>d;
              e.insert(d);
        }
        int f[100][100];
        int v[100];
        for(int i=0;i<a;i++)
        {
           int j=0,m=c[i];
           while(m)
           {
               f[i][j]=m%10;
                 v[i]=j;
               j++;
               m=m/10;
           }
        }
     vector<pair<int, int>>h;
        set<int>u;
      while(e.size()!=0)
      {
       vector<int>w;
          int m=*e.begin(),j=0;
         while(m)
         {
           w.push_back(m%10);
             j++;
             m=m/10;
         }
          for(int i=0;i<a;i++)
          {
              int s=0;
              for(int m=0;m<=v[i]-(j-2);m++)
              {
                  for(int n=0;n<j;n++)
                  {
                  if(f[i][m+n]!=w[n])
                  {
                      break;
                  }
                  else if(f[i][m+n]==w[n]&&n==j-1)
                  {
                  u.insert(*e.begin());
                      h.push_back(pair<int, int>(*e.begin(),i));
                      s=1;
                    break;
                  }
                  }
                  if(s==1)
                  {
                      break;
                  }
              }
          }
           e.erase(*e.begin());
      }
        cout<<h.size()*2+u.size()*2<<' ';
        while(u.size()!=0)
        {
            int t=0;
          
            for(int i=0;i<h.size();i++)
            {
                if(h[i].first==*u.begin())
                {
                    t++;
                }
            }
            cout<<*u.begin()<<' '<<t<<' ';
             for(int i=0;i<h.size();i++)
            {
                if(h[i].first==*u.begin())
                {
                 cout<<h[i].second<<' '<<c[h[i].second]<<' ';
                }
            }
            u.erase(*u.begin());
        }
    }
    return(0);
}
全部评论

相关推荐

MinJerous:虽然我一直说 计算机不怎么卡学历 但是至少得一本
点赞 评论 收藏
分享
nus2201602...:兄弟,你这个简历撕了丢了吧,就是一坨,去找几个项目,理解项目流程,看几遍就是你的了,看看八股就去干了,多看看牛客里别人发出来的简历,对着写,你这写的啥啊,纯一坨
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务