已知一个已经从小到大排序的数组,这个数组中的一个平台(Plateau)就是连续的一串值相同的元素,并且这一串元素不能再延伸。例如,再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
>
int main( void )
{
int a[ 10 ] = { 1 , 2 , 2 , 3 , 3 , 3 , 4 , 5 , 5 , 6 },i = 0 ,j = 0 ,k = 0 ,temp = 0 ,num = 1 ,max = 0 ,zh = 0 ;
for (i = 0 ;i <= 9 ;i = j)
for (j = i;j <= 9 ;j ++ )
{
if (a[j] == a[j + 1 ])
{
num ++ ;
temp = j + 1 ;
}
else
{
num = 1 ;
temp = 0 ;
}
if (max <= num)
{
max = num;
zh = temp;
}
}
for (k = 1 ;k <= max;k ++ )
printf( " %d " ,a[zh]);
return 0 ;
}
int main( void )
{
int a[ 10 ] = { 1 , 2 , 2 , 3 , 3 , 3 , 4 , 5 , 5 , 6 },i = 0 ,j = 0 ,k = 0 ,temp = 0 ,num = 1 ,max = 0 ,zh = 0 ;
for (i = 0 ;i <= 9 ;i = j)
for (j = i;j <= 9 ;j ++ )
{
if (a[j] == a[j + 1 ])
{
num ++ ;
temp = j + 1 ;
}
else
{
num = 1 ;
temp = 0 ;
}
if (max <= num)
{
max = num;
zh = temp;
}
}
for (k = 1 ;k <= max;k ++ )
printf( " %d " ,a[zh]);
return 0 ;
}
在VC++6.0环境下编译成功,也可以试试用结构体优化下程序!