zoukankan      html  css  js  c++  java
  • Contest1593

    H 10255 自然数无序拆分

    H 传送门

    题干:

    题目描述
        美羊羊给喜羊羊和沸羊羊出了一道难题,说谁能先做出来,我就奖励给他我自己做的一样礼物。沸羊羊这下可乐了,于是马上答应立刻做出来,喜羊羊见状,当然也不甘示弱,向沸羊羊发起了挑战。
    可是这道题目有一些难度,喜羊羊做了一会儿,见沸羊羊也十分头疼,于是就来请教你。
    题目是这样的:
    把自然数N(N<=100)分解为若干个自然数之和,求出有几种情况。
    如N=5时,有7种情况
    5=1+1+1+1+1
    5=1+1+1+2
    5=1+1+3
    5=1+2+2
    5=1+4
    5=2+3 
    5=5
    怎么样?你要加油帮助喜羊羊哦!
    
    输入
    一个自然数N(N<=100)
    
    输出
    无序拆分的种数。
    
    
    样例输入
    5
    
    样例输出
    7
    View Code

    题解:

      考察知识点:有关计数问题的DP

      我的学习笔记

      求自然数n的无序拆分的种数可以转化成求"n的划分种数"

    AC代码:

     1 #include<iostream>
     2 #include<cstdio>
     3 using namespace std;
     4 const int maxn=100+10;
     5 
     6 int n;
     7 int dp[maxn][maxn];//dp[i][j] : j的i划分方案数
     8 
     9 int main()
    10 {
    11     scanf("%d",&n);
    12     dp[0][0]=1;
    13     for(int j=0;j <= n;++j)
    14         for(int i=1;i <= n;++i)
    15             if(j < i)//当j不足矣划分成i份时
    16                 dp[i][j]=dp[i-1][j];
    17             else//dp[i-1][j] : 含ai=0的划分总方案数,dp[i][j-i] : 不含ai=0的总方案数
    18                 dp[i][j]=dp[i-1][j]+dp[i][j-i];
    19     printf("%d
    ",dp[n][n]);
    20     
    21     return 0;
    22 }
    View Code

    题目来源:2009年慈溪市小学生计算机程序设计比赛

      

  • 相关阅读:
    【Beta】Scrum Meeting 8
    【Beta】Scrum Meeting 7
    【Beta】Scrum Meeting 6
    【Beta】Scrum Meeting 5
    【Beta】Scrum Meeting 4
    【Beta】Scrum Meeting 3
    “北航Clubs”项目汇报
    Alpha阶段展示报告
    Alpha阶段产品功能说明
    Alpha阶段个人贡献分
  • 原文地址:https://www.cnblogs.com/violet-acmer/p/10090415.html
Copyright © 2011-2022 走看看