/* 可以采用动态规划,j从1到n-1,如果a[j]>a[i],那么i=j;temp表示a[j]所在的子序列的递增值,max表示已有的子序列长度的最大值。a,b分别表示递增子序列的第一个和最后一个元素在a中的位置,他们值只有在max值发生变化时才变化。 */ #include <iostream> #include <vector> using namespace std; //最大递增子序列 void func(int a[],int n){ int i =0,j =1; int temp =1; int max=1; int f,b;//当前递增序列的第一个和最后一个元素 int c,d;//最终的第一个和最后一个 for(;j<n;j++){ if(a[j]<=a[j-1]){ temp = j-1-i+1; f =i; b =j-1; i = j; } if(max <temp){ max = temp; c =f; d = b; } } cout << max; for(;c<=d;c++) cout << a[c]; } int main() { int a[] ={5,2,3,6,7,1,0}; func(a,7); return 0; }
数组最大子序列
最新推荐文章于 2023-05-16 23:58:53 发布