问题描述:已知两个整数数组f[]与g[],它们的元素都已经从小到大排列好,而且两个数组中的元素都各不相同。例如,f[]中有1,3,4,7,9,而g[]中有3,5,7,8,10。试编写程序算出这两个数组之间有多少组相同的元素。就这个例子而言,f[1]与g[0]是一组,f[3]与g[2]是一组。
我的思路:关键点还是"元素都已经从小到大排列好"。那么,两个数组,一起遍历就可以解决问题。代码如下:
- #include <stdio.h>
-
- int f[]={1,3,4,7,9};
- int g[]={3,5,7,8,10};
- int len_f=sizeof(f)/sizeof(int);
- int len_g=sizeof(g)/sizeof(int);
- int result=0;
-
- //函数原型
- void equal_count();
-
- int main()
- {
- equal_count();
- return 0;
- }
-
- void equal_count()
- {
- int i,j;
- for(i=0,j=0;i<len_f && j<len_g;)
- {
- if(f[i]==g[j])
- {
- printf("f[%d]==g[%d]\n",i,j);
- result++,i++,j++;
- }
- else if(f[i]>g[j])
- j++;
- else
- i++;
- }
- printf("result is: %d\n",result);
- }
如果您觉得我的文章对您有帮助,请顶一下,非常感谢!
阅读(1211) | 评论(0) | 转发(0) |