ALGO-22_蓝桥杯_算法训练_数的划分(DP)
问题描述
将整数n分成k份,且每份不能为空,任意两份不能相同(不考虑顺序)。
例如:n=,k=,下面三种分法被认为是相同的。
,,; ,,; ,,;
问有多少种不同的分法。
输入格式
n,k
输出格式
一个整数,即不同的分法
样例输入 样例输出
{四种分法为:,,;,,;,,;,,;}
数据规模和约定
<n<=,<=k<=
记:
动态题目自己写的依旧没能得到满分,学习他人的解题思路
(代码参考:https://blog.csdn.net/liuchuo/article/details/51989133,https://blog.csdn.net/pason_pc/article/details/51228907)
例如输入n=7,k=3

即得到了关于7的所有划分
两个重点:
1->代码中i的值在prev-n/step之间,从prev开始,确保最小值不会比前一个小,避免出现重复情况;
到n/step结束,是因为当超过n/step时,会出现与前面检索情况重复的现象,
(例dp(3,4,2),由于4=1+3或4=2+2在前面的情况出现过,故会出现重复情况,从而推出适用其他情况)
2->用于确定划分的step,当step=1,即划分完成,可进行计数
AC代码:
#include <stdio.h> int n,k;
int ans = ; void dp(int prev,int n,int step)
{
int i;
if (step == )/*划分结束*/
{
ans ++;
return ;
} for (i = prev ; i <= n/step ; i ++)
{
dp(i,n-i,step-);
}
return ;
} int main(void)
{
scanf("%d %d",&n,&k);
dp(,n,k);
printf("%d",ans);
return ;
}
ALGO-22_蓝桥杯_算法训练_数的划分(DP)的更多相关文章
- [蓝桥杯]ALGO-20.算法训练_求先序排列
问题描述 给出一棵二叉树的中序与后序排列.求出它的先序排列.(约定树结点用不同的大写字母表示,长度<=). 输入格式 两行,每行一个字符串,分别表示中序和后序排列 输出格式 一个字符串,表示所求 ...
- [蓝桥杯]ALGO-16.算法训练_进制转换
问题描述 我们可以用这样的方式来表示一个十进制数: 将每个阿拉伯数字乘以一个以该数字所处位置的(值减1)为指数,以10为底数的幂之和的形式.例如:123可表示为 1*102+2*101+3*100这样 ...
- [蓝桥杯]ALGO-15.算法训练_旅行家的预算
问题描述 一个旅行家想驾驶汽车以最少的费用从一个城市到另一个城市(假设出发时油箱是空的).给定两个城市之间的距离D1.汽车油箱的容量C(以升为单位).每升汽油能行驶的距离D2.出发点每升汽油价格P和沿 ...
- [蓝桥杯]ALGO-124.算法训练_数字三角形
问题描述 (图3.1-1)示出了一个数字三角形. 请编一个程序计算从顶至底的某处的一条路 径,使该路径所经过的数字的总和最大. ●每一步可沿左斜线向下或右斜线向下走: ●<三角形行数≤: ●三角 ...
- [蓝桥杯]ALGO-122.算法训练_未名湖边的烦恼
问题描述 每年冬天,北大未名湖上都是滑冰的好地方.北大体育组准备了许多冰鞋,可是人太多了,每天下午收工后,常常一双冰鞋都不剩. 每天早上,租鞋窗口都会排起长龙,假设有还鞋的m个,有需要租鞋的n个.现在 ...
- [蓝桥杯]ALGO-116.算法训练_最大的算式
问题描述 题目很简单,给出N个数字,不改变它们的相对位置,在中间加入K个乘号和N-K-1个加号,(括号随便加)使最终结果尽量大.因为乘号和加号一共就是N-1个了,所以恰好每两个相邻数字之间都有一个符号 ...
- [蓝桥杯]ALGO-101.算法训练_图形显示
问题描述 编写一个程序,首先输入一个整数,例如5,然后在屏幕上显示如下的图形(5表示行数): * * * * * * * * * * * * * * * 题目描述 代码如下: #include < ...
- [蓝桥杯]ALGO-97.算法训练_排序
题目描述: 问题描述 编写一个程序,输入3个整数,然后程序将对这三个整数按照从大到小进行排列. 输入格式:输入只有一行,即三个整数,中间用空格隔开. 输出格式:输出只有一行,即排序后的结果. 输入输出 ...
- [蓝桥杯]ALGO-92.算法训练_前缀表达式
问题描述 编写一个程序,以字符串方式输入一个前缀表达式,然后计算它的值.输入格式为:“运算符 对象1 对象2”,其中,运算符为“+”(加法).“-”(减法).“*”(乘法)或“/”(除法),运算对象为 ...
- [蓝桥杯]ALGO-90.算法训练_出现次数最多的整数
问题描述 编写一个程序,读入一组整数,这组整数是按照从小到大的顺序排列的,它们的个数N也是由用户输入的,最多不会超过20.然后程序将对这个数组进行统计,把出现次数最多的那个数组元素值打印出来.如果有两 ...
随机推荐
- Mariadb使用xtrabackup工具备份数据脚本
#!/bin/bash#这个脚本用来备份SQL文件: sql_home="/home/mysql"sql_bak_log="$sql_home/xtrabackup.lo ...
- Unity 3D Shader流水线
Unity开发VR之Vuforia 本文提供全流程,中文翻译. Chinar 坚持将简单的生活方式,带给世人!(拥有更好的阅读体验 -- 高分辨率用户请根据需求调整网页缩放比例) Chinar -- ...
- 关于vs设置其他主题配色问题
可以再网上找其他的.vssettings文件导入 导入方法如下: 一般vs会将你之前设置下的配色方案自动保存下来,你也可以直接覆盖 2019-03-21 17:31:07
- C++学习(二十三)(C语言部分)之 指针4
指针 指针 存放地址 只能存放地址 使用 &取地址运算符 *取值 解引用运算符 malloc 申请堆内存 free释放堆内存 1.1 指针 存放的地址(变量地址 常量区的地址 堆区内存首地址 ...
- Python-random 随机数模块
random 随机数模块格式: import random 引入随机模块文件 1 import random 2 3 print(random.random())#(0,1)----float 大于0 ...
- 有关O_APPEND标志和lseek()的使用
编程之路刚刚开始,错误难免,希望大家能够指出. O_APPEND表示以每次写操作都写入文件的末尾.lseek()可以调整文件读写位置. <<Linux/UNIX系统编程手册>> ...
- C++中的继承和多继承
一.学习笔记 1.继承 class Student : public Person { ... } 2.继承时权限派生类中可以直接访问父类的protected成员,但是不能访问其private成员,若 ...
- Load Balancing OpenSSH SFTP with HAProxy
In my previous post I described how we setup a Ubuntu Server (12.0.4) as an OpenSSH SFTP server. In ...
- 01炼数成金TensorFlow基本概念
一.Tensorflow基本概念 1.使用图(graphs)来表示计算任务,用于搭建神经网络的计算过程,但其只搭建网络,不计算 2.在被称之为会话(Session)的上下文(context)中执行图 ...
- oracle数据字典-权限-角色-参数
每个数据库都提供了各自的数据字典的方案,虽然形式不同,但是目的和作用是一样的,比如在mysql里数据字典是在information_schema 里表现的,sqlserver则是在sys这个系统sch ...