读书人

阶梯有关问题

发布时间: 2012-04-12 15:46:35 作者: rapoo

阶梯问题
用正整数数列表示一段地方的高度,当一段地方的高度为一个逐一上升的序列是,我们称它为一个阶梯,例如,4、5、6、7、8是一个长度为5的阶梯。现在给定一个正整数数列,找出它最长的阶梯,并输出,如果没有,速出“No Ans”.
这个该怎么编写?


[解决办法]
int maxSteps(int a[], int n)
{
int maxs = 1, cnt=1;

for (int i = 1; i < n; ++i) {
if (a[i] > a[i-1])
++cnt;
else {
maxs = (maxs > cnt) ? maxs : cnt;
cnt = 1;
}
}

maxs = (maxs > cnt) ? maxs : cnt;
return maxs;
}

int main(int argc, char **argv)
{
int a[] = {2,3,1,2,3,4,2,5,6,7};
int m = maxSteps(a, sizeof(a)/sizeof(a[0]));

if (m > 1)
cout << m << endl;
else
cout << "No Ans.\n";

return 0;
}
[解决办法]

C/C++ code
#include <iostream>using namespace std;#define LENGTH 10int main(){    int data[LENGTH] = {0,1,2,4,5,6,7,8,10,11};    int maxlen = 1;    int curlen = 1;    for(int i = 0;i < LENGTH;i++)    {        if(data[i] == data[i + 1] - 1 && i != LENGTH - 1)        {            ++curlen;        }        else        {            if(curlen > maxlen)            {                maxlen = curlen;                curlen = 1;            }        }    }    if(maxlen != 1)    {        cout << "maxlen is " << maxlen << endl;     }    else    {        cout << "no ans" << endl;    }    cin.get();    return 0;    } 

读书人网 >C++

热点推荐