国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

寒假21:整數的拆分

2019-11-08 20:05:58
字體:
來源:轉載
供稿:網友

題目:

給定一個正整數n,求一共有多少種方式將它寫成若干個正整數之和。

例如:n=4,則輸出5.因為4只有如下五種求和方式:4 = 44 = 3 + 14 = 2 + 24 = 2 + 1 + 1

4 = 1 + 1 + 1 + 1

第一種方法,簡單遞歸。n的拆分,太復雜,但是如果我們限制了最多拆成幾個整數之和,就簡單些例如拆成一個整數:4 = 4 一種拆成兩個整數:4 = 3 + 1;4 = 2 + 2 兩種……

遞歸(記憶化):

import java.util.Scanner;public class 整數拆分1 {	static int[][] data;	static int p(int n, int m){		System.out.PRintln(n+"+"+m);		if(n<m)return 0;				if(n==1||m==1||n==m) return 1;				if(n>m){ 			if(data[n][m]==-1)				data[n][m]=p(n-1,m-1)+p(n-m,m);			return data[n][m];		}		return 0;	}		public static void main(String[] args) {				Scanner sc = new Scanner(System.in);		int n = sc.nextInt();		data=new int[n+1][n+1];				for (int i = 0; i < n+1; i++) {			for (int j = 0; j < n+1; j++) {				data[i][j]=-1;			}		}		int result = 0;		for(int i=1; i<=n; i++){			result += p(n, i);		}		System.out.println(result);	}}動態規劃:

import java.util.Scanner;public class 數的拆分dp {	static int[][] dp;	public static void main(String[] args) {				Scanner sc = new Scanner(System.in);		int n = sc.nextInt();		dp=new int[n+1][n+1];		for (int i = 1; i < n+1; i++) {			dp[i][1]=1;			dp[i][i]=1;			for (int j = 1; j < n+1; j++) {				if(i>j){					dp[i][j]=dp[i-1][j-1]+dp[i-j][j];				}			}			for (int j = 1; j < i+1; j++) {				dp[i][n]+=dp[i][j];			}						//打表			for (int j = 0; j < n+1; j++) {				System.out.print(dp[i][j]+",");			}			System.out.println();		}		System.out.println(dp[n][n]/2);	}}


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 横山县| 伊吾县| 莎车县| 临高县| 浑源县| 朝阳区| 乌恰县| 诸城市| 星子县| 封开县| 邵东县| 马边| 汝城县| 谢通门县| 宜州市| 克山县| 湘乡市| 宜城市| 巴东县| 呼和浩特市| 辽阳市| 凤凰县| 香格里拉县| 武威市| 建湖县| 昭通市| 邹平县| 改则县| 迁安市| 高阳县| 黄石市| 泰州市| 平湖市| 辛集市| 彰化市| 阿巴嘎旗| 汉源县| 梨树县| 积石山| 东乡族自治县| 石门县|