codevs——1039 数的划分
将整数n分成k份,且每份不能为空,任意两种划分方案不能相同(不考虑顺序)。
例如:n=7,k=3,下面三种划分方案被认为是相同的。
1 1 5
1 5 1
5 1 1
问有多少种不同的分法。
输入:n,k (6<n<=200,2<=k<=6)
输出:一个整数,即不同的分法。
7 3
4
{四种分法为:1,1,5;1,2,4;1,3,3;2,2,3;}
dp
思路:
我们可以推出,每一个状态可以由这两种情况转化而来
一是:前面的i-1个数用了k-1次划分,那么最后这个数和前面的分开一共就是k次划分。
二是:最后的几个数在一块分,那么前面就一共用了j次划分。
至于为什么是dp【0】【0】=1,在0个数0次划分时一共有1种划分方法。
代码:
#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<iostream>
#include<algorithm>
#define N 300
using namespace std;
int read()
{
,f=; char ch=getchar();
; ch=getchar();}
+ch-'; ch=getchar();}
return x*f;
}
int n,k,ans,dp[N][N];
int main()
{
n=read(),k=read();
dp[][]=;
;i<=n;i++)
;j<=min(i,k);j++)
dp[i][j]=dp[i-j][j]+dp[i-][j-];
ans=dp[n][k];
printf("%d",dp[n][k]);
;
}
搜索
代码:
#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<iostream>
#include<algorithm>
#define N 300
using namespace std;
int n,m,ans,b[N];
int read()
{
,f=; char ch=getchar();
; ch=getchar();}
+ch-'; ch=getchar();}
return x*f;
}
int dfs(int k,int end,int begin)
{
if(k==m)
{
if(end>=begin)
ans++;
;
}
for(int i=begin;i<end;i++)
{
b[k]=i;
dfs(k+,end-i,i);
}
}
int main()
{
n=read();m=read();
dfs(,n,);
printf("%d",ans);
;
}
codevs——1039 数的划分的更多相关文章
- luoguP1025+codevs 1039 数的划分 x
luoguP1025 + codevs1039 数的划分 2001年NOIP全国联赛提高组 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 黄金 Gold 题目描述 Des ...
- Codevs 1039 :数的划分
总时间限制: 1000ms 内存限制: 65536kB 描述 将整数n分成k份,且每份不能为空,任意两份不能相同(不考虑顺序). 例如:n=7,k=3,下面三种分法被认为是相同的. 1,1,5: 1 ...
- dp练习(8)——数的划分
1039 数的划分 2001年NOIP全国联赛提高组 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 黄金 Gold 题解 题目描述 Description 将整数 ...
- NOIP2001 数的划分
题二 数的划分(20分) 问题描述 将整数n分成k份,且每份不能为空,任意两份不能相同(不考虑顺序). 例如:n=7,k=3,下面三种分法被认为是相同的. 1,1,5; 1,5,1; 5,1,1; 问 ...
- 【dfs】p1025 数的划分
P1025 数的划分 题目描述 将整数n分成k份,且每份不能为空,任意两个方案不相同(不考虑顺序). 例如:n=7,k=3,下面三种分法被认为是相同的. 1,1,5; 1,5,1; 5,1,1; 问有 ...
- C语言 · 数的划分
算法训练 数的划分 时间限制:1.0s 内存限制:256.0MB 锦囊1 使用动态规划. 锦囊2 用F[i,j,k]表示将i划分成j份,最后一份为k的方案数,则F[i,j,k]= ...
- P1025 数的划分
P1025 数的划分f[i][j]表示把数i分成j份的方案数,分成两种情况,第一种是最小值是1,另一种是最小值不是1,对于不是1的情况,先都放一个1,那么f[i][j]=f[i-1][j-1]+f[i ...
- 数的划分(NOIP2001&水题测试2017082401)
题目链接:数的划分 这题直接搜索就行了.给代码,思路没什么好讲的,要讲的放在代码后面: #include<bits/stdc++.h> using namespace std; int d ...
- 洛谷——P1025 数的划分
P1025 数的划分 题目描述 将整数n分成k份,且每份不能为空,任意两个方案不相同(不考虑顺序). 例如:n=7,k=3,下面三种分法被认为是相同的. 1,1,5; 1,5,1; 5,1,1; 问有 ...
随机推荐
- hihocoder编程练习赛52-1 字符串排序
思路: 将字符串按照新的顺序映射之后再排序. 实现: #include <bits/stdc++.h> using namespace std; int main() { int n; s ...
- Hadoop YARN学习之Hadoop框架演进历史简述
Hadoop YARN学习之Hadoop框架演进历史简述(1) 1. Hadoop在其发展的过程中经历了多个阶段: 阶段0:Ad Hoc集群时代 标志着Hadoop的起源,集群以Ad Hoc.单用户方 ...
- SQL Case 语句的使用
-----简单case 使用 select 学号,姓名, case 专业 when '金融系' then '1' when '材料成型及控制工程' then '2' else '3' end from ...
- js设计模式-发布/订阅模式
一.前言 发布订阅模式,基于一个主题/事件通道,希望接收通知的对象(称为subscriber)通过自定义事件订阅主题,被激活事件的对象(称为publisher)通过发布主题事件的方式被通知. 就和用户 ...
- patest_1003_Emergency (25)_(dijkstra+dfs)
1003. Emergency (25) 时间限制 400 ms 内存限制 65536 kB 代码长度限制 16000 B 判题程序 Standard 作者 CHEN, Yue As an emerg ...
- Friday Q&A 2015-11-20:协变与逆变
作者:Mike Ash,原文链接,原文日期:2015-11-20译者:Cee:校对:千叶知风:定稿:numbbbbb 在现代的编程语言中,子类型(Subtypes)和超类型(Supertypes)已经 ...
- arp - Linux的ARP核心模块
描述 这个核心协议模块实现RFC826中定义的 Address Resolution Protocol [译注:即TCP/IP的第三层到第一层的地址转换协议],用于在直接相连的网络中换第二层硬件地址和 ...
- ansible API(开发应用)
7. ansible API(开发应用) 官网链接
- JavaSE-13 内部类
学习要点 内部类的定义 内部类的应用 内部类 定义 Java的一个类中包含着另一类. A类和B类是C类的外部类.B类是C类的外部类.A类也称为顶层类. 如何使用内部类 public class MyF ...
- 聚类和EM算法——K均值聚类
python大战机器学习——聚类和EM算法 注:本文中涉及到的公式一律省略(公式不好敲出来),若想了解公式的具体实现,请参考原著. 1.基本概念 (1)聚类的思想: 将数据集划分为若干个不想交的子 ...