例子:我需要找一个最长的。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;
}
这是我试过的,但我不知道如何确定所有可能的线长。
下面的代码对我来说是可行的。
#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;
}
经过大量的工作& 思考,我已经编好了你问题的解决方案。请考虑下面的代码。
#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
希望对你有帮助!