整数因子分解问题--递归--动态规划

 算法实现题

整数因子分解问题 问题描述:

    大于 1 的正整数 n 可以分解为:n=x1*x2*…*xm。

整数因子分解问题--递归--动态规划_第1张图片


实现代码如下:

#include 
#include 

#define MAX 10000

using namespace std;

/*----------递归---整数分解*/
void solve(int m , int * ans)
{
        if(m == 1)
                (*ans)++;
        else{
                for(int i = 2 ; i <= m ; i++)
                        if(m%i == 0)
                                solve(m/i , ans);
        }
}

/*------------------动态规划*/
int a[MAX];
int dp[MAX];
//-------------求全部因子
int ul(int m)
{
        int k = 0 , i;
        for(i = 1 ; i*i < m ; i++){
                if(m%i == 0){
                        a[k++] = i;
                        a[k++] = m/i;
                }
        }
        if(i*i == m)
                a[k++] = i;
        return k;
}

/*---------------求解分解个数*/
void solve_dp(int k)
{
        dp[0] = 1;
        for(int i = 1 ; i < k ; i++){
                dp[i] = 0;
                for(int j = 0 ; j < i ; j++)
                        if(a[i]%a[j] == 0)
                                dp[i] += dp[j];
        }
}

/*-------main()*/
int main()
{
        int m;
        cin>>m;
        int ans = 0;
        solve(m , &ans);
        cout<<"递归求解:"<


你可能感兴趣的:(递归和分治,算法)