码迷,mamicode.com
首页 > 其他好文 > 详细

C笔试题(二)

时间:2015-01-04 13:18:05      阅读:155      评论:0      收藏:0      [点我收藏+]

标签:

/*
现在有一个数组 我们可以定义数组的子数组

如 数组 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;
}

 

C笔试题(二)

标签:

原文地址:http://www.cnblogs.com/CoderTian/p/4200781.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!