C语言名题系列:等值数目

  题目:给定两个由递增排序好的数组,找出他们有多少等值对。如f[]:1,2,3,5,7,8和g[]:2,3,7,8有四对相等的值,所以答案为4。

  分析:要写出好的算法还是要充分利用数组已排序好这一特性!因为两个数组都已经排序好!如果f[i]g[j],则将g[j+1]与f[i]比较!否则它们相等,总数累加后,两个数组都向后比较。这样一来,当其中一个数组的元素被访问完时,则得到答案!其实比较的过程是两个数组一上一下,轮流向前推进的过程!
  

  代码及真相在此:

int coincidence_count(int f[], int g[], int m, int n)
{
     int  i,j;
     int  count;
     count = i = j = 0;
     while (i < m && j < n)
          if (f[i] < g[j])
               i++;
          else if (f[i] > g[j])
               j++;
          else
               count++, i++, j++;
     return count;
}




Related posts

此条目发表在 C/C++ 分类目录,贴了 , , , 标签。将固定链接加入收藏夹。

C语言名题系列:等值数目》有 8 条评论

  1. 罗泽阳 说:

    嘿嘿,沙发我搬走喽

  2. 苏扬 说:

    学习笔记? 貌似这个本则笔记不太难

  3. 老兵 说:

    唉 C语言 老兵不懂啊

  4. elvis 说:

    您还真是一日一贴啊~!加油!

  5. 阿吴 说:

    一日一题啊!

  6. evlos 说:

    呵呵,好一个一日一题 ~
    咦?博主链了小邪?小邪是不是没链你?
    去看看,要是没链就给链上,这博客小邪也挺喜欢的说 ~

发表评论

电子邮件地址不会被公开。 必填项已被标记为 *

*

您可以使用这些 HTML 标签和属性: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>