问题描述:已知两个整数数组f[]与g[],它们的元素都已经从小到大排列好,而且两个数组中的元素都各不相同。例如,f[]中有1,3,4,7,9,而g[]中有3,5,7,8,10。试编写程序算出这两个数组之间有多少组相同的元素。就这个例子而言,f[1]与g[0]是一组,f[3]与g[2]是一组。
我的思路:关键点还是"元素都已经从小到大排列好"。那么,两个数组,一起遍历就可以解决问题。代码如下:
1 #include <stdio.h> 2 3 int f[]={1,3,4,7,9}; 4 int g[]={3,5,7,8,10}; 5 int len_f=sizeof(f)/sizeof(int); 6 int len_g=sizeof(g)/sizeof(int); 7 int result=0; 8 9 //函数原型 10 void equal_count(); 11 12 int main() 13 { 14 equal_count(); 15 return 0; 16 } 17 18 void equal_count() 19 { 20 int i,j; 21 for(i=0,j=0;i<len_f && j<len_g;) 22 { 23 if(f[i]==g[j]) 24 { 25 printf("f[%d]==g[%d]\n",i,j); 26 result++,i++,j++; 27 } 28 else if(f[i]>g[j]) 29 j++; 30 else 31 i++; 32 } 33 printf("result is: %d\n",result); 34 }
如果您觉得我的文章对您有帮助,请推荐一下,非常感谢!