问题描述:已知一个已经从小到大排序的数组,这个数组中的一个平台就是连续的一串值相同的元素,并且这一串元素不能再延伸。例如,在1,2,2,3,3,3,4,5,5,6中1,2.2,3.3.3,4,5.5,6都是平台。编写一个程序,接收一个数组,把这个数组中最长的平台找出来。在上面的例子中3.3.3就是该数组中最长的平台。
代码如下:
- #include <stdio.h>
- #define MAX 1000
-
- void max_platform_recur(int level);
- int target[]={1,2,2,3,3,3,4,5,5,6};
- int len=sizeof(target)/sizeof(int);
- int distance=1;
- int result[MAX]={0};
-
- int main()
- {
- result[0]=1;
- int i,j;
- max_platform_recur(0);
-
- //打印出最长的平台
- for(i=0;i<len;i++)
- {
- if(result[i]==distance)
- {
- printf("distance: %d\n",distance);
- for(j=0;j<distance;j++)
- printf("%d ",result[i]);
- printf("\n");
- }
- }
- }
-
- void max_platform_recur(int level)
- {
- if(level+distance>=len)
- return ;
- if(target[level+distance]==target[level])
- {
- result[level]=++distance;
- max_platform_recur(level);
- }
- else
- {
- level+=distance;
- max_platform_recur(level);
- }
- }
如果您觉得我的文章对您有帮助,请顶一下,非常感谢!
阅读(1421) | 评论(0) | 转发(0) |