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,. 测试用例: 功能测试(输入的数组中有相同的数字:输入的数组中 ...
随机推荐
- Vue方式自动打开浏览器配置
Vue方式自动打开浏览器配置 1. 通过 package.json 配置项目 // 必须是符合规范的json语法 "vue": { "devServer": { ...
- Linux学习资料地址汇总-不定时更(一)
https://linux.linuxidc.com/ 用户名和密码都是www.linuxidc.com
- Echarts 自定义legend图片,修改点击之后的颜色图解
第一个问题:echarts 可以自定义图例的图标,百度上很多回答都是引用的相对路径,但是不知道为啥,我的vue项目就是引用不显示,在network里面找不到相应图片 后来我想了个法子,就是先获取到这个 ...
- 图像IO
图像IO 潜伏期值得思考 - 凯文 帕萨特 在第13章“高效绘图”中,我们研究了和Core Graphics绘图相关的性能问题,以及如何修复.和绘图性能相关紧密相关的是图像性能.在这一章中,我们将研究 ...
- centOS7python版本升到3
我们使用Python源代码编译的方式安装python3. 一.安装必要工具 yum-utils ,它的功能是管理repository及扩展包的工具 (主要是针对repository) $ sudo y ...
- TCP IP Socket In C, 2e-chapter 1 Introduction
本章是基础概念,建议补计算机网络基础,这里不全. 目录 1 网络,数据包,协议 2 关于地址(address) 2.1 IP地址格式 2.2 IPv4和IPv6共存 2.3 端口号 2.4 特殊地址 ...
- [Linux][C][gcc] Linux GCC 编译链接 报错ex: ./libxxx.so: undefined reference to `shm_open'
本人原创文章,文章是在此代码github/note的基础上进行补充,转载请注明出处:https://github.com/dramalife/note. 以librt丶用户自定义动态库libxxx 和 ...
- Spring框架——IOC 自动装载
IOC自动装载有两种形式 <?xml version="1.0" encoding="UTF-8"?> <beans xmlns=" ...
- jquery 获取url携带的参数
url= "/page/employee/employeeUpdate.html?id="+data.id 获取 url携带的参数 -> $.getUrlParam = fu ...
- div 3 frog jump
There is a frog staying to the left of the string s=s1s2…sn consisting of n characters (to be more p ...