小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

最長(zhǎng)非遞增子集

 saxue000 2010-08-30

#include<stdio.h>
#define NUM 10
int a[NUM];


int b[NUM];//存放以a[i](0<=i<=a.length-1)為最后元素的最大遞減子串的長(zhǎng)度。

int k;//存放最大遞減子串最后一個(gè)元素的下標(biāo)

//求出b[i]中最大的值(即是最大遞減子串的長(zhǎng)度),并將其下標(biāo)存在k中
int Max() {
    int temp = 0;
    for (int i = 0; i < NUM; i++) {
        if (b[i] > temp) {
            temp = b[i];
            k = i;
        }
    }
    return temp;
}

// 以a[i](0<=i<=a.length-1)為最后元素的最大遞增子串的長(zhǎng)度存到b[i]中
int Lis() {
    b[0] = 1;//以a[0]為最后元素的子串只有a[0],所以長(zhǎng)度為1.
    int k;
    for (int i = 1; i < NUM; i++) {
        k = 0;
        for (int j = 0; j < i; j++) {
            if (a[j] >= a[i] && k < b[j]) {
            //比較所有小于a[i]并位于a[i]前面的最大子串的長(zhǎng)度。比如6,2,5,3,那么以3結(jié)尾的最大子串長(zhǎng)度
            //等于:max{(大于3的元素有5,6)5的最大子串長(zhǎng)度,6的最大子串長(zhǎng)度}+1;
                k = b[j];
            }
        }
        b[i] = k + 1; 
    }
    return Max();
}

//從小到大輸出遞減子串
void print(int index){
    printf("%d ",a[index]);  
    for (int i = 0; i < index; i++) {
        if (b[i] == b[index] - 1 && a[i] >= a[index]) {
            print(i);
            break;
        }
    }
}

void main(){

for(int i = 0; i < NUM; i++)

scanf("%d",&a[i]);


    printf("最大非遞增子串的長(zhǎng)度為:%d\n",Lis());
    printf("最大遞增子串從小到大輸出為:\n");
    print(k);
}

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多