整数因子分解问题-递归与dp
Posted nuist__NJUPT
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了整数因子分解问题-递归与dp相关的知识,希望对你有一定的参考价值。
方法1:递归
import java.util.Scanner;
public class IntegerFactor {
static int total = 0;
public static void solve(int n){
if(n == 1){
total ++ ;
}else{
for(int i=2; i<=n; i++){
if(n % i == 0){ //对所有n的因子进行递归搜索
solve(n/i) ;
}
}
}
}
public static void main(String[] args) {
Scanner input = new Scanner(System.in) ;
int n = input.nextInt() ;
solve(n) ;
System.out.println(total);
}
}
方法2:动态规划
import java.util.Scanner;
public class IntegerFactor1 {
/**方程式:dp[i] = dp[j1] + dp[j2] + ...
* 其中j1,j2...为i的因子
*/
public static int f(int n, int [] dp){
for(int i=1; i<=n; i++){
if(i == 1){
dp[i] = 1 ;
}else {
for (int j = 1; j < i; j++) {
if (i % j == 0) {
dp[i] += dp[j];
}
}
}
}
return dp[n] ;
}
public static void main(String[] args) {
Scanner input = new Scanner(System.in) ;
int n = input.nextInt() ;
int [] dp = new int [n+1] ;
System.out.println(f(n, dp));
}
}
以上是关于整数因子分解问题-递归与dp的主要内容,如果未能解决你的问题,请参考以下文章