题解 | #字符串反转#
数据分类处理
https://www.nowcoder.com/practice/9a763ed59c7243bd8ab706b2da52b7fd?tpId=37&&tqId=21248&rp=1&ru=/ta/huawei&qru=/ta/huawei/question-ranking
#include<stdio.h>
int com(int a,int b);
//a是否包含b,是为1
int com(int a,int b)
{
int i=0,j=0,l,k;
int ii=0,jj=0,kk;
int flag=0;
int m[1000],n[1000];
if (a==b)
return 1;
if(a<b)
return 0;
else{
//a倒着写入m
if(a==0){
m[0]=0;
i=1;
}
while(a)
{
l=a/10;
k=a%10;
m[i]=k;
a=l;
i++;
}
//b倒着存入n
if(b==0){
n[0]=0;
j=1;
}
while(b)
{
l=b/10;
k=b%10;
n[j]=k;
b=l;
j++;
}
//判断是否从属
for(ii=0;ii<i-j+1;ii++){
if(n[0]==m[ii]){
flag=1;
for(jj=0;jj<j;jj++)
{
if(n[jj]!=m[ii+jj]){
flag=0;
break;
}
}
}
if(flag==1)
break;
}
return flag;
}
}
int main()
{
int i,j,k;
int flag;
int w;
int o[1000000],oo=0;
int count=0;
int temp;
int n,n1;
int l[1000000],r[1000000];
while((scanf("%d",&n1))!=EOF)
{
for(i=0;i<n1;i++)
scanf("%d",&l[i]);
scanf("%d",&n);
for(i=0;i<n;i++)
scanf("%d",&r[i]);
//排序r并去重
for(i=0;i<n-1;i++)
for(j=i+1;j<n;j++){
if(r[i]>r[j])
{
temp=r[i];
r[i]=r[j];
r[j]=temp;
}
}
for(i=1;i<n;i++)
if(r[i]==r[i-1]){
for(k=i;k<n-1;k++)
r[k]=r[k+1];
n--;
i--;
}
//开始判断
for(i=0;i<n;i++){
for(j=0;j<n1;j++){
if(com(l[j],r[i])==1){
flag=1;
o[oo]=r[i];
count++;
}
}
for(j=0;j<n1;j++){
if(count!=0){
oo++;
o[oo]=count;
}
count=0;
for(j=0;j<n1;j++){
if(com(l[j],r[i])==1)
{
oo++;
o[oo]=j;
oo++;
o[oo]=l[j];
}
}
}
if(flag==1)
oo++;
flag=0;
}
printf("%d",oo);
for(i=0;i<oo;i++)
printf(" %d",o[i]);
printf("\n");
oo=0;
}
}