2023年秋季学期《算法分析与设计》练习16 OJ-1425 算法分析与设计练习16,使用python

N皇后问题

使用回溯法求解N后问题。

 

输入

皇后的个数。

输出

每一种方案及总方案数。

样例输入 Copy
4
样例输出 Copy
0 1 0 0
0 0 0 2
3 0 0 0
0 0 4 0
----------------
0 0 1 0
2 0 0 0
0 0 0 3
0 4 0 0
----------------
总方案数为:2
def dfs(row, n):global countif row == n:for i in range(n):for j in range(len(res[i])):print(res[i][j], end=" ")print()print("----------------")count += 1for j in range(n):if col[j] and dg[j + row] and udg[j + n - row]:col[j], dg[j + row], udg[j + n - row] = False, False, Falseres[row][j] = row+1dfs(row + 1, n)col[j], dg[j + row], udg[j + n - row] = True, True, Trueres[row][j] = 0n = int(input())
col = [True] * n
dg, udg = [True] * (2 * n), [True] * (2 * n)
res = [[0] * n for _ in range(n)]
count = 0
dfs(0, n)
print("总方案数为:"+str(count))

 0-1背包问题(回溯法)

题目描述

有n个物品,第i个物品重量为wi,价值为vi,现有一背包容量为C,要求把物品装入背包得到最大价值,并且要求出这些选取的物品。 要求用回溯法求解。

输入

多组测试数据,请处理到文件尾,一个整数表示物品的数量n,后一行有n个整数,代表价值,再后一行有n个整数,代表重量,最后有一个整数C代表背包容量,1<=n<=15,1<=vi<=30,1<=wi<=30,1<=C<=80。

输出

背包的最大总价值和所选取的物品,如果选取的方案有多种,请输出字典序最小的那种方案,每组测试数据应输出一行,在这里字典序最小的意思是,我们假设存在两种不同方案S,T所能得到的总价值相同且是最大的,对于方案S种选取|S|种物品,方案T选取|T|种物品,对于i=1,2...j-1,我们有si = ti,但sj < tj,则方案的S的字典序比方案T的字典序要小。由于没有使用special judge,所以如果选取得方案是S,请按照从小到大的顺序输出方案S中的物品下标。

样例输入 Copy
<span style="background-color:#ffffff"><span style="color:#333333"><span style="color:#333333"><span style="background-color:#f5f5f5">5
6 3 6 5 4
2 2 4 6 5
8</span></span></span></span>
样例输出 Copy
<span style="background-color:#ffffff"><span style="color:#333333"><span style="color:#333333"><span style="background-color:#f5f5f5">15 1 2 3</span></span></span></span>
def slove(w, v, c, n, m):jMAX = min(w[n - 1] - 1, c)for j in range(0, jMAX + 1):m[n - 1][j] = 0for j in range(w[n - 1], c + 1):m[n - 1][j] = v[n - 1]for i in range(n - 1, -1, -1):jMAX = min(w[i] - 1, c)for j in range(0, jMAX + 1):m[i][j] = m[i + 1][j]for j in range(w[i], c + 1):m[i][j] = max(m[i + 1][j], m[i + 1][j - w[i]] + v[i])while True:n = int(input())v = list(map(int, input().split()))w = list(map(int, input().split()))c = int(input())m = [[0] * (c + 1) for i in range(n + 1)]x = []slove(w, v, c, n, m)print(m[0][c], end=" ")for i in range(0, n):if m[i][c] != m[i + 1][c]:x.append(i + 1)c -= w[i]for i in x:print(i, end=' ')print()

 简单递归求和

题目描述

使用递归编写一个程序求如下表达式前n项的计算结果:  (n<=100)
1 -  3 + 5 - 7 + 9 - 11 +......
输入n,输出表达式的计算结果。

输入

多组输入,每组输入一个n,n<=100。

输出

输出表达式的计算结果。

样例输入 Copy
1
2
样例输出 Copy
1
-2
while True:n = int(input())if n <= 100:flag = 1sum = 0for i in range(1, n + 1):sum += flag * (2 * i - 1)flag = -1 * flagprint(sum)

 递归求和

题目描述

使用递归编写一个程序求如下表达式的计算结果:  (1<n<=20)
S(n) = 1*4 + 4*9 + 9*16 + 16*25 + ... + ((n-1)^2)*n^2
输入n,输出表达式S(n)的结果。

输入

单组输入,输入一个正整数n,1<n<=20。

输出

输出表达式S(n)的计算结果。

样例输入 Copy
3
样例输出 Copy
40
n = int(input())
sum = 0
if 1 < n <= 20:for i in range (2, n + 1):sum += (i - 1) * (i - 1) * i * iprint(sum)

 文件存储

题目描述

如果有n个文件{F1,F2,F3,…,Fn}需要存放在大小为M的U盘中,文件i的大小为Si,1<=i<=n。请设计一个算法来提供一个存储方案,使得U盘中存储的文件数量最多。

输入

多组输入,对于每组测试数据,每1行的第1个数字表示U盘的容量M(以MB为单位,不超过256*1000MB),第2个数字表示待存储的文件个数n。
第2行表示待存储的n个文件的大小(以MB为单位)。

输出

输出最多可以存放的文件个数。

样例输入 Copy
10000 5
2000 1000 5000 3000 4000
样例输出 Copy
4
while True:m, n = map(int, input().split())a = list(map(int, input().split()))count = 0a.sort()for i in range(n):if a[i] <= m:m -= a[i]count += 1print(count)

挑选奖品 

题目描述

X星人参加了一档幸运大抽奖节目,凭借无敌好运气中了一等奖。节目组给他准备了一个奖品箱,这个箱子中一共有M个格子,每个格子中只能放一个奖品。
现在一共有N个不同的奖品供X星人挑选,不同的奖品其价值不一定相等
“贪心的”X星人希望所挑选的奖品的价值和最大,需要你编写一个程序帮他计算出所能得到的最大价值和。

输入

单组输入。
第1行包含两个正整数M和N,分别表示奖品箱中格子的数量和奖品的总数。(1< M<=10^5且1<N<=10^5)
第2行包含N个正整数,分别表示N个奖品的价值,两两之间用空格隔开。

输出

奖品箱中所有奖品的最大价值和。

样例输入 Copy
3 5
1 3 2 6 5
样例输出 Copy
14
m, n = map(int, input().split())
a = list(map(int, input().split()))
sum = 0
a.sort(reverse=True)
if m >= n:for i in range(n):sum += a[i]
elif m < n:for i in range(m):sum += a[i]
print(sum)

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

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

相关文章

安防视频监控系统EasyCVR实现H.265视频在3秒内起播的注意事项

可视化云监控平台/安防视频监控系统EasyCVR视频综合管理平台&#xff0c;采用了开放式的网络结构&#xff0c;可以提供实时远程视频监控、视频录像、录像回放与存储、告警、语音对讲、云台控制、平台级联、磁盘阵列存储、视频集中存储、云存储等丰富的视频能力&#xff0c;同时…

spdlog中的异步日志方案

日志方案 同步日志方案&#xff1a;立即输出日志记录的方案才能继续执行其他任务。 异步日志方案&#xff1a;先抛出一个日志记录的任务到某个地方&#xff0c;不马上执行打印也不影响往下执行其他任务。 二者关键区别是产生日志记录并调用相关的日志任务接口之后&#xff0…

若依报500异常,只有前端没有后端

1.在vue.config.js中target的网址为https://vue.ruoyi.vip, process.env.VUE_APP_BASE_API]: { target: https://vue.ruoyi.vip,}2.pathRewrite单引号中加入 /prod-api pathRewrite: { ^ process.env.VUE_APP_BASE_API]: /prod-api3.在.env.development中变更 VUE_APP_BASE…

【Python】Python 输出中文乱码问题解决

Python 中文乱码的解决方法 1. 理解编码和解码 Python的字符编码遵循Unicode标准,但在不同的操作系统和编程环境下会有不同的默认字符编码,导致中文输出出现乱码等问题。解决中文输出乱码的问题,需要先理解编码和解码的概念。 编码: 把字符转换成字节序列的过程。因为计算…

CMMI认证办理流程以及需要参与的人员

CMMI&#xff08;Capability Maturity Model Integration&#xff09;认证是衡量软件企业过程管理成熟度的一种标准&#xff0c;它由美国卡内基-梅隆大学软件工程研究中心与美国国防部共同开发。CMMI认证分为五个等级&#xff0c;从低到高依次为1级到5级。以下是办理CMMI证书的…

数据结构-汇总

时间复杂度-汇总 一、二叉树 1、树的结构-初期 2、二叉树的分类-平衡树-红黑树 二叉树的旋转-LL\RR\RL\LR 3、二叉树的旋转-高级一步到位 4、红黑树特征、删除、插入

test mock-01-什么是 mock? Mockito/EasyMock/PowerMock/JMockit/Spock mock 框架对比

拓展阅读 test 之 jmockit-01-overview jmockit-01-test 之 jmockit 入门使用案例 mockito-01-overview mockito 简介及入门使用 PowerMock Mock Server ChaosBlade-01-测试混沌工程平台整体介绍 jvm-sandbox 入门简介 单元测试中的 mock 单元测试是一种验证代码单元&…

K8S网络类型

k8s的网络类型 k8s的通信模式 1 pod内部之间容器与容器之间的通信&#xff0c;在同一个pod中容器是共享资源和网络&#xff0c;使用同一个网络命名空间&#xff0c;可以直接通信 2 同一个node节点之内&#xff0c;不同pod之间的通信&#xff0c;每个pod都有一个全局的真实ip地…

AI 领域代币市场趋势:探索最热门投资领域的前沿动向

作者&#xff1a;lesleyfootprint.network 数据源&#xff1a;Token Sector Dashboard ChatGPT 的热潮点燃了 AI 领域&#xff0c;AI 与区块链技术的融合成为市场关注的焦点。因为区块链的一个显著特征是它能够在链上安全地存储大量数据&#xff0c;这与 AI 模型对数据的密集…

mysql面试题:索引(B+树、聚集索引、二级索引、回表查询、覆盖索引、超大分页查询、索引创建原则)

索引 概念 索引&#xff08;index&#xff09;是帮助MySQL高效获取数据的数据结构(有序)。在数据之外&#xff0c;数据库系统还维护着满足特定查找算法的数据结构**&#xff08;B树&#xff09;**&#xff0c;这些数据结构以某种方式引用&#xff08;指向&#xff09;数据&am…

安装虚拟机在虚拟机里面安装WindowsServer2012与步骤

目录 一、VMware介绍 1.1、概念讲解 1.2、VMware虚拟机的安装讲解 1.3、具体操作步骤 二、虚拟机安装WindowsServer2012演示 2.1、在虚拟机里配置具体步骤 (相当于制作启动U盘) 2.2、安装windows server2012步骤演示 三、Windows Server2012激活步骤演示 四、思维导…

golang并发安全-sync.map

sync.map解决的问题 golang 原生map是存在并发读写的问题&#xff0c;在并发读写时候会抛出异常 func main() {mT : make(map[int]int)g1 : []int{1, 2, 3, 4, 5, 6}g2 : []int{4, 5, 6, 7, 8, 9}go func() {for i : range g1 {mT[i] i}}()go func() {for i : range g2 {mT[…

【SpringBoot篇】优惠券秒杀 — 添加优惠劵操作(基本操作 | 一人仅一张券的操作)

文章目录 &#x1f354;发放优惠券&#x1f386;基本操作&#x1f384;数据库表&#x1f6f8;思路&#x1f339;代码实现 &#x1f386;完善后的操作&#x1f6f8;乐观锁&#x1f339;代码实现 &#x1f354;一人仅一张优惠券&#x1f6f8;思路&#x1f339;代码⭐代码分析 &am…

git远程操作,推送【push】,拉取【pull】,忽略特殊文件,配置别名,标签管理

文章目录 前言&#xff1a;新建远程仓库克隆推送【push】拉取【pull】 配置git忽略特殊文件给命令配置别名 标签管理理解标签创建标签操作标签 前言&#xff1a; 大家如果没有看过前几章git的基础操作的话&#xff0c;推荐先看一下&#xff0c;看完再来看这个远程操作&#xf…

【PHP】取出数组中的第一个元素

目录 1.使用 reset() 函数&#xff1a; 2.使用 array_shift() 函数&#xff1a; 在 PHP 中&#xff0c;可以使用 reset() 函数或者 array_shift() 函数来取出数组中的第一个元素。 1.使用 reset() 函数&#xff1a; $array [1, 2, 3, 4, 5]; $firstElement reset($array);…

2023年总结:反复纠结与成长的一年

前言 这是我第五年写年度总结&#xff1a; 《2022年总结&#xff1a;道阻且长&#xff0c;行则将至》 《2021年总结&#xff1a;前路有光&#xff0c;初心莫忘》 《2020年总结&#xff0c;所有努力只为一份期待》 《2019年总结&#xff0c;平凡的我仍在平凡的生活》 现在…

【超图】SuperMap iClient3D for WebGL/WebGPU —— 数据集合并缓存如何控制对象样式

作者&#xff1a;taco 最近在支持的过程中&#xff0c;遇到了一个新问题&#xff01;之前研究功能的时候竟然没有想到。通常我们控制单个对象的显隐、颜色、偏移的参数都是根据对象所在的图层以及对象单独的id来算的。那么问题来了&#xff0c;合并后的图层。他怎么控制单个对象…

gorm 使用sql方法

var users []User// 查询 执行用Scan 和Find 一样dbdb.Raw("select uid,user_name,age from Users").Scan(&users)//dbdb.Raw("select uid,user_name,age from Users").Find(&users)fmt.Println("Users",users)// 更新和删除.插入用 …

【Recruitment】

Network I)JD I)JD 1、英语听说读写熟练&#xff0c;有较强的英语沟通能力&#xff1b;2、丰富的网络项目管理和运维管理经验&#xff1b;3、有较强的沟通能力&#xff1b;4、有丰富的供应商管理经验&#xff1b;5、熟悉ITIL管理流程&#xff1b;6、有敏锐的发现问题的能力&am…

面试官:SpringBoot项目中,要如何1秒实现异步接口?

今年IT寒冬&#xff0c;大厂都裁员或者准备裁员&#xff0c;作为开猿节流主要目标之一&#xff0c;我们更应该时刻保持竞争力。为了抱团取暖&#xff0c;林老师开通了《知识星球》&#xff0c;并邀请我阿里、快手、腾讯等的朋友加入&#xff0c;分享八股文、项目经验、管理经验…