这么水的题,还是从某珂那里知道的,方法不解释,提醒是跟合并排序里面的环节有关(算法导论前面有讲)。 #include<stdio.h> int main(void) { int a[100001]; int b[100001]; int n,sum1,sum,sum2,i,j; scanf("%d",&n); while(n--) { scanf("%d",&sum1); for( i = 0 ; i < sum1 ; i++ ) scanf("%d",&a[i]); scanf("%d",&sum2); for( i = 0 ; i < sum2 ; i++ ) scanf("%d",&b[i]);//以上是输入部分 sum = 0; for(i = 0,j = 0;i<sum1&&j<sum2;) { if(a[i] == b[j]) { sum++; i++; j++; } a[i] > b[j] ? j++ : i++; }//哪个小哪个下标后移一位 printf("%d/n",sum); } return 0; }