zoukankan      html  css  js  c++  java
  • 2019.9.27 自然数的拆分

    题目描述

    给定一个自然数N,要求把N拆分成若干个正整数相加的形式,参与加法运算的数可以重复。求拆分的方案数mod 2147483648的结果。1≤N≤4000。 

    输入
    一个整数n。
    输出

    输出一个数,即所有方案数 
    因为这个数可能非常大,所以你只要输出这个数 mod 2147483648 的余数即可。 

    样例输入
    7
    样例输出
    14
    提示

    7的拆分一共有14种情况 

    7=1+6 

    7=1+1+5 

    7=1+1+1+4 

    7=1+1+1+1+3 

    7=1+1+1+1+1+2 

    7=1+1+1+1+1+1+1 

    7=1+1+1+2+2 

    7=1+1+2+3 

    7=1+2+4 

    7=1+2+2+2 

    7=1+3+3 

    7=2+5 

    7=2+2+3 

    7=3+4 


    简单dp,注意只需要先枚举物品再枚举容量即可。
    #include<iostream>
    #include<cstdio>
    #include<cstring>
    #define int long long
    #define mod 2147483648
    using namespace std;
    int n,dp[100050];
    signed main()
    {
    	scanf("%lld",&n);
    	dp[0]=1;
    	for(int i=1;i<n;i++)
    	{
    		for(int j=i;j<=n;j++)
    		{
    			dp[j]=(dp[j]+dp[j-i])%mod;
    		}
    	}
    	printf("%lld",dp[n]);
    	return 0;
    }
    

      

    /*====年轻人,瞎搞是出不了省一的,这就是现实====*/
  • 相关阅读:
    Rstudio代码的快捷键
    sqlhelper帮助类
    图片上传
    反射获取 obj类 的属性 与对应值
    jquery 操作 动态创建的 元素
    Path类使用
    jquery 小数计算保持精度
    js字符串转成数字
    DateTime.Now.ToString()的各种字符串
    Linq语句 动态组建
  • 原文地址:https://www.cnblogs.com/qxds/p/11599771.html
Copyright © 2011-2022 走看看