南陽理工269 VF動態規劃

2021-07-31 13:48:03 字數 677 閱讀 4974

原題不寫了,我是看不懂英文題

題意大概為:1~1000000000之間,各位數字之和等於給定s的數的個數

每行給出乙個數s(1 ≤ s ≤ 81),求出1~10^9內各位數之和與s相等的數的個數。

1、只有s=1時,10^9的係數才能為1,否則就大於10^9;

所以和為1的要單一列出來。

2、如果s!=1:

定義狀態dp[i][j]為前i位各位數之和為j的情況數量:對於前i為的數字之和最大為:9*i,即每一位數字都是9.

i=1、只有一位的數字,因為s>=1,所以最低位只能是1-9 其中的乙個數字,

i>1、假設第i位放數字k(則k只能是0~9並且k<=s),若要使第前i位數字之和為j,那麼前i-1位只能放j-k,由此得出動態轉移方程:d[i]][j]=d[i][j]+d[i-1][j-k]。

想法:首先看懂題意,然後分析1到10e9中各位數之和等於m的個數,寫出動態轉移方程:d[i]][j]=d[i][j]+d[i-1][j-k]

注:a【i】【j】儲存1到i位數中各位數之和等於j的個數

**:#include

#include

int a[9][81];

int main()

int m;

while(scanf("%d",&m)!=eof)

}return 0;

}

南陽理工 37《回文字串》 動態規劃

時間限制 3000 ms 記憶體限制 65535 kb 難度 4描述 所謂回文字串,就是乙個字串,從左到右讀和從右到左讀是完全一樣的,比如 aba 當然,我們給你的問題不會再簡單到判斷乙個字串是不是回文字串。現在要求你,給你乙個字串,可在任意位置新增字元,最少再新增幾個字元,可以使這個字串成為回文字...

南陽理工acm 746 整數劃分(四)(動態規劃)

時間限制 1000 ms 記憶體限制 65535 kb 難度 3 描述 問題是我們經常見到的整數劃分,給出兩個整數 n m 要求在 n 中加入m 1 個乘號,將n分成m段,求出這m段的最大乘積 輸入 第一行是乙個整數t,表示有t組測試資料 接下來t行,每行有兩個正整數 n,m 1 n 10 19,0...

南陽理工學院動態規劃專題 回文字串

這個問題使用動態規劃求解,dp i j 表示字串下標為i的字元和下標為j的字元區間內構成回文所需加入的最少的字串。當str i str j 時,則dp i j dp i 1 j 1 當str i str j 時,dp i j min dp i 1 j 1,dp i j 1 1 初始化時候,d i i...