题解 | #手串#

手串

https://www.nowcoder.com/practice/0bb1fad52f474bdaa4d7636ca3a98244

#include <iostream>
#include <vector>
#include <map>


using namespace std;

int n,m,c,num_i,kind,sum;
 map<int,int> mymap;
 map<int,int>::iterator it;
void caltimes(vector<vector<int>> fnum)
{
    int index = 0;
    
  
   map<int,int> anmap;
   for(int i =0;i<fnum.size();i++)
   {
       for(int j = 0;j<fnum[i].size();j++)
       {
        int tempv = fnum[i][j];
        it = anmap.find(tempv);
        if(it !=anmap.end())
        {
            anmap[tempv]++;
        }
        else{
            anmap[tempv] = 1;
        }

       }
    
   }

    for(it=anmap.begin();it!=anmap.end();it++)
   {
       if(it->second>1)
       {
           //cout<<it->first<<" up "<<it->second<<endl;
           map<int,int>::iterator ait;
           ait = mymap.find(it->first);
        if(ait !=mymap.end())
        {
            mymap[it->first]++;
        }
        else{
            mymap[it->first] = 1;
        }

       }
   }
   
  
}
int main() {
   cin>>n>>m>>c;

   vector<vector<int>> finnum;
   for(int i =0;i<n;i++)
   {
       int t;
       cin>>t;
       vector<int> stn;
       for(int j =0;j<t;j++)
       {
           int tn;
           cin>>tn;
           stn.push_back(tn);
       }
       finnum.push_back(stn);
   }
   sum = 0;
   for(int i= 0;i<n;i++)
   {
      vector<vector<int>>tempg;
      vector<vector<int>>ltempg;
       for(int j =0;j<m;j++)
       {
          int ith = (i+j)%n;
          vector<int> tv = finnum[ith];
          tempg.push_back(tv);
         
       }
      
       caltimes(tempg);



   }
   
     /*  for(it=mymap.begin();it!=mymap.end();it++)
   {
       if(it->second>1)
       {
           cout<<it->first<<"  "<<it->second<<endl;
           sum++;
       }
   }*/
   sum = mymap.size();
   cout<<sum<<endl;

}

全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务