P2089 烤鸡、P1706 全排列问题、P1157 组合的输出、P1036 [NOIP2002 普及组] 选数——Python代码实现(带注释)

news2024/10/6 12:33:17

P2089 烤鸡

题目背景

猪猪 Hanke 得到了一只鸡。

题目描述

猪猪 Hanke 特别喜欢吃烤鸡(本是同畜牲,相煎何太急!)Hanke 吃鸡很特别,为什么特别呢?因为他有 1010 种配料(芥末、孜然等),每种配料可以放 11 到 33 克,任意烤鸡的美味程度为所有配料质量之和。

现在, Hanke 想要知道,如果给你一个美味程度 n ,请输出这 1010 种配料的所有搭配方案。

输入格式

一个正整数 �n,表示美味程度。

输出格式

第一行,方案总数。

第二行至结束,1010 个数,表示每种配料所放的质量,按字典序排列。

如果没有符合要求的方法,就只要在第一行输出一个 00。

输入输出样例

输入 #

11

输出 #

10
1 1 1 1 1 1 1 1 1 2 
1 1 1 1 1 1 1 1 2 1 
1 1 1 1 1 1 1 2 1 1 
1 1 1 1 1 1 2 1 1 1 
1 1 1 1 1 2 1 1 1 1 
1 1 1 1 2 1 1 1 1 1 
1 1 1 2 1 1 1 1 1 1 
1 1 2 1 1 1 1 1 1 1 
1 2 1 1 1 1 1 1 1 1 
2 1 1 1 1 1 1 1 1 1 

说明/提示

对于 100%100% 的数据,≤5000n≤5000。

n=int(input())
result=[]  #保存最终遍历的结果
sum_result=0 #记录方法的数量
tem_result=[0]*10  #列表用于保存各种配料之间用量记录
def dfs(x,zh):
      global sum_result,result
      if x>10: #如果十种配料已经称重完成,则继续判断十种配料的质量是否等于输入的重量
            if zh==n: #如果当前各种配料总合的质量为n
                  sum_result+=1
                  result.append(tem_result[:])
            return
      if zh>n: #如果总合大于输入的总合就结束遍历,即剪枝
            return
      
      for i in range(1,4):
            tem_result[x-1]=i
            dfs(x+1,zh+i)

def main():
      if 31>n>9:
            dfs(1,0)
            print(sum_result)
            for i in result:
                  for number in i:
                        print(number,end=" ")
                  print()
      else:
          print(0)  
main()

      


P1706 全排列问题

目描述

按照字典序输出自然数 11 到 n 所有不重复的排列,即 n 的全排列,要求所产生的任一数字序列中不允许出现重复的数字。

输入格式

一个整数 n。

输出格式

由 1∼1∼n 组成的所有不重复的数字序列,每行一个序列。

每个数字保留 55 个场宽。

输入输出样例

输入 #1复制

3

输出 #1复制

    1    2    3
    1    3    2
    2    1    3
    2    3    1
    3    1    2
    3    2    1

说明/提示

1≤n≤9。

n=int(input())
st=[0]*(n+1) #st列表用于保存排列过程中当前位置是否被选择
res=[0]*(n+1)
def dfs(x):
    if x>n: #表示当递归的位数大于输入规定的位数,就结束递归
        for i in res:
            if i:
                print("{:5}".format(i),end="")
        print()
        return
    for i in range(1,n+1):
        if not st[i]: #注意事项:当前状态列表的索引为i,表示检查当前位置为空,就继续下一步操作
            st[i]=1 #表示当前对第i位进行赋值,需要注意的是状态列表的索引为i。表示对第i位操作
            res[x]=i
            dfs(x+1) #进行下一次遍历
            st[i]=0
            res[x]=0

dfs(1)
    

P1157 组合的输出

题目描述

排列与组合是常用的数学方法,其中组合就是从 n 个元素中抽出 r 个元素(不分顺序且 r≤n),我们可以简单地将 n 个元素理解为自然数 1,2,…,1,2,…,n,从中任取 r 个数。

现要求你输出所有组合。

例如 n=5,r=3,所有组合为:

123,124,125,134,135,145,234,235,245,345123,124,125,134,135,145,234,235,245,345。

输入格式

一行两个自然数 n,r(1<n<21,0≤r≤n)。

输出格式

所有的组合,每一个组合占一行且其中的元素按由小到大的顺序排列,每个元素占三个字符的位置,所有的组合也按字典顺序。

注意哦!输出时,每个数字需要 33 个场宽。以 C++ 为例,你可以使用下列代码:

cout << setw(3) << x;

输出占 33 个场宽的数 x。注意你需要头文件 iomanip

输入输出样例

输入 #1复制

5 3 

输出 #1复制

  1  2  3
  1  2  4
  1  2  5
  1  3  4
  1  3  5
  1  4  5
  2  3  4
  2  3  5
  2  4  5
  3  4  5

list_var=list(map(int,input().split())) #完成程序参数的输入
n,r=list_var[0],list_var[1]  #将用户输入的数据保存到指定的变量中
res=[0]*(r+1)  #定义一个结果列表,将深度遍历搜索得到的结果进行保存

def dfs(x,start):
    if x>r: #结束遍历标志,当遍历的位数大于用户指定的位数就停止便利
        for i in res: #输出结果
            if i :
                print("{:3}".format(i),end="")
        print()
        return
    for i in range(start,n+1): #因为是组合问题,所以用过的参数就不能再使用了,因此从start开始寻找数字
        res[x]=i #将未使用的数字保存到结果列表中
        dfs(x+1,i+1) #函数递归调用
        res[x]=0 #回溯

dfs(1,1)

P1036 [NOIP2002 普及组] 选数

题目描述

已知 n 个整数 1,2,⋯ ,x1​,x2​,⋯,xn​,以及 11 个整数 k(k<n)。从 n 个整数中任选 k 个整数相加,可分别得到一系列的和。例如当 n=4,k=3,44 个整数分别为 3,7,12,193,7,12,19 时,可得全部的组合与它们的和为:

3+7+12=223+7+12=22

3+7+19=293+7+19=29

7+12+19=387+12+19=38

3+12+19=343+12+19=34

现在,要求你计算出和为素数共有多少种。

例如上例,只有一种的和为素数:3+7+19=293+7+19=29。

输入格式

第一行两个空格隔开的整数 n,k(1≤n≤20,k<n)。

第二行 n 个整数,分别为 x1​,x2​,⋯,xn​(1≤xi​≤5×106)。

输出格式

输出一个整数,表示种类数。

输入输出样例

输入 #1复制

4 3
3 7 12 19

输出 #1复制

1
list_number=list(map(int,input().split())) #将用户外部输入的两个数据进行保存
n,k=list_number[0],list_number[1] #将用户输入的数据按照题目要求,分别赋值给n,k两个变量
list_input=list(map(int,input().split())) #接收用户输入的列表
res=[0]*(k+1) #保存完成一次DFS的结果
count=0 #保存当前的求和结果为素数的个数

def judje_sushu(number): #判断素数
    for i in range(2,number):
        if number%i==0:
            return 0
    return 1
    

def dfs(x,start):
    global count #在函数中引用全局变量的时候,需要使用关键字global进行声明
    if x>k:
        result=[] #保存一次便利结束后的数据,便于求和判断素数
        for i in res:
            if i:
                result.append(i) #保存便利数据到result中
        sum_res=sum(result) #求和结果
        if judje_sushu(sum_res): #判断求和结果是否为素数,如果是素数就将count的值加一
            count+=1
        return
    for i  in range(start,len(list_input)): #按顺序提取用户给出的数据
        res[x]=list_input[i] #将提取到的保存res列表中
        dfs(x+1,i+1) #调用dfs函数实现深度优先搜索
        res[x]=0 #回溯

dfs(1,0)
print(count)

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

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

相关文章

面试经典150题——K 个一组翻转链表

1. 题目描述 2. 题目分析与解析 在这里推荐大家看一下这个解题思路&#xff1a; https://www.bilibili.com/video/BV11w411V7Ar/?spm_id_from333.337.search-card.all.click&vd_source7ea7c036902f5cb73c7f4781d1b0eaff 整体的算法思路如下&#xff1a; 初始化&#xff1a…

AWS入门实践-利用S3构建一个静态网站

使用Amazon S3托管静态网站是一个流行的选择&#xff0c;因为它简单、成本效益高&#xff0c;并且易于维护。静态网站由不含服务器端脚本的文件组成&#xff0c;如HTML、CSS和JavaScript文件。下面是使用S3托管静态网站的操作步骤&#xff1a; 如果大家没有AWS免费账号&#x…

【C++】背包问题

目录 背包问题01 背包背包不装满问题背包必须满问题 完全背包 背包问题 背包问题属于动态规划的一类题型 01 背包 背包不装满问题 背包必须满问题 #include <iostream> using namespace std; const int N 1010; #include <vector> int main() {int n , V;int v[…

AJAX —— 学习(三)(完结)

目录 一、jQuery 中的 AJAX &#xff08;一&#xff09;get 方法 1.语法介绍 2.结果实现 &#xff08;二&#xff09;post 方法 1.语法介绍 2.结果实现 &#xff08;三&#xff09;通用型的 AJAX 方法 1.语法介绍 2.结果实现 二、AJAX 工具库 axios &#xff08…

批量导入svg文件作为图标使用(vue3)vite-plugin-svg-icons插件的具体应用

目录 需求svg使用简述插件使用简述实现安装插件1、配置vite.config.ts2、src/main.ts引入注册脚本3、写个icon组件4、使用组件 需求 在vue3项目中&#xff0c;需要批量导入某个文件夹内数量不确定的svg文件用来作为图标&#xff0c;开发完成后能够通过增减文件夹内的svg文件&a…

C++高频面试知识总结 part2

C高频面试 1.sizeof是什么&#xff1f;sizeof一个class大小怎么确定&#xff1f;是在编译期还是在运行期确定?2.函数重载的机制&#xff0c;重载是在编译期还是在运行期确定&#xff0c;重载有额外开销吗3.函数重写在编译还是运行时确定&#xff1f;4.如何找到虚函数表&#x…

MySQL复制拓扑4

文章目录 主要内容一.启用GUID并配置循环复制1.其中&#xff0c;UUID用来唯一标识每一个服务器&#xff0c;事务的编号记录了在该服务器上执行的事务的顺序。使用SELECT server_uuid\G命令可以查看服务器的UUID&#xff0c;sever1的UUID值显示如下&#xff1a;代码如下&#xf…

架构图设计

我们了解了软件架构后&#xff0c;方便了我们理解软件各方面的解读&#xff0c;但是如果我们开发中有必要自己设计架构图吗&#xff1f;有&#xff0c;但是不会轮到你。这里浅浅讲一下软构图的设计&#xff0c;相信当你用一张或几张图来描述系统时&#xff0c;是不是经常遇到以…

域控报错:Windows无法创建对象 XX,因为目录服务无法分配相对标识符。

当域控制器报告错误“Windows无法创建对象&#xff0c;因为目录服务无法分配相对标识符”时&#xff0c;这通常是指在Active Directory环境中尝试创建新用户、计算机或其他安全主体时&#xff0c;域控制器无法从预先分配给每个域的RID&#xff08;Relative Identifier&#xff…

Fire Smoke - Dynamic Nature

烟雾、火灾和爆炸预制件、着色器的集合。粒子支持HD、URP和标准渲染,自然制造风,因此它们对风速、方向和颤抖做出反应。 包装支持: Unity 2021.2及更高版本 Unity 2021.2 HD RP Unity 2021.2 URP Unity 2021.3及更高版本 Unity 2021.3 LTS HD RP Unity 2021.3 LTS URP Unity…

【SkyWorking】服务追踪工具

使用 Jar 启动时添加 VM 参数 -javaagent:/path/to/apache-skywalking-apm-incubating/agent/skywalking-agent.jar -Dskywalking.agent.application_codeYOUR_APP_NAME或 -javaagent:D:\city\skywalking-agent\skywalking-agent.jaragent.service_namemy-service,agent.instan…

贪心算法|45.跳跃游戏II

力扣题目链接 class Solution { public:int jump(vector<int>& nums) {if (nums.size() 1) return 0;int curDistance 0; // 当前覆盖最远距离下标int ans 0; // 记录走的最大步数int nextDistance 0; // 下一步覆盖最远距离下标for (int i 0;…

YoloV8实战:使用YoloV8实现水下目标检测(RUOD)

摘要 水下目标检测技术在生态监测、管道检修、沉船捕捞等任务中发挥着重要作用。常用的检测方法包括高清视像、侧扫声呐等。光学图像检测因高分辨率和灵活性&#xff0c;在近距离检测中优势显著。但水下图像受水体吸收、衰减、光源分布等影响&#xff0c;呈现蓝绿色&#xff0…

拾光坞N3 ARM 虚拟主机 i茅台项目

拾光坞N3 在Dcoker部署i茅台案例 OS&#xff1a;Ubuntu 22.04.1 LTS aarch64 cpu&#xff1a;RK3566 ram&#xff1a;2G 部署流程——》mysql——》java8——》redis——》nginx mysql # 依赖 apt update apt install -y net-tools apt install -y libaio* # 下载mysql wg…

太阳能自动气象站讲解

TH-QC10随着科技的不断进步和环保意识的日益增强&#xff0c;太阳能自动气象站逐渐成为了气象观测领域的新宠。这种结合了清洁能源与先进技术的装置&#xff0c;不仅为气象数据的获取提供了更为便捷、高效的方式&#xff0c;同时也为环保事业贡献了自己的力量。 一、太阳能自动…

PCI总线学习笔记:读写篇

前言 最近在写E1000网卡的驱动&#xff0c;这其中涉及到了PCI总线的相关内容。但是网上大部分关于PCI的文章都只局限在概念上的描述&#xff0c;并没有给出具体的例子来解释。这其实也是情理之中的&#xff0c;因为PCI总线规范就像是一个抽象的接口&#xff0c;其具体怎么实现…

[LeetCode][LCR133]位 1 的个数——快速从右边消去1

题目 LCR 133. 位 1 的个数 编写一个函数&#xff0c;输入是一个无符号整数&#xff08;以二进制串的形式&#xff09;&#xff0c;返回其二进制表达式中数字位数为 ‘1’ 的个数&#xff08;也被称为 汉明重量).&#xff09;。 提示&#xff1a; 请注意&#xff0c;在某些语言…

CTF之矛盾

这一题就是php的弱比较“” 这里要求输入的不是数字&#xff0c;并且输入要为1才打印flag 那我们就输入一个1后面接随便什么字符&#xff0c;因为php的弱比较将字符与数字进行比较的时候&#xff0c;会把字符转换成数字再比较&#xff0c;当转换到字符时后面便都为空了 flag{…

蓝桥杯 经验技巧篇

1. 注意事项 &#x1f468;‍&#x1f3eb; 官方通知 &#x1f468;‍&#x1f3eb; 资料文档 时间&#xff1a;4月13日 9:00~13:00 &#xff08;时长 4小时&#xff09;物品 准考证&#xff08;赛前一周开放下载&#xff0c;自行打印&#xff09;学生证身份证笔、水、外套&a…

层次式架构设计-体系结构概述

层次式架构是软件体系结构设计中最为常用的一种架构形式&#xff0c;它为软件系统提供了一种在结构、行为和属性方面的高级抽象。其核心思想是将系统组成为一种层次结构&#xff0c;每一层为上层服务&#xff0c;并作为下层的客户。 层次式架构设计技术&#xff1a; 表现层中间…