就是运行时间比较长,唉。。。
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int i,j;
long int temp;
/*删除重复项并排序输出排序后的R数组地址和元素个数。*/
int de_repeat_sort(long int R[],int num2)
{
long int dp[num2];
for(i=0;i<num2;i++)
{
for(j=0;j<num2-1;j++)
{
if(R[j]>R[j+1])
{
temp=R[j];
R[j]=R[j+1];
R[j+1]=temp;
}
if(R[j]==R[j+1])
{
R[j+1]=-1;
}
}
}
j=0;
for(i=0;i<num2;i++)
{
if(R[i]!=-1)
{
dp[j]=R[i];
j++;
}
}
num2=j;
j=0;
for(i=0;i<num2;i++)
{
R[i]=dp[i];
j++;
}
return num2;
}
int main()
{
long int I[1000],R[1000];
int num1,num2,num=0,num3=0;
char str_R[30],str_I[30];
while(scanf("%d",&num1)!=EOF)
{
for(i=0;i<num1;i++)
{
scanf("%ld",&I[i]);
}
scanf("%d",&num2);
for(i=0;i<num2;i++)
{
scanf("%ld",&R[i]);
}
num2=de_repeat_sort(R,num2);//排序
/*计算输出的总元素个数。*/
for(i=0;i<num2;i++)
{
sprintf(str_R,"%ld",R[i]);
for(j=0;j<num1;j++)
{
sprintf(str_I,"%ld",I[j]);
if(strstr(str_I,str_R))
{
num=num+2;
num3++;
}
}
if(num3>0)
{
num=num+2;
num3=0;
}
}
printf("%d ",num);//输出总元素个数;
num=0;
/*按要求输出各个满足条件的元素。*/
for(i=0;i<num2;i++)
{
sprintf(str_R,"%ld",R[i]);//整形数据打印成字符型数据;
for(j=0;j<num1;j++)
{
sprintf(str_I,"%ld",I[j]);
if(strstr(str_I,str_R))//字符串是否包含判断;
{
num++;
}
}
if(num>0)
{
printf("%ld %d ",R[i],num);
for(j=0;j<num1;j++)
{
sprintf(str_I,"%ld",I[j]);
if(strstr(str_I,str_R))
{
printf("%d %ld ",j,I[j]);
}
}
num=0;
}
}
printf("\n");
}
}