【dp】p1025数的划分
题目描述】
将整数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题(虽然很简单),太开心了,O(∩_∩)O哈哈哈~
用f[i][j]表示i分成j的方案数
用样例来解释一下:
7 3
分成j=1的情况:
7
分成j=2的情况:
2 5
5 2
分成j=3的情况:
1 1 5=(1+1) +5
5 1 1=5+(1+1)
2 3 2=(2+3)+ 2
3 2 2=2+(2+3)
所以方程就一目了然了:
f[i][j]=f[i-1][j-1]+f[i-j][j]
#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cmath>
#include<queue>
#include<stack>
#include<vector>
#include<map>
#include<string>
#include<cstring>
using namespace std;
const int maxn=;
const int minn=-;
inline int read() {
char c = getchar();
int x = , f = ;
while(c < '' || c > '') {
if(c == '-') f = -;
c = getchar();
}
while(c >= '' && c <= '') x = x * + c - '', c = getchar();
return x * f;
}
int n,m;
int f[][];//f[i][j]表示i分成j份的方案数
int main() {
n=read();
m=read();
for(int i=; i<=n; i++)
f[i][]=;
for(int i=; i<=n; i++)
for(int j=; j<=m; j++)
if(j<=i)
f[i][j]=f[i-][j-]+f[i-j][j];
cout<<f[n][m];
return ;
}
【dp】p1025数的划分的更多相关文章
- 【dfs】p1025 数的划分
P1025 数的划分 题目描述 将整数n分成k份,且每份不能为空,任意两个方案不相同(不考虑顺序). 例如:n=7,k=3,下面三种分法被认为是相同的. 1,1,5; 1,5,1; 5,1,1; 问有 ...
- P1025 数的划分——简单题刷傻系列
P1025 数的划分 学傻了,学傻了,什么dp搜索什么啊: #include<cstdio> #include<cstring> #include<algorithm&g ...
- P1025 数的划分
P1025 数的划分f[i][j]表示把数i分成j份的方案数,分成两种情况,第一种是最小值是1,另一种是最小值不是1,对于不是1的情况,先都放一个1,那么f[i][j]=f[i-1][j-1]+f[i ...
- 洛谷——P1025 数的划分
P1025 数的划分 题目描述 将整数n分成k份,且每份不能为空,任意两个方案不相同(不考虑顺序). 例如:n=7,k=3,下面三种分法被认为是相同的. 1,1,5; 1,5,1; 5,1,1; 问有 ...
- P1025数的划分
P1025数的划分 #include <iostream> using namespace std; int n,k; int cnt; void dfs(int s,int step,i ...
- P1025 数的划分 dfs dp
题目描述 将整数nn分成kk份,且每份不能为空,任意两个方案不相同(不考虑顺序). 例如:n=7n=7,k=3k=3,下面三种分法被认为是相同的. 1,1,51,1,5;1,5,11,5,1;5,1, ...
- 洛谷P1025 数的划分【dp】
将整数nn分成kk份,且每份不能为空,任意两个方案不相同(不考虑顺序). 例如:n=7n=7,k=3k=3,下面三种分法被认为是相同的. 1,1,51,1,5; 1,5,11,5,1; 5,1,15, ...
- 洛谷 P1025 数的划分 Label:dp
题目描述 将整数n分成k份,且每份不能为空,任意两个方案不相同(不考虑顺序). 例如:n=7,k=3,下面三种分法被认为是相同的. 1,1,5; 1,5,1; 5,1,1; 问有多少种不同的分法. 输 ...
- luogu P1025 数的划分
https://www.luogu.org/problem/show?pid=1025 n的k划分 且不出现划分成0的情况 可以 分为两种情况 所有划分的数 都大于1的情况 至少划分的数里面有1的情 ...
随机推荐
- 使用eslint检查代码质量
1.安装 全局安装 npm install eslint -g 局部安装 npm install eslint --save 2.初始化一个配置文件 eslint --init 执行后根据项目需要回答 ...
- NIO(2):Channel
Channel可以理解为铁轨,Buffer是铁轨上的火车.铁轨的两端连接这文件描述符或者说文件的缓冲区和程序运行时的内存.借助NIO是一种更加符合OS底层文件系统的调用方式,使用NIO可以用更小的开销 ...
- 7.1 为什么bulk使用奇特的json格式?
回顾: bulk的语法要求:每个json串都不能换行,不同json串之间,必须换行 为什么不用标准json数组呢?如: [ { "create":{.. ...
- Ceph集群部署(基于Luminous版)
环境 两个节点:ceph0.ceph1 ceph0: mon.a.mds.mgr.osd.0.osd.1 ceph1: mon.b.osd.2.osd.3 操作系统:ubuntu14.04 网络配置: ...
- Spring事务传播机制与隔离机制
详情查看 https://www.jianshu.com/p/249f2cd42692
- 安装node.js->npm->vue
我们研究vue时,首先操作的就是vue的引用,大部分人为了方便直接在页面上引用vue.js,但是一些大型网站还是比较喜欢用vue的npm命令来安装vue并使用,之前研究vue时,研究过使用npm安装的 ...
- docker-compose设置mysql初始化数据库的字符集
version: '3' services: mysql: image: mysql:5.7.24# volumes:# - ./mysqld.cnf:/etc/mysql/mysql.conf.d/ ...
- 关于SpringBoot下template文件夹下html页面访问的一些问题
springboot整合了springmvc的拦截功能.拦截了所有的请求.默认放行的资源是:resources/static/ 目录下所有静态资源.(不走controller控制器就能直接访问到资源) ...
- Android笔记(七十二) Style和Theme
我们尝尝需要使用setText.setColor.setTextSize等属性来设置控件的样式,但是每个控件都需要设置这些属性,工作量无疑是巨大的,并且后期维护起来也不方便. Style Androi ...
- TLS 1.3 中Pre_shared_key和key_share对应的两种密钥交换模式
1.TLS1.3的整个协议的文档规范 请参照 RFC 8846,协议规范中指出,TLS1.3提供三方面的安全属性,分别是身份认证.通信加密.完整性验证. 2.TLS1.3协议主要包括两个组成部分,分别 ...