算法训练 数的划分  
时间限制:1.0s   内存限制:256.0MB
      
锦囊1
使用动态规划。
锦囊2
用F[i,j,k]表示将i划分成j份,最后一份为k的方案数,则F[i,j,k]=sum F[i-k,j-1,k']。其中k'
问题描述
  将整数n分成k份,且每份不能为空,任意两份不能相同(不考虑顺序)。
  例如:n=7,k=3,下面三种分法被认为是相同的。
  1,1,5; 1,5,1; 5,1,1;
  问有多少种不同的分法。
输入格式
  n,k
输出格式
  一个整数,即不同的分法
样例输入
7 3
样例输出
4 {四种分法为:1,1,5;1,2,4;1,3,3;2,2,3;}
数据规模和约定
  6<n<=200,2<=k<=6

注释:用的递归,不过上一道题记得超时来着,在这里又过了,怪哉。

 /*
分析:递归问题。
step表示当前剩余的数需要分成的份数;把n分成k份,
只需第一个数等于i,计算从i等于1一直到i等于n/k,然后
把剩余的n-i分成k-1份的种类数.
front为剩余的要划分的数的前一个数,每次i从front
开始一直到n/step结束,这样才能保证得到的划分方式是
不递减的,才能保证不会有重复的情况产生.
*/
#include<stdio.h>
#include<string.h>
int ans=;
void dfs(int front, int n, int step){
if(step==){
ans++;
return;
}
for(int i=front; i<=n/step; i++){
dfs(i, n-i, step-);//i一直是front;n-i表完成一次划分后剩下的
}
}
int main(){
int n,k;
scanf("%d%d",&n,&k);
/*1循环到n:代表将n划分为1到n的各个份数*/
// for(int i=1;i<=n;i++){
// dfs(1,n,i);
// }
/*不循环:指定了划分份数k*/
dfs(,n,k);
printf("%d",ans);
return ;
}

C语言 · 数的划分的更多相关文章

  1. NOIP2001 数的划分

    题二 数的划分(20分) 问题描述 将整数n分成k份,且每份不能为空,任意两份不能相同(不考虑顺序). 例如:n=7,k=3,下面三种分法被认为是相同的. 1,1,5; 1,5,1; 5,1,1; 问 ...

  2. 【dfs】p1025 数的划分

    P1025 数的划分 题目描述 将整数n分成k份,且每份不能为空,任意两个方案不相同(不考虑顺序). 例如:n=7,k=3,下面三种分法被认为是相同的. 1,1,5; 1,5,1; 5,1,1; 问有 ...

  3. P1025 数的划分

    P1025 数的划分f[i][j]表示把数i分成j份的方案数,分成两种情况,第一种是最小值是1,另一种是最小值不是1,对于不是1的情况,先都放一个1,那么f[i][j]=f[i-1][j-1]+f[i ...

  4. 数的划分(NOIP2001&水题测试2017082401)

    题目链接:数的划分 这题直接搜索就行了.给代码,思路没什么好讲的,要讲的放在代码后面: #include<bits/stdc++.h> using namespace std; int d ...

  5. dp练习(8)——数的划分

    1039 数的划分 2001年NOIP全国联赛提高组  时间限制: 1 s  空间限制: 128000 KB  题目等级 : 黄金 Gold 题解       题目描述 Description 将整数 ...

  6. 洛谷——P1025 数的划分

    P1025 数的划分 题目描述 将整数n分成k份,且每份不能为空,任意两个方案不相同(不考虑顺序). 例如:n=7,k=3,下面三种分法被认为是相同的. 1,1,5; 1,5,1; 5,1,1; 问有 ...

  7. codevs——1039 数的划分

    1039 数的划分 2001年NOIP全国联赛提高组  时间限制: 1 s  空间限制: 128000 KB  题目等级 : 黄金 Gold 题解       题目描述 Description 将整数 ...

  8. 洛谷 题解 P1025 【数的划分】

    将n个小球放到k个盒子中的情况总数 = (a)至少有一个盒子只有一个小球的情况数 + (b)没有一个盒子只有一个小球的情况数 这样写出表达式: a.因为盒子不加区分,那么=情况数与"将n-1 ...

  9. P1025 数的划分——简单题刷傻系列

    P1025 数的划分 学傻了,学傻了,什么dp搜索什么啊: #include<cstdio> #include<cstring> #include<algorithm&g ...

随机推荐

  1. 学习DRF之前

    在学习DRF之前~我们要先复习一些知识点~~ FBV和CBV的区别 学习Django的时候~我们已经了解过CBV以及FBV 什么是FBV和CBV呢~~ FBV 基于函数的视图 CBV 基于类的视图 也 ...

  2. padding和margin设置成百分比

    Margin和Padding是我们在网页设计经常使用到的CSS样式,他们分别是间距和填充,一个作用于盒子外面,一个作用于盒子里面,默认的情况下,这些属性的值都会被计算在盒子的面积里面,在网页开发中的流 ...

  3. Lock锁与Condition监视器(生产者与消费者)。

    /*生产者与消费者第二次敲,本人表示很郁闷,以后要经常读这个 * Condition 将Object类中的监视器(wait notify notifyAll)分解成不同的对象.例如condition_ ...

  4. IDatabaseInitializer<TContext>接口研究

    MSDN官方文档 DropCreateDatabaseIfModelChanges<TContext> 如果实体模型变化,那么重新创建数据库 DropCreateDatabaseAlway ...

  5. 将map中的值赋值给一个java对象

    Map tag=new HashMap(); tag.put("001"," 张三"); tag.put("002","李四&qu ...

  6. windows上redis添加密码

    命令: config get requirepass config set requirepass pwd redis-server.exe redis-windows.conf. auth   pw ...

  7. Annotation 的第一个工程

    一.什么是 Annotation? java.lang.annotation,接口 Annotation.对于Annotation,是Java5的新特性,JDK5引入了Metadata(元数据)很容易 ...

  8. Mac下安装pyenv

    mac 用virtualenv安装py3.6的虚拟环境报错(virtualenv -p /usr/bin/python3 env36), 解决的话需要安装zlib包, 然后去掉configure配置里 ...

  9. sqoop导出到hdfs

    ./sqoop export --connect jdbc:mysql://192.168.58.180/db --username root --password 123456  --export- ...

  10. JSP展示两位小数

    <td class="thCenter"> <fmt:formatNumber type="number" value="${rec ...