SDUT OJ《算法分析与设计》搜索算法
A - 子集和问题
Description
子集和问题的一个实例为〈S,t〉。其中,S={ x1 , x2 ,…,xn }是一个正整数的集合,c是一个正整数。子集和问题判定是否存在S的一个子集S1,使得:
![]()
。
试设计一个解子集和问题的回溯法。
对于给定的正整数的集合S={ x1 , x2 ,…,xn }和正整数c,计算S 的一个子集S1,使得:
![]()
。
Input
输入数据的第1 行有2 个正整数n 和c(n≤10000,c≤10000000),n 表示S 的大小,c是子集和的目标值。接下来的1 行中,有n个正整数,表示集合S中的元素。
Output
将子集和问题的解输出。当问题无解时,输出“No Solution!”。
Samples
Sample #1
Input
Output
5 10 2 2 6 5 4
2 2 6
#include<bits/stdc++.h>
using namespace std;
const int N = 1e4 + 10;
int a[N];
int ans[N] = {0};
int n, c, sum;
bool flag = 0;
void print(int len){for(int i = 0; i < len; i++){if(i == len - 1){cout << ans[i] << "\n";}else{cout << ans[i] << ' ';}}
}
void Search(int x, int sum, int len){if(sum > c || flag) return ;if(sum == c){print(len);flag = 1;return ;}for(int i = x; i < n; i++){if(a[i] + sum <= c){ans[len] = a[i];Search(i+1, sum+a[i], len+1);}}
}
int main()
{sum = 0;cin >> n >> c;for(int i = 0; i < n; i++){cin >> a[i];sum += a[i];}if(sum < c){cout << "No Solution!" << "\n";}else{Search(0, 0, 0);if(!flag){cout << "No Solution!" << "\n";}}return 0;
}
B - 运动员最佳匹配问题
Description
羽毛球队有男女运动员各n 人。给定2 个n×n 矩阵P 和Q。P[i][j]是男运动员i 和女运动员j配对组成混合双打的男运动员竞赛优势;Q[i][j]是女运动员i和男运动员j配合的女运动员竞赛优势。由于技术配合和心理状态等各种因素影响,P[i][j]不一定等于Q[j][i]。男运动员i和女运动员j配对组成混合双打的男女双方竞赛优势为P[i][j]*Q[j][i]。
设计一个算法,计算男女运动员最佳配对法,使各组男女双方竞赛优势的总和达到最大。
设计一个算法,对于给定的男女运动员竞赛优势,计算男女运动员最佳配对法,使各组男女双方竞赛优势的总和达到最大。
Input
输入数据的第一行有1 个正整数n (1≤n≤20)。接下来的2n 行,每行n个数。前n行是p,后n行是q。
Output
将计算出的男女双方竞赛优势的总和的最大值输出。
Samples
Sample #1
Input
Output
3 10 2 3 2 3 4 3 4 5 2 2 2 3 5 3 4 5 1
52
#include<bits/stdc++.h>
using namespace std;
const int N = 22;
int n, a[N][N], b[N][N], vis[N], pre[N], sum;
void dfs(int i, int cnt){if(i > n && cnt + pre[n] - pre[i-1] > sum){sum = max(sum, cnt);return ;}if(cnt + pre[n] - pre[i-1] > sum){for(int j = 1; j <= n; j++){if(vis[j] == 0){vis[j] = 1;dfs(i + 1, cnt + a[i][j] * b[j][i]);vis[j] = 0;}}}
}
int main()
{cin >> n;for(int i = 1; i <= n; i++){for(int j = 1; j <= n; j++){cin >> a[i][j];}}for(int i = 1; i <= n; i++){for(int j = 1; j <= n; j++){cin >> b[i][j];}}for(int i = 1; i <= n; i++){for(int j = 1; j <= n; j++){pre[i] = max(pre[i], a[i][j] * b[j][i]);}pre[i] += pre[i-1];}dfs(1, 0);cout << sum << "\n";return 0;
}
C - 工作分配问题
Description
设有n件工作分配给n个人。将工作i分配给第j个人所需的费用为 cij。试设计一个算法,为每一个人都分配1 件不同的工作,并使总费用达到最小。
设计一个算法,对于给定的工作费用,计算最佳工作分配方案,使总费用达到最小。
Input
输入数据的第一行有1 个正整数n (1≤n≤11)。接下来的n行,每行n个数,表示工作费用。
Output
将计算出的最小总费用输出。
Samples
Sample #1
Input
Output
3 10 2 3 2 3 4 3 4 5
9
#include<bits/stdc++.h>
using namespace std;
const int N = 25;
const int INF = 0x3f3f3f3f;
int n, ans;
int a[N][N], vis[N];
void dfs(int i, int sum){if(sum > ans) return ;if(i == n + 1 && sum < ans){ans = sum;return ;}for(int j = 1; j <= n; j++){if(!vis[j]){vis[j] = 1;dfs(i + 1, sum + a[i][j]);vis[j] = 0;}}
}
int main()
{cin >> n;for(int i = 1; i <= n; i++){for(int j = 1; j <= n; j++){cin >> a[i][j];}}ans = INF;dfs(1, 0);cout << ans << "\n";return 0;
}
D - 整数变换问题
Description
整数变换问题。关于整数i的变换f和g定义如下:f(i)=3i;
![]()
试设计一个算法,对于给定的2 个整数n和m,用最少的f和g变换次数将n变换为m。例如,可以将整数15用4 次变换将它变换为整数4:4=gfgg(15)。当整数n不可能变换为整数m时,算法应如何处理?
对任意给定的整数n和m,计算将整数n变换为整数m所需要的最少变换次数。
Input
输入数据的第一行有2 个正整数n和m。n≤100000,m≤1000000000。
Output
将计算出的最少变换次数以及相应的变换序列输出。第一行是最少变换次数。第2 行是相应的变换序列。
Samples
Sample #1
Input
Output
15 4
4 gfgg
#include<bits/stdc++.h>
using namespace std;
int maxn, n, m;
char f[101];
int search(int step, int sum){if(step > maxn) return 0;if(m == sum * 3 || search(step + 1, sum * 3)){f[step] = 'f';return 1;}if(sum / 2 == m || search(step+1, sum/2)){f[step] = 'g';return 1;}return 0;
}
int main()
{cin >> n >> m;maxn = 1;while(!search(1, n)){maxn ++;}cout << maxn << "\n";for(int i = maxn; i >= 1; i--){cout << f[i];}cout << "\n";return 0;
}
相关文章:
SDUT OJ《算法分析与设计》搜索算法
A - 子集和问题 Description 子集和问题的一个实例为〈S,t〉。其中,S{ x1 , x2 ,…,xn }是一个正整数的集合,c是一个正整数。子集和问题判定是否存在S的一个子集S1,使得: 。 试设计一个解子…...
【NI-DAQmx入门】校准
1.设备定期校准的理由 随着时间的推移电子器件的特性会发生自然漂移,可能会导致测量结果的不准确性。防止出现良品和差品筛选出错的情况满足行业国际标准降低设备出现故障的风险使测量结果更具备参考性 2.查找NI设备的校准间隔。 定期校准会使DAQ设备的精度保持在…...
C语言链表
head.h typedef struct Node_s{int data; //数据域struct Node_s *pNext; //指针域 } Node_t, *pNode_t;void headInsert(pNode_t *ppHead, pNode_t *ppTail, int data); void print(pNode_t pHead); void tailInsert(pNode_t *ppHead, pNode_t *ppTail, int data); void sort…...
LabVIEW进行MQTT通信及数据解析
需求:一般通过串口的方式进行数据的解析,但有时候硬件的限制,没法预留串口,那么如何通过网络的方式特别是MQTT数据的通信及解析 解决方式: 1.MQTT通信控件: 参考开源的mqtt-LabVIEW https://github.com…...
基于DOTween插件实现金币飞行到指定位置功能
文章目录 前言一、DOTween是什么?二、使用步骤1.导入DOTween插件在Unity官方插件商店找到DOTween插件导入DOTween插件启用DOTween插件 2.代码逻辑金币飞行代码控制飞行效果代码 3.物体配置1.物体上装配CoinEffect脚本2.在金币预制体上装配FlyControl脚本 三、效果展…...
python-opencv 培训课程作业
python-opencv 培训课程作业 作业一: 第一步:读取 res 下面的 flower.jpg,读取彩图,并用 opencv 展示 第二步:彩图 -> 灰度图 第三步:反转图像:最大图像灰度值减去原图像,即可得…...
【Go入门】并发
【Go入门】并发 有人把Go比作21世纪的C语言,第一是因为Go语言设计简单,第二,21世纪最重要的就是并行程序设计,而Go从语言层面就支持了并行。 goroutine goroutine是Go并行设计的核心。goroutine说到底其实就是协程,…...
Java虚拟机运行时数据区结构详解
Java虚拟机运行时数据区结构如图所示 程序计数器 程序计数器(Program Counter Register)是一块较小的内存空间,它可以看作是当前线程所执行的字节码的行号指示器。 多线程切换时,为了能恢复到正确的执行位置,每条线程…...
华为OD机试 - 转盘寿司(Java JS Python C)
目录 题目描述 输入描述 输出描述 用例 题目解析 JS算法源码 Java算法源码...
【ATTCK】MITRE Caldera-emu插件
CALDERA是一个由python语言编写的红蓝对抗工具(攻击模拟工具)。它是MITRE公司发起的一个研究项目,该工具的攻击流程是建立在ATT&CK攻击行为模型和知识库之上的,能够较真实地APT攻击行为模式。 通过CALDERA工具,安全…...
23111709[含文档+PPT+源码等]计算机毕业设计基于Spring Boot智能无人仓库管理-进销存储
文章目录 **软件开发环境及开发工具:****功能介绍:****论文截图:****数据库:****实现:****代码片段:** 编程技术交流、源码分享、模板分享、网课教程 🐧裙:776871563 软件开发环境及…...
SDUT OJ《算法分析与设计》贪心算法
A - 汽车加油问题 Description 一辆汽车加满油后可行驶n公里。旅途中有若干个加油站。设计一个有效算法,指出应在哪些加油站停靠加油,使沿途加油次数最少。并证明算法能产生一个最优解。 对于给定的n和k个加油站位置,计算最少加油次数。 I…...
金融业务系统: Service Mesh用于安全微服务集成
随着云计算的不断演进,微服务架构变得日益复杂。为了有效地管理这种复杂性,人们开始采用服务网格。在本文中,我们将解释什么是Service Mesh,为什么它对现代云架构至关重要,以及它是如何解决开发人员今天面临的一些最紧…...
Linux下快速确定目标服务器支持哪些协议和密码套件
实现原理是利用TLS协议的特点和握手过程来进行测试和解析响应来确定目标服务器支持哪些TLS协议和密码套件。 在TLS握手过程中,客户端和服务器会协商并使用相同的TLS协议版本和密码套件来进行通信。通过发送特定的握手请求并分析响应,可以确定目标服务器…...
LeetCode100122. Separate Black and White Balls
文章目录 一、题目二、题解 一、题目 There are n balls on a table, each ball has a color black or white. You are given a 0-indexed binary string s of length n, where 1 and 0 represent black and white balls, respectively. In each step, you can choose two a…...
系列二十六、idea安装javap -c
一、概述 javap -c是一个能够将.java文件反编译为.class文件的指令,例如我在idea中编写了一个Car.java文件,我想看看这个类被编译后长什么样的,就可以使用该指令进行查看。 二、配置 2.1、 Java Bytecode Decompiler File>Settings>Pl…...
nginx 如何根据IP做限流,以及 nginx 直接返回 json 格式数据
Nginx 限流配置 Nginx是如何限流的。随着业务的扩散,系统并发越来越高时,有三样利器用来保护系统,分别是缓存、降级和限流。 随着业务的扩散,系统并发越来越高时,有三样利器用来保护系统,分别是缓存、降…...
C语言链式栈
stack.h typedef struct Node_s {int data;struct Node_s *pNext; } Node_t, *pNode_t;typedef struct Stack_s {pNode_t pHead;//栈顶指针,指向了链表的第一个结点int size;//栈的元素个数 } Stack_t, *pStack_t;void init(pStack_t pStack); void push(pStack_t …...
【Go入门】 Go的http包详解
【Go入门】 Go的http包详解 前面小节介绍了Go怎么样实现了Web工作模式的一个流程,这一小节,我们将详细地解剖一下http包,看它到底是怎样实现整个过程的。 Go的http有两个核心功能:Conn、ServeMux Conn的goroutine 与我们一般编…...
解决k8s node节点报错: Failed to watch *v1.Secret: unknown
现象: 这个现象是发生在k8s集群证书过期,重新续签证书以后。 记得master节点的/etc/kubernetes/kubelet.conf文件已经复制到node节点了。 但是为什么还是报这个错,然后运行证书检查命令看一下: 看样子是差/etc/kubernetes/pki/…...
别再只做静态模型了!用Unity 3D + WebGL打造你的第一个可交互数字孪生看板
从静态到动态:用Unity 3D WebGL构建工业级数字孪生看板实战指南 当传统工业监控系统还停留在二维图表和静态数据展示时,数字孪生技术正在重新定义设备管理的交互方式。想象一下:在浏览器中旋转查看工厂设备的实时三维模型,点击某…...
3大维度掌握Ryujinx:Switch模拟器从配置到优化的全流程指南
3大维度掌握Ryujinx:Switch模拟器从配置到优化的全流程指南 【免费下载链接】Ryujinx 用 C# 编写的实验性 Nintendo Switch 模拟器 项目地址: https://gitcode.com/GitHub_Trending/ry/Ryujinx Ryujinx作为一款用C#编写的开源Switch模拟器,为玩家…...
4步攻克Dlib库Windows安装难题:从环境诊断到功能验证的完整指南
4步攻克Dlib库Windows安装难题:从环境诊断到功能验证的完整指南 【免费下载链接】Dlib_Windows_Python3.x Dlib compiled binaries (.whl) for Python 3.7-3.14 and Windows x64 项目地址: https://gitcode.com/gh_mirrors/dl/Dlib_Windows_Python3.x 一、环…...
美团外卖省钱终极指南:如何用自动化脚本每月多省200元
美团外卖省钱终极指南:如何用自动化脚本每月多省200元 【免费下载链接】meituan-shenquan 美团 天天神券 地区活动 自动化脚本 项目地址: https://gitcode.com/gh_mirrors/me/meituan-shenquan 还在为美团天天神券抢不到而烦恼吗?还在因为忘记签到…...
LLM 算法岗 | 八股问答()· 多模态与主流模型架构
本文能帮你解决什么? 1. 搞懂FastAPI异步(async/await)到底在什么场景下能真正提升性能。 2. 掌握在FastAPI中正确使用多线程处理CPU密集型任务的方法。 3. 避开常见的坑(比如阻塞操作、数据库连接池耗尽、GIL限制)。 …...
3个专业技巧:BilibiliDown跨平台B站视频下载器的完整应用指南
3个专业技巧:BilibiliDown跨平台B站视频下载器的完整应用指南 【免费下载链接】BilibiliDown (GUI-多平台支持) B站 哔哩哔哩 视频下载器。支持稍后再看、收藏夹、UP主视频批量下载|Bilibili Video Downloader 😳 项目地址: https://gitcode.com/gh_mi…...
如何快速合并B站缓存视频?这个免费工具让你的离线观看体验无缝升级
如何快速合并B站缓存视频?这个免费工具让你的离线观看体验无缝升级 【免费下载链接】BilibiliCacheVideoMerge 项目地址: https://gitcode.com/gh_mirrors/bi/BilibiliCacheVideoMerge 你是否曾遇到这样的困境:在地铁上想观看缓存的B站番剧&…...
Agent在供应链场景能降低多少出错率?2026年智能体企业供应链应用深度解析
站在2026年的技术深水区回望,供应链管理已完成从“信息化、自动化”向“智能化、人机共生”的范式转移。在复杂的全球贸易与工业协同背景下,AI Agent(智能体)已正式跨越对话式助手的初级阶段,演进为具备自主执行能力的…...
OpenClaw性能测试:Qwen3.5-9B在不同硬件下的响应速度对比
OpenClaw性能测试:Qwen3.5-9B在不同硬件下的响应速度对比 1. 测试背景与动机 上周在部署OpenClaw自动化工作流时,我发现同样的任务在不同设备上执行速度差异巨大。这让我意识到硬件配置对AI智能体性能的影响可能被严重低估。于是决定用Qwen3.5-9B这个热…...
如何快速清理Windows冗余驱动:Driver Store Explorer终极指南
如何快速清理Windows冗余驱动:Driver Store Explorer终极指南 【免费下载链接】DriverStoreExplorer Driver Store Explorer 项目地址: https://gitcode.com/gh_mirrors/dr/DriverStoreExplorer 系统盘空间莫名消失?新硬件总是识别失败࿱…...
