亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

C++語言編程 單調遞增最長子序列

C++語言編程 單調遞增最長子序列

C++
侃侃爾雅 2018-10-29 00:00:50
7-1 單調遞增最長子序列設計一個O(n2)時間的算法,找出由n個數組成的序列的最長單調遞增子序列。輸入格式:輸入有兩行: 第一行:n,代表要輸入的數列的個數 第二行:n個數,數字之間用空格格開輸出格式:最長單調遞增子序列的長度輸入樣例:在這里給出一組輸入。例如:51 3 5 2 9輸出樣例:在這里給出相應的輸出。例如:4
查看完整描述

2 回答

?
函數式編程

TA貢獻1807條經驗 獲得超9個贊

 #include <stdio.h>

#define MAX_N 1000

int dp[MAX_N], a[MAX_N];
int n;

void input()
{
    scanf("%d", &n);
    for(int i = 0; i < n; ++i)
        scanf("%d", &a[i]);
}

int max_(int a, int b)
{
    return a > b ? a : b;
}

void slove()
{
    //注意要res保存結果
    int res = 0;
    for(int i = 0; i < n; ++i)
       {

        for(int j = 0; j < i; ++j)
            if(a[j] < a[i])
                dp[i] = max_(dp[i], dp[j] + 1);

        res = max_(dp[i], res);
       }
    printf("%d\n", res + 1);

}

int main()
{
    input();
    slove();
    return 0;
}



查看完整回答
反對 回復 2018-11-03
  • 2 回答
  • 0 關注
  • 1280 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號