国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學(xué)院 > 開發(fā)設(shè)計(jì) > 正文

動態(tài)規(guī)劃:最長上升子序與0-1背包問題

2019-11-06 06:27:27
字體:
供稿:網(wǎng)友

問題描述

一個數(shù)的序列bi,當(dāng)b1 < b2 < … < bS的時候,我們稱這個序列是上升的。對于給定的一個序列(a1, a2, …, aN),我們可以得到一些上升的子序列(ai1, ai2, …, aiK),這里1 <= i1 < i2 < … < iK <= N。比如,對于序列(1, 7, 3, 5, 9, 4, 8),有它的一些上升子序列,如(1, 7), (3, 4, 8)等等。這些子序列中最長的長度是4,比如子序列(1, 3, 5, 8). 你的任務(wù),就是對于給定的序列,求出最長上升子序列的長度

代碼片

#include <stdio.h> #define MAX 1000 int seq[MAX+10]; int seqlen[MAX+10]; int main() { int i,j,k,N,max,maxlen=1; //maxlen賦值為1 for(i=1;i<=9;i++) seqlen[i]=1; //seqlen數(shù)組存以第i個數(shù)為終點(diǎn)的最長上升序列 scanf("%d",&N); //輸入長度N for(i=1;i<=N;i++) scanf("%d",&seq[i]); //seq數(shù)組保存序列數(shù)組 for (i=2;i<=N;i++) { max=0; //將max最小化 for (j=1;j<=i-1;j++) { if(seq[j]<seq[i]&&seqlen[j]>max) //在前i-1個序列中,尋找以終點(diǎn)小于seq[i]的最長的子序列,即最優(yōu)子狀態(tài) max=seqlen[j]; } seqlen[i]=max+1; if(seqlen[i]>maxlen) //seqlen中保存的是第i個數(shù)為終點(diǎn)的最長上升序列,找出這個數(shù)組中最大的值即為最優(yōu)序列長度 maxlen=seqlen[i]; }
發(fā)表評論 共有條評論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 馆陶县| 长阳| 景东| 凤阳县| 额敏县| 平南县| 河北省| 敦煌市| 永新县| 赫章县| 中西区| 太仓市| 剑河县| 千阳县| 大竹县| 华容县| 密山市| 杭锦旗| 视频| 涿州市| 稷山县| 布尔津县| 山阳县| 龙南县| 台前县| 天水市| 建平县| 大名县| 平山县| 米泉市| 淳安县| 江源县| 杭锦旗| 唐海县| 清远市| 灵丘县| 太康县| 英超| 法库县| 武义县| 阿巴嘎旗|