1259:【例9.3】求最长不下降序列
生活随笔
收集整理的這篇文章主要介紹了
1259:【例9.3】求最长不下降序列
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
http://ybt.ssoier.cn:8088/problem_show.php?pid=1259
/* 【例3】求最長不下降序列03_AC 1259:【例9.3】求最長不下降序列 http://ybt.ssoier.cn:8088/problem_show.php?pid=1259 */ #include<bits/stdc++.h> using namespace std; const int maxn=1005; int a[maxn],i,j,k,maxx,c[maxn],num[maxn],b[maxn];//數組b記錄從i位置到n的最長不下降序列長度,//數組c表示從i位置開始最長不下降序列的下一個位置,//若c[i]==0,則表示后面沒有鏈接項。 int main() {//freopen("x.in","r",stdin);//freopen("x.out","w",stdout);int n;cin>>n;for(i=1;i<=n;i++){//輸入數組,并將b和c初始化cin>>a[i]; b[i]=1;c[i]=0;}//求最長不下降序列for(i=1;i<=n;i++) {maxx=0;k=0;//順推 for(j=1;j<=i-1;j++)if(a[j]<=a[i] && b[j]>maxx){maxx=b[j];k=j;}if(maxx>0){b[i]=maxx+1;c[i]=k;}}//求最長不下降序列最后位置k=1;for(j=1;j<=n;j++) if(b[j]>b[k]) k=j;cout<<"max="<<b[k]<<endl;i=0; //因為不是倒著搜索的,我只能將數組fu給另一個,//然后倒著輸出while(k!=0) {num[i]=a[k];k=c[k];i++;}for(j=i-1;j>=0;j--){cout<<num[j]<<" ";//cout<<"num["<<j<<"]="<<num[j]<<" ";}//fclose(stdin);//fclose(stdout);return 0; } /* 作業: 1.1096:數字統計 http://ybt.ssoier.cn:8088/problem_show.php?pid=10962.1949:【10NOIP普及組】數字統計 http://ybt.ssoier.cn:8088/problem_show.php?pid=19493.1.5編程基礎之循環控制_25求特殊自然數 http://noi.openjudge.cn/ch0105/25/4.1281:最長上升子序列 http://ybt.ssoier.cn:8088/problem_show.php?pid=12815、1285:最大上升子序列和 http://ybt.ssoier.cn:8088/problem_show.php?pid=12856、1288:三角形最佳路徑問題 http://ybt.ssoier.cn:8088/problem_show.php?pid=1288 */?
?
?
?
?
?
?
?
?
?
?
?
總結
以上是生活随笔為你收集整理的1259:【例9.3】求最长不下降序列的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 1.7 编程基础之字符串 32 行程长度
- 下一篇: 第94课 函数的参数 《小学生C++编程