1.排序R 2.匹配I的数据,并过滤相同的R值
int main()
{
int I[200];
int R[200];
int ISize = 0;
int RSize = 0;
int index = 1;
int result[500];
int Rpre = 0;
scanf("%d", &ISize);
for(int i = 0; i < ISize; i++)
{
scanf("%d", &I[i]);
}
scanf("%d",&RSize);
for(int i = 0; i < RSize; i++)
{
scanf("%d", &R[i]);
}
/* 由小到大排序 */
for(int i = 0; i < RSize; i++)
{
for(int j = i+1; j < RSize; j++)
{
if(R[j] < R[i])
{
int temp = R[i];
R[i] = R[j];
R[j] = temp;
}
}
}
/* 查找满足条件的数据 */
for(int i = 0; i < RSize; i++)
{
int Rdata = R[i];
int num = 0;
/* 相同的R 不再重复查询 */
if(Rdata == Rpre)
{
continue;
}
/* 预留两个位置为 R数值 和匹配I的个数 */
index += 2;
/* 通过取模比较每一位数 */
for(int j = 0; j < ISize; j++)
{
int Idata = I[j];
while(Idata)
{
int flag = 0;
int Imod = Idata % 10;
int Rmod = Rdata % 10;
if(Imod == Rmod)
{
flag = 1;
int Rdiv = Rdata / 10;
int Idiv = Idata / 10;
while(Rdiv)
{
if(Rdiv % 10 != Idiv % 10)
{
flag = 0;
}
Rdiv = Rdiv / 10;
Idiv = Idiv / 10;
}
}
if(flag)
{
// printf("R = %d, I = %d \n", R[i], I[j]);
/* 匹配到数据,存入结果数组 */
num++;
result[index++] = j;
result[index++] = I[j];
break;
}else
{
Idata /= 10;
}
}
}
if(num > 0) //存储R和匹配到的I个数
{
result[index - 2*num - 2] = R[i];
result[index - 2*num -1] = num;
}
else //未匹配到任何一个I,则回退预留的位置
{
index -= 2;
}
Rpre = R[i];
}
if(index > 1)
{
result[0] = index - 1;
}
for(int i = 0; i < index; i++)
{
printf("%d ", result[i]);
}
return 0;
}