首页 > 试题广场 >

[NOIP2001]数的划分

[编程题][NOIP2001]数的划分
  • 热度指数:1308 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 256M,其他语言512M
  • 算法知识视频讲解
将整数n分成k份,且每份不能为空,任意两个方案不能相同(不考虑顺序)。
例如:n=7,k=3,下面三种分法被认为是相同的。
1,1,5; 
1,5,1; 
5,1,1;
问有多少种不同的分法。
输入:n,k ( 6 < n ≤ 200,2 ≤ k ≤ 6 )
输出:一个整数,即不同的分法。

输入描述:
两个整数 n,k ( 6 < n ≤ 200, 2 ≤ k ≤ 6 )


输出描述:
1个整数,即不同的分法。
示例1

输入

7 3

输出

4
头像 savage
发表于 2019-08-29 14:33:06
题目描述 将整数n分成k份,且每份不能为空,任意两份不能相同(不考虑顺序)。 例如:n=7,k=3,下面三种分法被认为是相同的。 1,1,5; 1,5,1; 5,1,1; 问有多少种不同的分法。 输入:n,k ( 6 < n ≤ 200,2 ≤ k ≤ 6 ) 输出:一个整数, 展开全文
头像 威风镰鼬
发表于 2021-06-09 00:03:39
[NOIP2001]数的划分 思路 dfs的简单题,数据很弱,注意每次减的数都比上一次当要大,分的方式就不会重复了;方案数+1的条件是n减k个数后刚好等于零(也可以理解为k个非递减的数之和等于n) 代码 #include<bits/stdc++.h> using namespace st 展开全文
头像 coder+9
发表于 2021-11-18 09:31:59
2021.11.18 本题可以参照题解,递增的序列,如果不是严格递增,就进行回溯,每次递归n/k是为了保证重复的序列只出现一次,所以进行取半。 案例所给的意思可以理解为如下 最后一个要选的数其实已经被之前k-1个数确定了,不用去规划了。 #include<iostream> #inclu 展开全文
头像 True猫南北
发表于 2022-01-25 20:19:02
我是小白 祝你nb 做了些注释 #include<bits/stdc++.h> using namespace std; int n,k; int ans=0; void dfs(int x,int y,in 展开全文
头像 ouk
发表于 2020-08-12 11:58:49
题目描述将整数n分成k份,且每份不能为空,任意两个方案不能相同(不考虑顺序)。例如:n=7,k=3,下面三种分法被认为是相同的。1,1,5;1,5,1;5,1,1;问有多少种不同的分法。输入:n,k ( 6 < n ≤ 200,2 ≤ k ≤ 6 )输出:一个整数,即不同的分法。输入描述:两个 展开全文
头像 秋语随风
发表于 2021-07-23 17:55:50
解析 题目内容: 题意: 输出不重复的,将一个正整数n分成k份正整数的所有组合的数量(元素相同即为重复). 输入描述: 仅一行,n与k之间用空格隔开. 输出描述: 输出组合的总数. 分析: 限制条件:不能重复. (以DFS为基本思路) 如何保证结果不会重复?将系统给出和自身给出的测试样例来进行枚举 展开全文
头像 夜语声烦-
发表于 2022-03-22 09:22:35
[NOIP2001]数的划分 #include <iostream> using namespace std; int n, k, cnt; void dfs(int u, int s, int sum)//当前分成u份 上一个选择的数是s 当前总和是sum { if(u 展开全文
头像 litterdog
发表于 2023-04-13 22:13:45
#include<bits/stdc++.h> using namespace std; #define ll long long ll f[210][10]; int main(){ int n,k; cin>>n>>k; f[1][1] 展开全文
头像 kokyu
发表于 2022-09-15 08:02:49
#include <bits/stdc++.h> //#include <iostream> using namespace std; int n,k,ans=0; void dfs(int pre,i 展开全文