Chinaunix首页 | 论坛 | 博客
  • 博客访问: 97600
  • 博文数量: 29
  • 博客积分: 2500
  • 博客等级: 少校
  • 技术积分: 476
  • 用 户 组: 普通用户
  • 注册时间: 2007-12-07 15:10
文章分类

全部博文(29)

文章存档

2011年(1)

2008年(28)

我的朋友

分类: C/C++

2008-08-12 13:34:52

   已知一个从小到大排列的数组,这个数组中的一个平台就是连续的一串值相同的元素,并且这一串元素不能再延伸. 例如,在1,2,2,3,3,3,4,5,5,6中1和2,2和3,3,3和4和5,5和6都是平台. 试编写一个程序,接收一个数组,把这个数组的最长平台找出来.在上面的3,3,3就是最长平台.
 
----------------------------------------------------------------------------------
方法1:
 

    #include <stdio.h>
    int main(void)
    {
        int a[] = {1,1,1,1,2,2,3,3,8,3,4,4,5,6,7,7,7,7,7,8,8,8};
        int max = 1;        //记录当前最长平台长度.
        int value_of_max = a[0];    //当前最长平台的值.
        int now = 1;        //记录现在平台长度.
        int i=0;            //循环变量.
        int n = sizeof(a)/sizeof(int);    //数组长度

        for(i=0; i<n-1; i++)    //循环遍历数组一次
        {
            if(a[i+1] == a[i])    //若下一个元素和当前元素相同
            {
                now += 1;        //当前平台长度加1
                if(i==n-2 && now>max)//倒数第2个元素和倒数第1个元素相同
                {
                    max = now;
                    value_of_max = a[i];
                }
            }
            else
            {
                if(now > max)
                {
                    max = now;
                    value_of_max = a[i];
                }
                now = 1;
            }
        }
        printf("最长平台:%d 长度:%d\n",value_of_max,max);
            
        return 0;
    }

 

方法2:

#include <stdio.h>
int longest_plateau(int x[], int n)
{
     int length = 1; /* plateau length >= 1. */
     int i;

     for (i = 1; i < n; i++)
          if (x[i] == x[i-length])
               length++;
     return length;
}
int main(void)
{
     int x[] = { 3, 4, 4, 7, 8, 9, 9, 9, 9, 10};
     int n = sizeof(x)/sizeof(int);
     int i, longest_plateau(int [], int);

     printf("\nLongest Plateau Computation Program");
     printf("\n===================================");
     printf("\n\nThe Given Array :");
     for (i = 0; i < n; i++)
          printf("%5d", x[i]);
     printf("\n\nLength of the Longest Plateau is %d",
             longest_plateau(x, n));

     return 0;
}

阅读(836) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~