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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

算法提高 数的划分 动态规划 无序

發布時間:2025/3/12 编程问答 19 豆豆
生活随笔 收集整理的這篇文章主要介紹了 算法提高 数的划分 动态规划 无序 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

?

問題描述

  一個正整數可以劃分為多個正整數的和,比如n=3時:
  3;1+2;1+1+1;
  共有三種劃分方法。
  給出一個正整數,問有多少種劃分方法。

輸入格式

  一個正整數n

輸出格式

  一個正整數,表示劃分方案數

樣例輸入

3

樣例輸出

3

數據規模和約定

  n<=100

?

#include<iostream> using namespace std; int dp[110][110];//dp[i][j]用來表示,數值i分成的數最高不超過j的情況數 int main() {int n;cin>>n;for(int i=0;i<=n;i++){dp[i][1]=1;//拆出來的數不大于1的情況只有一種 dp[0][i]=1;//0只有本身一種情況,因為dp[0][N]=dp[0][0],很玄學,哈哈 }for(int i=1;i<=n;i++)for(int j=1;j<=n;j++){if(j<=i){dp[i][j]=dp[i][j-1]+dp[i-j][j];/*dp[n][m]表示整數 n 的劃分中,每個數不大于 m 的劃分數。則劃分數可以分為兩種情況:a. 劃分中每個數都小于 m, 相當于每個數不大于 m- 1, 故劃分數為 dp[n][m-1].b. 劃分中有一個數為 m. 那就在 n中減去 m , 剩下的就相當于把 n-m 進行劃分, 故劃分數為 dp[n-m][m];*/}else{dp[i][j]=dp[i][i];//如果允許拆出來的最大的數比這個數本身還大,那么最大的數也就是這個數本身 }// cout<<"dp["<<i<<"]["<<j<<"]="<<dp[i][j]<<endl;}cout<<dp[n][n]<<endl;}

另外感謝小伙伴給我的幫助

?

?

?

?

總結

以上是生活随笔為你收集整理的算法提高 数的划分 动态规划 无序的全部內容,希望文章能夠幫你解決所遇到的問題。

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