/* 现在有一个数组 我们可以定义数组的子数组 如 数组 1 3 4 2 5 8 7 它的子数组可以是 1 3 4 3 4 2 5 等等 请写一个算法 找一个子数组 这个子数组递增不减少 并且是满足递增不减的最长子数组 */ #include <iostream> #include <cstdlib> #include <ctime> using namespace std; template<typename T> void init(T array[], int len) { srand((unsigned int)(time(NULL))); for(int i=0; i<len; i++) { array[i] = rand() % 10 - 5; } } template<typename T> void print_array(T array[], int len) { for(int i=0; i<len; i++) { cout<<array[i]<<" "; } cout<<endl; } template<typename T> void find_sub_array(T array[], int len) { int ret = (len > 1); if( ret ) { int sum = 1; int cur = 1; int index = 0; int ci = 0; T ele = array[0]; for(int i=1; i<len; i++) { if( ele <= array[i] ) { cur++; } else { cur = 1; ci = i; } if( cur > sum ) { sum = cur; index = ci; } ele = array[i]; } print_array(array + index, sum); } } int main() { int array[10] = {0}; int max_sum = 0; init(array, 10); print_array(array, 10); find_sub_array(array, 10); return 0; }
时间: 2024-10-13 20:12:15