内容:已知两个整数数组f[]与g[],它们的元素都已经从小到大排列好,而且两个数组中的元素都各不相同。例如,f[]中有1,3,4,7,9,而g[]中有3,5,7,8,10。试编写程序算出这两个数组之间有多少组相同的元素。就上例而言,f[2]和g[1]为3是一组;f[4]和g[3]为8是一组。所以共有两组。
经过了前两天的编写,我觉得程序不具有代表性,所以我打算以后把核心算法的部分写出函数的形式,这样看起来更直观。
更多精彩内容:http://www.bianceng.cnhttp://www.bianceng.cn/Programming/sjjg/
我的解法:上来没多想,打开vs2013就敲了起来,问题果然很简单,分分钟就超神。。奥,不对就解决了!经过昨天题目的启发,我上了就考虑了时间复杂度的问题,所以今天直接就达到了n的水平,说明我确实是进步了O(∩_∩)O~!
#include <iostream> using namespace std; int _tmain(int argc, _TCHAR* argv[]) { int equals(int f[], int g[],int fLength,int gLength); int Num = 0; int f[5] = { 1, 3, 4, 7, 9 }; int g[5] = { 3, 5, 7, 8, 10 }; Num = equals(f,g,5,5); cout << "两个数组中的等值数目为:"; cout << Num << endl; getchar(); return 0; } int equals(int f[], int g[],int fLength,int gLength) { int Num = 0; int index_f = 0; int index_g = 0; while (index_f < fLength && index_g < gLength) { if (f[index_f] == g[index_g]) { Num++; index_f++; } else if (f[index_f] < g[index_g]) index_f++; else index_g++; } return Num; }
实验结果为:
以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索算法
, 数组
, int
, 元素
, 两个
, 相同
_tmain()
,以便于您获取更多的相关知识。