【备战蓝桥杯青少组】第三天 放苹果

news2024/11/13 10:42:55

OpenJudge - 666:放苹果

描述

把M个同样的苹果放在N个同样的盘子里,允许有的盘子空着不放,问共有多少种不同的分法?(用K表示)5,1,1和1,5,1 是同一种分法。

输入

第一行是测试数据的数目t(0 <= t <= 20)。以下每行均包含二个整数M和N,以空格分开。1<=M,N<=10。

输出

对输入的每组数据M和N,用一行输出相应的K。

样例输入

1
7 3

样例输出

8

思路

经典的递归题,类似的还有高位到低位降序的n位数。
为了避免重复,假设每次放的新盘子的苹果数,不能超过已放过的每个盘子里的苹果数

代码

简化版

def place(m,n,pre=[]):
	k=m if len(pre)==0 else min(m,pre[-1]) # k 为最大可放数
	# 不可能的情况
	if (n==0):				return 0 	# 没有盘子,就没有放法
	if (n==1 and m>k):		return 0	# 苹果太多放不下
	if (m>n*k):				return 0	# 更多的放不下
	# 唯一解的情况
	if (n==1 and m==k):		return 1
	if (m==0):				return 1
	if (k==1 and m<=n):		return 1
	if (k>=1 and m==1):		return 1
	# 其他情况
	return sum([place(m-i,n-1,pre+[i]) for i in range(k+1)]) 
	# pre为之前的盘子,i为新放的盘子的苹果数
cnt=int(input()); data=[]
for i in range(cnt): data.append(list(map(int,input().split())))
for i in range(cnt): print(place(data[i][0],data[i][1]))

完整版

DEBUG=False

def place(m,n,pre=[]):
	k=m if len(pre)==0 else min(m,pre[-1]) # k 为最大可放数
	# 不可能的情况
	if (n==0):				return 0 	# 没有盘子,就没有放法
	if (n==1 and m>k):		return 0	# 苹果太多放不下
	if (m>n*k):				return 0	# 更多的放不下
	# 唯一解的情况
	if (n==1 and m==k):
		ans.append(pre+[m]);
		if DEBUG: print(ans[-1]);
		return 1
	if (m==0):
		ans.append(pre+[0]*n); 
		if DEBUG: print(ans[-1]);
		return 1
	if (k==1 and m<=n):
		ans.append(pre+[1]*m+[0]*(n-m)); 
		if DEBUG: print(ans[-1]);
		return 1
	if (m==1 and k>=1):
		ans.append(pre+[1]+[0]*(n-1)); 
		if DEBUG: print(ans[-1]);
		return 1
	# 其他情况
	return sum([place(m-i,n-1,pre+[i]) for i in range(k+1)]) 
	# pre为之前的盘子,i为新放的盘子的苹果数
cnt=int(input())
data=[]
for i in range(cnt):
	data.append(list(map(int,input().split())))
for i in range(cnt):
	ans=[]
	print(data[i],"的放法共有:",place(data[i][0],data[i][1]))
	if(not DEBUG):
		if(len(ans)>10):
			print(ans[:10],"...")
		else:
			print(ans)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2055077.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Linux驱动入门实验班——DHT11、DS18B20模块驱动(附百问网视频链接)

目录 前言 一、DHT11模块 1.通信协议 2.数据格式 3.编程思路 ①入口函数 ②实现read函数 ③编写中断处理函数 ④***编写数据解析函数 ⑤应用程序 二、DS18B20模块 1. 通信时序 ① 初始化时序 ② 写时序 ③ 读时序 2. 常用命令 3. 编程思路 1.启动温度转换 2…

Dragonfly S 5MP工业相机量产 机器视觉应用的新选择

近日&#xff0c;51camera的合作厂商Teledyne FLIR IIS宣布Dragonfly️ S USB 5MP模块化、紧凑型相机现已全面投产&#xff0c;Dragonfly S 5MP是新Dragonfly S系列中首款迈入量产阶段的相机。 作为机器视觉应用领域的入门级产品&#xff0c;Dragonfly S不仅简化了成像系统的快…

实战Kubernetes之快速部署 K8s 集群 v1.28.0

文章目录 一、前言二、主机准备三、系统配置3.1. 关闭防火墙及相关配置3.2. 修改主机名3.3. 主机名DNS解析3.4. 时间同步3.5. 配置网络3.6. 重启服务器 四、安装软件4.1. 安装 Docker4.2. 安装 cri-dockerd4.3. 添加国内YUM源4.4. 安装 kubeadm、kubelet 和 kubectl 五、Master…

docker部署MySQL5.7.43并使用python脚本插入数据——实施案例

目录 一、配置docker环境 1. 阿里云镜像站配置docker环境 1. 安装必要的一些系统工具 ​编辑 2. 添加软件源信息 ​编辑 3. 修改 Docker 的 YUM 仓库配置文件&#xff0c;将 Docker 官方仓库的地址替换为阿里云的镜像源&#xff0c;以提高下载速度。 4. 更新并安装Dock…

【Qt】Qt窗口 | QDockWidget 浮动窗口

文章目录 一. 浮动窗口二. 代码创建&使用浮动窗口1. 创建浮动窗口2. 设置可停靠位置3. 添加控件 一. 浮动窗口 浮动窗口(也称为“停靠窗口”或“工具窗口”)&#xff0c;是一个可以在主窗口内或主窗口外部悬浮的窗口。它通常用于显示工具栏、面板或其他附加信息。浮动窗口…

AScript 的UI asui模板的导入

两种方案&#xff1a; 第一种直接在web端&#xff0c;右击UI文件夹 第二种在pycharm&#xff0c;也是右击UI文件夹 调用UI&#xff0c;在init类中直接调用即可

Jupyter安装指南:最简便最详细的步骤

一.介绍 JupyterNotebook 是一个款以网页为基础的交互计算环境&#xff0c;可以创建Jupyter的文档&#xff0c;支持多种语言&#xff0c;包括Python, Julia, R等等。一般来说&#xff0c;如果是使用R语言的话&#xff0c;使用Rstudio居多&#xff0c;使用Python的话&#xff0…

高防服务器租用多少钱

高防服务器租用的具体价格受多种因素影响。通常情况下&#xff0c;高防服务器的租用费用可能从数百元到数万元不等&#xff0c;具体取决于服务提供商、服务器配置、防护级别等因素。下面将详细探讨决定高防服务器租用价格的几个主要因素&#xff0c;rak小编为您整理发布高防服务…

【LeetCode热题100】滑动窗口

这篇博客总结了滑动窗口的8道常见题目&#xff0c;分别是&#xff1a;长度最小的子数组、无重复字符的最长子串、 最大连续1的个数III、将x减到0的最小操作数、水果成篮、找到字符串中所有字母异位词、串联所有单词的子串、最小覆盖子串。 class Solution { public:int minSubA…

解决Vue3+Ts打包项目时会生成很多的map文件

正常打包会生成.js和.map文件 怎么去解决它呢&#xff1f; 正常来说我们会在vite.config.ts配置我们的项目打包方式&#xff0c;如下&#xff1a;&#xff08;我这里的target&#xff1a;es2022是为了支持模块中顶层await的使用&#xff09; // Vite 配置文件 export default…

海思NVR源码方案:集成ONVIF、GUI、存储与告警的全功能解决方案

海思平台作为中国领先的半导体厂商之一&#xff0c;其3520D芯片凭借高性能、低功耗和广泛的应用性成为了NVR&#xff08;网络硬盘录像机&#xff09;解决方案的核心选择。海思平台的NVR方案不仅支持多种编码格式&#xff0c;且兼容多种视频监控协议&#xff0c;特别是在ONVIF&a…

NC 二叉搜索树的第k个节点

系列文章目录 文章目录 系列文章目录前言 前言 前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到网站&#xff0c;这篇文章男女通用&#xff0c;看懂了就去分享给你的码吧。 描述 给定一棵结点…

【python】调用openAI api接口批量处理excel中的文本

调用openAI api接口批量处理文本 主页&#xff1a;github; BLOG&#xff1a;BLOG; 教程&#xff1a;视频 1. project简介 &#xff08;1&#xff09;概况 用于在python中调用open AI的API&#xff0c;处理xlsx表格中的自然语言文本。一个专门做dirty work的好帮手 &am…

Linux系统-系统信息网络目录文件的相关命令

1.系统信息和性能查看 查看磁盘的占用情况&#xff1a; df -Th 这是参数连着写。相当于df -T -h df -Th 此命令主要用于监控服务器的磁盘空间&#xff0c;如果空间不够用了&#xff0c;会导致服务器和应用的性能严重下降。这时候要手动清理一些不用的垃圾文件&#xff0c;比…

el-image-pro点击文本也能预览图片,支持下载

背景 element-ui&#xff1a;2.15.14 el-image的预览是没有下载功能的&#xff0c;默认是这样的 且默认是通过点击图片才能预览的&#xff0c;有时候我们显示的是图片名称&#xff0c;那么能不能直接点击图片名称来预览呢&#xff1f; 现在想在预览的时候&#xff0c;给它加一…

探秘陆生生态秘境:eDNA视角下的多营养级物种世界

现今的生物多样性和气候危机迫使我们开发更有效的陆地生态系统监测工具&#xff0c;eDNA宏条形码技术&#xff08;eDNA metabarcoding&#xff09;&#xff0c;能够非侵入性地调查许多生态系统的物种丰富度&#xff0c;不会对生态环境造成干扰。通过分析这些信息&#xff0c;我…

树莓派开发笔记06-树莓派的SPI控制(点亮0.96OLED)

实验说明 我们这里会使用SPI去驱动一个0.96的OLED&#xff0c;首先需要打开SPI sudo raspi-config Interfacing Options------>SPI------>Yes------->OK------->finsh然后将屏幕接到树莓派上&#xff0c;接mosi和sclk的脚&#xff0c;DC接28&#xff0c;RST接29&…

C语言 ——— 学习并使用malloc和free函数

目录 malloc函数的功能 学习malloc函数​编辑 使用malloc函数 free函数的功能 学习并使用free函数​编辑 malloc动态开辟10个整型空间后赋值为0-9&#xff0c;再打印&#xff0c;打印后free malloc函数的功能 malloc函数能向内存申请一块连续可用的空间&#xff0c;并返…

模拟信号-放大器

放大器 放大器的输出信号是直流源和信号源经过放大器后&#xff0c;共同的作用&#xff0c;缺一不可。 直流参数 与放大器中电压源部分有关的参数&#xff0c;即放大器的直流参数。 采用直流电压源供电&#xff0c;电源电压是恒定的&#xff0c;但是电压源的输出电流是变化…

什么是OV SSL证书?如何申请

什么是OVSSL证书 OVSSL证书&#xff0c;全称是Organization Validation SSL Certificate&#xff0c;即组织验证型SSL证书。这是一种高级的SSL证书类型&#xff0c;用于保护网站和应用程序的安全性&#xff0c;特别是在电子商务和企业级网站中广泛应用。OVSSL证书不仅加密网站…