zoukankan      html  css  js  c++  java
  • 数的划分(信息学奥赛一本通 1304 洛谷 1025)

    题意:把n分成k份,有多少种不同的方法。

    当n小的时候深搜是0k的。(6<=n<=200)

    所以说要使用动态规划 状态转移方程 ans[k][n]表示把n分成k份的方案数。

    ans[0][0]=1; ans[i][j]=ans[i-1][j-1]+ans[i][j-i];

    =至少有一个盒子只有一个小球+没有一个盒子只有一个小球

    至少有一个盒子只有一个小球:因为盒子相同,所以=份数-1,球数-1

    没有一个盒子只有一个小球:把每个盒子都抽出一个小球,所以份数不变,球数-i

     1 #include<bits/stdc++.h>
     2 using namespace std;
     3 int f[201][201];
     4 int main()
     5 {
     6     int k,n;cin>>n>>k;
     7     for(int i=1;i<=n;i++)
     8         for(int j=1;j<=k;j++)
     9             if(i<j)f[i][j]=0;
    10             else if(j==1||i==j)f[i][j]=1;
    11             else f[i][j]=f[i-1][j-1]+f[i-j][j];
    12     cout<<f[n][k];
    13     return 0;
    14 }
  • 相关阅读:
    kindle--瓦尔登湖
    8051
    c++
    Linux安装目录的选择
    Redis键值数据类型之散列类型
    Redis键值数据类型之字符串
    redis基本使用
    Ubuntu18.04 Redis安装
    Java String和int转换
    mysql获得自增主码的值
  • 原文地址:https://www.cnblogs.com/ljy-endl/p/11242617.html
Copyright © 2011-2022 走看看