1~n的之间的k个数组成和为n的方案数(动态规划)
Description
众所周知,夏季奥林匹克运动会时隔56年第二次在东京举办,紧接着出来的《名侦探柯南 M24绯色的子弹》竟也是有奥运会的背景,最重要的是重归主线!!!(赤井秀一好帅)
讲个笑话:太让我失望了,这次剧场版居然不是讲赤井秀一参加奥运射击项目吊打各路高手包揽所有金牌的,千载难逢的机会啊
阿笠博士带着包括柯南在内的少年侦探团在奥运会现场,大家都知道,阿笠博士有个猜谜语的习惯,今天阿笠博士给出了这样一个题目:
给定两个整数nnn和kkk,含义为用恰好kkk个正整数数字组合为和为nnn的方案数,对于n=4,k=2n=4,k=2n=4,k=2,{1,31,31,3}和{3,13,13,1}是两种方案,还有一点就是得保证,组合成答案的这kkk个数各不相同,所以{2,22,22,2}不能算是一种方案,那么下面就由聪明的你来代替侦探团来解答这个问题吧。
Input
输入包括一行,两个整数,分别是n,k(1≤ n≤200,1≤k≤10)n,k(1 \leq n \leq 200,1 \leq k \leq 10)n,k(1≤ n≤200,1≤k≤10)。
Output
输出只有一个整数,也就是答案。
Source
nuoyanli
思路
这题说实话,到现在我还不是太理解这 dp 的思路
代码
#include<iostream>
using namespace std;
#define ll long long
ll dp[15][205]; //dp[i][j] 表示由i个数的和组成的值 j
int main()
{
/* freopen("A.txt","r",stdin); */
int n, k;
scanf("%d %d", &n, &k);
//初始(只有从dp[0][0] 转化过来的方案才可行)
dp[0][0] = 1;
for(int i = 1; i <= n; i ++) //这次我们选择加的数是 i
for(int j = k; j >= 1; j --) //假设组成的数的数量为 j 个
for(int u = n; u >= i; u --) //u是我们要假设的数
dp[j][u] += dp[j - 1][u - i];
ll ans = dp[k][n];
//乘以全排
for(ll i = 1; i <= k; i ++)
ans *= i;
printf("%lld\n", ans);
return 0;
}
1~n的之间的k个数组成和为n的方案数(动态规划)的更多相关文章
- 算法系列:寻找最大的 K 个数
Copyright © 1900-2016, NORYES, All Rights Reserved. http://www.cnblogs.com/noryes/ 欢迎转载,请保留此版权声明. -- ...
- 最小的K个数:用快排的思想去解相关问题
实现快速排序算法的关键在于先在数组中选择一个数字,接下来把数组中的数字分为两部分,比选择的数字小的数字移到数组的左边,比选择的数字大的数字移到数组的右边. 这个函数可以如下实现: int Partit ...
- [转载]寻找两个有序数组中的第K个数或者中位数
http://blog.csdn.net/realxie/article/details/8078043 假设有长度分为为M和N的两个升序数组A和B,在A和B两个数组中查找第K大的数,即将A和B按升序 ...
- 第2章 数字之魅——寻找最大的K个数
寻找最大的K个数 问题描述 在面试中,有下面的问答: 问:有很多个无序的数,我们姑且假定它们各不相等,怎么选出其中最大的若干个数呢? 答:可以这样写:int array[100] …… 问:好,如果有 ...
- 求n到m之间素数的个数
Description 求n到m之间素数的个数 Input 多组测试数据,每组先输入一个整数t,表示组数,然后每组输入2个正整数n和m,(1 <= n <= m <= 10000) ...
- 算法进阶面试题02——BFPRT算法、找出最大/小的K个数、双向队列、生成窗口最大值数组、最大值减最小值小于或等于num的子数组数量、介绍单调栈结构(找出临近的最大数)
第二课主要介绍第一课余下的BFPRT算法和第二课部分内容 1.BFPRT算法详解与应用 找到第K小或者第K大的数. 普通做法:先通过堆排序然后取,是n*logn的代价. // O(N*logK) pu ...
- 寻找最大的k个数问题
这是编程之美书第2.5节的一道题目. 各种解法: 解法一,用nlgn复杂度的排序算法对数组进行从大到小排序,取前K个.但这方法做了两件不必要做的事:它对想得到的K个数进行了排序,对不想得到的n-K个数 ...
- 寻找最大(小)的K个数
<<编程之美>>一书中提到了寻找最大的K个数的问题,问题可以简单描述为:在长度为N的数组中,寻找第K(K<N)个最大的数.问题的解法涉及到了很多排序算法,对我们理解和运用 ...
- 40 最小的K个数(时间效率)
题目描述: 输入n个整数,找出其中最小的K个数.例如输入4,5,1,6,2,7,3,8这8个数字,则最小的4个数字是1,2,3,4,. 测试用例: 功能测试(输入的数组中有相同的数字:输入的数组中 ...
随机推荐
- Java中文件上传路径与路径修改相关问题(tomcat8.0+eclipse)
1.普通文件上传的路径: 通过getRealPath获取相关路径 String photoFolder =request.getServletContext().getRealPath("u ...
- 如何在Flutter中使用flutter_markdown
很多博客,论坛都支持markdown语法,flutter也有支持markdown语法的插件flutter_markdown 安装依赖 dependencies: flutter: sdk: flutt ...
- php+apache 环境配置(window环境)
最近,小主从事PHP开发.特将最近如何搭建php7的过程记录在此!希望有需要,可以借鉴!( 电脑必须win7 sp1以上, .netframework4 ) Windows7安装php7,Win7+p ...
- Fortify Audit Workbench 笔记 Access Control: Database
Abstract 如果没有适当的 access control,就会执行一个包含用户控制主键的 SQL 指令,从而允许攻击者访问未经授权的记录. Explanation Database access ...
- 事务的隔离级别,mysql中开启事务、django中开启事务
目录 一.事务的特性 二.数据库中开启事务 三.Django中开启事务的两种方式 第一种 第二种 四.事务的隔离级别 隔离级别 如何查看mysql隔离级别? 修改事务的隔离级别 隔离级别解释 read ...
- nodejs中的并发编程
从sleep的实现说起 在nodejs中,如果要实现sleep的功能主要是通过"setTimeout + promise"实现,也可以通过"循环空转"来解决.前 ...
- 前端视频直播技术总结及video.js在h5页面中的应用
全手打原创,转载请标明出处:https://www.cnblogs.com/dreamsqin/p/12557070.html,多谢,=.=~ (如果对你有帮助的话请帮我点个赞啦) 目前有一个需求是在 ...
- HTML,CSS,JavaScript,json,xml之间的关系
1.浏览器工作原理: https://blog.csdn.net/Luncles/article/details/80320082 2.HTML,XML,JSON之间的关系: https://blog ...
- MassDNS:跨域DNS枚举工具
MassDNS:跨域DNS枚举工具 simeon 原文地址:http://offsecbyautomation.com/Use-MassDNS/ 工具地址:https://github.com/ble ...
- 远程调试docker构建的weblogic
环境信息 OSType: CentOS Linux 7 (Core) x86_64 3.10.0-957.21.3.el7.x86_64 DockerVersion: 19.03.8 Mirrors: ...