算法练习:等值数目

内容:已知两个整数数组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()
,以便于您获取更多的相关知识。

时间: 2024-10-26 01:03:44

算法练习:等值数目的相关文章

Flash小游戏-连连看算法大揭密

算法 个题目有些夸张了,因为这个游戏本来是个比较简单的游戏. 不过,这个简单游戏的技术问题是一类游戏如俄罗斯方块,纸牌游戏等制作的基础.通过对这个游戏算法的分析,特别是对检查连线的探讨,大家可以基本掌握这类游戏算法的基本思维方法. 连连看游戏规则很简单,就是点中两个互相匹配并且可以通过不多于两个折点的折线连在一起的方块后,这两个方块就可以消掉.所以,下图的三种情况可以把方块消掉.笔者的游戏中,配对规则是两数相加等于100. 配对的检查比较简单,只要用一个if语句,条件a+b==100就可以检验了

什么是网站优化的“蚁群算法”以及其特点

中介交易 http://www.aliyun.com/zixun/aggregation/6858.html">SEO诊断 淘宝客 云主机 技术大厅 想了解蚁群算法与SEO的关系,我们还是先来看看"蚁群算法"的由来:蚂蚁是地球上最常见.数量最多的昆虫种类之一,常常成群结队地出现在人类的日常生活环境中.这些昆虫的群体生物智能特征,引起了一些学者的注意.意大利学者M.Dorigo,V.Maniezzo等人在观察蚂蚁的觅食习性时发现,蚂蚁总能找到巢穴与食物源之间的最短路径.

算法练习:等值首尾和

内容 假设有一个数组x[],它有n个元素,每一个都大于零:称x[0]+x[1]+...+x[i]为前置和,而x[j]+x[j+1]+...+x[n-1]为后置和.试编写一个程序,求出x[]中有多少组相同的前置和后置和. 例如:x[]的元素是3,6,2,1,4,5,2,于是x[]的前置和有以下7个,即3,9,11,12,16,21,23:后置和则2,7,11,12,14,20,23; 于是11,12,23,这3对就是值相同的前置和与后置和. 我的解法:上来没多想,打开vs2013就敲了起来,问题果

算法:求n*m网格内矩形的数目

一个n*m的网格,求这个网格中矩形的数目. 比如以下2*2网格,总共有9个矩形:4个1*1的矩形,4个1*2的矩形,1个2*2的矩形 算法1:动态规划,假设dp[i][j]表示以第 i 行第 j 列的格子为右下角顶点的矩形数目,那么dp[i][j] = 1 + dp[i-1][j] + dp[i][j-1] – dp[i-1][j-1] , 这里的1表示i ,j 位置的格子自身构成1*1的矩形,之所以减去dp[i-1][j-1], 因为dp[i-1][j] 和 dp[i][j-1] 都包含了dp

算法练习:支配值数目

内容:已知f[]和g[]两个整数数组,元素都已经从小到大排列,试编写程序算出f[]中每一个元素比g[]中每一个元素大的个数的总数.换句话说,f[0]比g[]中多少个元素大.f[1]比g[]中多少个元素大,这些值得总和就是所要求的答案. 例如,如果f[]中有1,3,5,7,9,而g[]中有2,4,6,7,8,比g[0]大的有f[1]~f[4],比g[1]大的有f[2]~f[4],比g[2]大的有f[2]~f[4],比g[3]大的是f[4],比g[4]大的是f[4],因此答案是4+3+3+1+1=1

[算法系列之三十二]1的数目

题目 Given an integer n, count the total number of digit 1 appearing in all non-negative integers less than or equal to n. For example: Given n = 13, Return 6, because digit 1 occurred in the following numbers: 1, 10, 11, 12, 13. 思路一 这个问题看上去并不是一个困难的问题,

独家 | 一文读懂优化算法

一.前言 模拟退火.遗传算法.禁忌搜索.神经网络等在解决全局最优解的问题上有着独到的优点,其中共同特点就是模拟了自然过程.模拟退火思路源于物理学中固体物质的退火过程,遗传算法借鉴了自然界优胜劣汰的进化思想,禁忌搜索模拟了人类有记忆过程的智力过程,神经网络更是直接模拟了人脑.它们之间的联系也非常紧密,比如模拟退火和遗传算法为神经网络提供更优良的学习算法提供了思路.把它们有机地综合在一起,取长补短,性能将更加优良. 这几种智能算法有别于一般的按照图灵机进行精确计算的程序,尤其是人工神经网络,是对计算

数据挖掘十大经典算法(详解)

数据挖掘十大经典算法  一. C4.5  C4.5算法是机器学习算法中的一种分类决策树算法,其核心算法是ID3 算法.   C4.5算法继承了ID3算法的优点,并在以下几方面对ID3算法进行了改进:  1) 用信息增益率来选择属性,克服了用信息增益选择属性时偏向选择取值多的属性的不足:  2) 在树构造过程中进行剪枝:  3) 能够完成对连续属性的离散化处理:  4) 能够对不完整数据进行处理.  C4.5算法有如下优点:产生的分类规则易于理解,准确率较高.其缺点是:在构造树的过程中,需要对数据

c语言-基于C语言,用蚁群算法求最优路径。百度复制粘贴的别来了。。。要求可以直接运行的代码哈

问题描述 基于C语言,用蚁群算法求最优路径.百度复制粘贴的别来了...要求可以直接运行的代码哈 一个人从上海大学出发,经过若干个地点,路线不重复走,最后回到上海大学,找三条优化路线. 上海大学:北纬N31°19′5.86″ 东经E121°23′21.52″ 星雨城:北纬N31°19′46.58″ 东经E121°24′9.29″ 大康公寓:北纬N31°19′18.88″ 东经E121°25′3.98″ 文景楼:北纬N22°35′23.78″ 东经E113°52′50.67″ 大场中学:北纬N31°