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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 综合教程 >内容正文

综合教程

dp算法

發布時間:2024/8/26 综合教程 31 生活家
生活随笔 收集整理的這篇文章主要介紹了 dp算法 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

題目

總時間限制: 200ms 內存限制: 65536kB
描述
將正整數n 表示成一系列正整數之和,n=n1+n2+…+nk, 其中n1>=n2>=…>=nk>=1 ,k>=1 。
正整數n 的這種表示稱為正整數n 的劃分。

輸入
標準的輸入包含若干組測試數據。每組測試數據是一行輸入數據,包括兩個整數N 和 K。
(0 < N <= 50, 0 < K <= N)
輸出
對于每組測試數據,輸出以下三行數據:
第一行: N劃分成K個正整數之和的劃分數目
第二行: N劃分成若干個不同正整數之和的劃分數目
第三行: N劃分成若干個奇正整數之和的劃分數目
樣例輸入
5 2
樣例輸出
2
3
3
提示
第一行: 4+1, 3+2,
第二行: 5,4+1,3+2
第三行: 5,1+1+3, 1+1+1+1+1+1

第一問

這個問題比之前的整數劃分問題多了一個限制條件K,可以把這個問題類比為背包問題,問題轉化為如下:
從[1...N]中選擇K個數,其和為N,并且選數可以重復,這是個典型的動態規劃問題。
那么考慮子問題,從[1...i]中選q個數,其和為j.
令f[i][j][q] 表示子問題的解。
下面考慮邊界條件:從[1...1]中選擇1 個數,其和為1,選法唯一 f[1][1][1] = 1;
接下來考慮狀態轉移:
f[i][j][q] = f[i-1][j][q] + f[i][j - i][q - 1]
f[i-1][j][q]表示第i個數不選,那么要從前i-1個數中選q個,其和為j
f[i][j - i][q-1]表示第i個數選,那么從前i個數中選q-1個,其和為j-i,這里i不取i-1是因為在子問題中還會用到i,即每個數選擇不唯一,
這是區別于一般背包問題的特殊情況。
這樣,解這道題使用三位數組來記錄動態規劃過程就可以了,但是有些動態規劃是可以使用滾動數組來節省空間,這道就可以。
那么假設一個二位數組f[j][q],用一層循環表示從前i個數中選擇,在第i次循環開始執行前,f[j][q]表示從前i-1個數中選q個湊成j,對于f[i][j - i][q-1]
因為在f[i][j][q]之前遍歷到,所以f[j-i][q-1]中的值是第i次循環更新過的值,這樣一來,狀態轉移就可以簡化為:
f[j][q] += f[j-i][q-1]
這部分代碼如下:

dp[0][0] = 1;
for (int i = 1; i <= n; i++)
    for (int j = i; j <= n; j++)
	for (int q = k; q >= 1; q--)
	    dp[j][q] += dp[j - i][q - 1];
printf("%d
", dp[n][k]);

第二問

第二問比之前簡單的整數劃分問題增加了數字不能重復的限制,這表現在狀態轉移方程里邊就是:
設f[i][j]表示從前i個數中湊j,
狀態轉移方程為:
f[i][j] = f[i-1][j-i] + f[i-1][j]
同樣,可以用滾動數組將二維轉化為一維,注意j要從大到小遍歷
代碼:

dp1[0] = 1;
        for (int i = 1; i <= n; i++)
            for (int j = n; j >= i; j--)
                dp1[j] += dp1[j - i];
        printf("%d
", dp1[n]);

第三問

第三問比簡單的整數劃分問題增加了只能選擇正奇數,注意,數字還是可以重復的,這個其實在弄懂了前兩個題之后就很好寫了
直接寫出狀態轉移方程:
f[i][j] = f[i][j - i] + f[i-2][j]
f[1][1] = 1
用滾動數組的話,i取奇數遍歷,j需要從小到大遍歷。
代碼:

dp2[0] = 1;
        for (int i = 1; i <= n; i += 2)
            for (int j = i; j <= n; j++)
                dp2[j] += dp2[j - i];
        printf("%d
", dp2[n]);

整道題代碼:

#include<cstdio>
#include<cstring>
#include<algorithm>
#include<vector>
using namespace std;

typedef long long ll;

const int N = 50 + 5;
int dp[N][N], dp1[N], dp2[N];

int main() {
    for (int n, k; scanf("%d%d", &n, &k) == 2;) {
        memset(dp, 0, sizeof(dp));
        memset(dp1, 0, sizeof(dp1));
        memset(dp2, 0, sizeof(dp2));
        dp[0][0] = 1;
        for (int i = 1; i <= n; i++)
            for (int j = i; j <= n; j++)
                for (int q = k; q >= 1; q--)
                    dp[j][q] += dp[j - i][q - 1];
        printf("%d
", dp[n][k]);
        dp1[0] = 1;
        for (int i = 1; i <= n; i++)
            for (int j = n; j >= i; j--)
                dp1[j] += dp1[j - i];
        printf("%d
", dp1[n]);
        dp2[0] = 1;
        for (int i = 1; i <= n; i += 2)
            for (int j = i; j <= n; j++)
                dp2[j] += dp2[j - i];
        printf("%d
", dp2[n]);
    }
    return 0;
}

代碼參考:https://blog.csdn.net/Nightmare_ak/article/details/94414363

總結

以上是生活随笔為你收集整理的dp算法的全部內容,希望文章能夠幫你解決所遇到的問題。

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

主站蜘蛛池模板: 丁香花高清视频完整电影 | 99riav国产精品| 五月天综合色 | 亚洲成人播放 | 一区二区三区三区在线 | 特级毛片在线 | 在线观看h视频 | 国产一二 | 成人网在线视频 | 暖暖日本在线 | 国产真实乱偷精品视频 | av在线不卡免费看 | 国内成人自拍视频 | 91蜜桃传媒精品久久久一区二区 | 成人涩涩软件 | 日韩欧美国产中文字幕 | 三日本三级少妇三级99 | 成人av网站大全 | 少妇中文字幕 | 成人精品黄段子 | 国产亚洲一区二区三区在线观看 | 熟女人妻视频 | 中国肥胖女人真人毛片 | 国产91久久精品一区二区 | 国产精品wwww | 中文字幕制服丝袜 | 人妻互换一区二区激情偷拍 | 欧美性大交 | 欧美日韩免费一区二区三区 | 91视频在线网站 | 粗大挺进潘金莲身体在线播放 | 国产精品极品白嫩 | 欧美啊v | 人妻精品一区一区三区蜜桃91 | 青草草在线视频 | 国产又粗又长又硬免费视频 | 久久精品7| 亚洲av无码专区在线 | 偷拍综合网 | 欧美成人91 | 国产一级久久 | 国产成人精品aa毛片 | 亚洲免费av在线 | 四虎免费看黄 | 国产一级二级三级在线观看 | 五月天堂色 | 亚洲图片偷拍区 | 亚洲精品乱码久久久久久蜜桃动漫 | 精品在线观看视频 | 亚洲最大的av网站 | free女性xx性老大太 | 韩国成人在线视频 | 久草国产精品视频 | 亚洲成人免费看 | 国产在线欧美 | 亚洲人成色777777精品音频 | 99视频网站 | 超碰在97| 91午夜交换视频 | 一本一道久久a久久精品蜜桃 | 日韩一中文字幕 | 91资源在线播放 | 97在线看| 波多野结衣国产在线 | 中文字幕激情视频 | 欧美综合图片 | 欧美久操| 91桃色视频在线观看 | 免费在线观看你懂的 | 久久一区二区三区视频 | 嫩草伊人久久精品少妇av | 久久字幕| 成人小视频在线观看 | 日韩在线无| 私密视频在线观看 | 日本特级淫片 | 久久天天操 | 美女国产精品 | wwww在线观看 | 日本一区二区三区成人 | 国产xxxx18| 亚洲国产精品尤物yw在线观看 | 亚洲精品高清无码视频 | 国产高清不卡 | 九九在线精品 | 亚洲欧美综合视频 | 亚洲综合第一页 | 日韩视频一二三区 | 爱射网| 免费啪视频 | 天天舔天天舔 | 国产激情对白 | 91调教视频 | 久久成年 | 国产又粗又长 | 97中文在线 | 日韩二三区 | av一区二区三区免费观看 | 中文字幕无码乱人伦 |