日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

POJ2279-Mr. Young's Picture Permutations【线性dp】

發布時間:2023/12/3 编程问答 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 POJ2279-Mr. Young's Picture Permutations【线性dp】 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

正題

題目鏈接:http://poj.org/problem?id=2279


題目大意

有k列,每列人數不同,要求從左到右和從前到后身高都單調遞減,學生高度是1N1~N(人數總和)


解題思路

我們開一個五維數組,然后每次在人少那列填充,按照這總方法,我們進行dp(公式較長,暫不解釋)。


code

#include<cstdio> #include<cstring> #include<vector> using namespace std; int k,n[6]; int main() {while(scanf("%d",&k)){if(!k) break;memset(n,0,sizeof(n));for(int i=1;i<=k;i++){scanf("%d",&n[i]);}long long f[n[1]+1][n[2]+1][n[3]+1][n[4]+1][n[5]+1];memset(f,0,sizeof(f));f[0][0][0][0][0]=1;for(int i1=0;i1<=n[1];i1++)for(int i2=0;i2<=n[2];i2++)for(int i3=0;i3<=n[3];i3++)for(int i4=0;i4<=n[4];i4++)for(int i5=0;i5<=n[5];i5++){if(i1<n[1])f[i1+1][i2][i3][i4][i5]+=f[i1][i2][i3][i4][i5];if(i1>i2 && i2<n[2])f[i1][i2+1][i3][i4][i5]+=f[i1][i2][i3][i4][i5];if(i1>i3 && i2>i3 && i3<n[3])f[i1][i2][i3+1][i4][i5]+=f[i1][i2][i3][i4][i5];if(i1>i4 && i2>i4 && i3>i4 && i4<n[4])f[i1][i2][i3][i4+1][i5]+=f[i1][i2][i3][i4][i5];if(i1>i5 && i2>i5 && i3>i5 && i4>i5 && i5<n[5])f[i1][i2][i3][i4][i5+1]+=f[i1][i2][i3][i4][i5];}printf("%lld\n",f[n[1]][n[2]][n[3]][n[4]][n[5]]);} }

總結

以上是生活随笔為你收集整理的POJ2279-Mr. Young's Picture Permutations【线性dp】的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。