zoukankan      html  css  js  c++  java
  • 序曲

    1.判断一串从小到大排序数组中的相同元素最多的个数。

    例:

     数组   1,1,2,2,2,2,3,3,3,3,3,6,6,6,6  中做多的元素是3,有5个;(最长平台)

    说明:

    (1)使用的变量越少越好

    (2)只能用一个循环语句

    (3)程序语句越少越好

    #include "stdio.h"
    void main()
    {
       int a[] = {1,1,2,2,2,2,3,3,3,3,3,6,6,6,6};
       int length = 1;

      for(int i = 1; i < 15; i++ )
         if(a[i] == a[ i - length])
         length++;

    printf("%d\n",length);
    }

    2.支配值数目已知f[] 和 g[] 两个从小到大排序好的数组(没有重复的)

     编写程序算出f[] 中的元素比 g[] 中元素达的个数的总和;

    例:f[] ={1,3,5,7,9}; g[] ={2,3,4,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 = 12;

    #include "stdio.h"

    void main()
    {
       int f[5] = {1,3,5,7,9};
       int g[5] = {2,3,4,7,8};

       int m,n,coun;
       coun = m = n = 0; 

      while(m < 5 && n < 5) 
        if(f[m] > g[n]) {
        coun += 5 - m;
        n++;
      }
        else
        m++;
    printf("%d\n",coun);
    }

    3.等值数目

    还是上面的例子,求两数组中相同的对 共有几对?

    #include "stdio.h"
    void main()
    {
    int f[5] = {1,3,5,7,9};
    int g[5] = {2,3,4,7,8};

    int m,n,coun;
    coun = m = n = 0;

    while(m < 5 && n < 5)
       if(f[m] > g[n]) 
         n++;
       else if(f[m] < g[n])
         m++;
       else 
         n++,m++,coun++;

       printf("%d\n",coun);
    }

  • 相关阅读:
    Sunnypig闯三角关
    送给圣诞夜的贺卡
    uva 1592(NEERC 2009 STL)
    uva 297(传递闭包 WF 1996)
    hdu 4190(二分)
    uva 3592 (MST, kruskal)
    uva 11997 (基础数据结构)
    hdu 2680 (Dijkstra)
    hdu 4568(状态压缩dp)
    hdu 4582 (树上的贪心)
  • 原文地址:https://www.cnblogs.com/shaoshao/p/2867667.html
Copyright © 2011-2022 走看看