我需要找一个最长的升序数组,我是C++新手。

问题描述 投票:-1回答:1

例子:我需要找一个最长的。Array{2,3,4,7,8,9,10}我需要找到最长的一个:答案。{7,8,9,10} 并写出 "The longest=4"

编码

#include <iostream>
#include <iomanip>

using namespace std;

int main()
{
    int x[100],n,k=0;
    cout<<"Introduceti n=";cin>>n;
    cout << "Introduceti elementele tabloului:" << endl;
    for(int i=0;i<n;i++){
        cout<<"n["<<i<<"]=";cin>>x[i];
    }
    cout<<"Elementele tabloului:"<<endl;
    for(int i=0;i<n;i++){
        cout<<x[i]<<setw(5);
    }
    cout<<endl;
    cout<<"Cel mai lung sir de ordonate crescator:"<<endl;
    for(int i=0;i<n;i++){
        if(x[i]+1==x[i+1]|| x[i]-1==x[i-1]){
                cout<<x[i]<<setw(5);
                k++;
        }
    }
    cout<<endl;
    cout<<"Lungimea este:"<<k;
    return 0;
}

这是我试过的,但我不知道如何确定所有可能的线长。

c++
1个回答
0
投票

下面的代码对我来说是可行的。

#include <iostream>

using namespace std;

int main() {
    int array[] = {2, 3, 4, 7, 8, 9, 10, 12, 13};

    //get the size of the array
    int size = sizeof(array) / sizeof(array[0]);

    //stores the number of the current streak
    int longest = 1;

    //stores the biggest streak
    int biggest = 1;

    for(int i = 1; i <= size; i++) {
        if(array[i] - array[i - 1] == 1) {
            longest ++;
        }
        else if(biggest < longest) {
            biggest = longest;
            longest = 1;
        } else
            longest = 1;
    }

    cout << "Longest array: " << biggest << endl;
    return 0;
}

0
投票

经过大量的工作& 思考,我已经编好了你问题的解决方案。请考虑下面的代码。

#include <iostream>

int main(void)
{
    int array[] = {2, 3, 4, 7, 8, 9, 10};
    int size = sizeof(array) / sizeof(array[0]);
    int longest = 1, streak = 1;

    for (int i = 1; i < size; i++) {
        if (array[i] - array[i - 1] == 1) {
            streak++;

            if (longest < streak) {
                longest = streak;
            }
        } else {
            streak = 1;
        }
    }

    std::cout << "Longest array: " << longest << std::endl;

    return 0;
}

上面的程序动态地获取数组的大小 并检查数组的当前迭代器是否等于它的前一个值,如果是,就添加,否则就重置,直到最后一个。你可以添加删除数组,这是完全灵活的。

输出。 Longest array: 4

希望对你有帮助!

© www.soinside.com 2019 - 2024. All rights reserved.