题解 | #数据分类处理#
数据分类处理
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);
}
#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);
}