2-2基础算法-递归/进制转换

文章目录

  • 一.递归
  • 二.进制转换

一.递归

1.数的计算
在这里插入图片描述
评测系统

#include <iostream>
int countCombinations(int n) { //计算当然组合种数if (n == 1) {return 1;}int count = 1;//数字本身就是一个有效组合for (int i = 1; i <= n / 2; i++) {count += countCombinations(i);//自身+当前数所产生的组合种数}return count;
}
using namespace std;
int main()
{int n;cin >> n;cout<<countCombinations(n);
}

2.计算函数值
在这里插入图片描述
在这里插入图片描述

#include<iostream>
using namespace std;
int s(int x) {if (x == 0)return 1;else if (x % 2 == 0) {return s(x / 2);}else {return s(x - 1) + 1;}
}
int main() {int x;cin >> x;cout << s(x);
}

3.约瑟夫环

在这里插入图片描述

评测系统

#include <iostream>
using namespace std;
int f(int n,int k){if(n==1)return 1;elsereturn (f(n-1,k)+k-1)%n+1;
}
int main()
{int n,k;cin>>n>>k;cout<<f(n,k);return 0;
}

4.金额查错
在这里插入图片描述
在这里插入图片描述
评测系统

解析:假设错误的总金额是 100 元,而明细账目清单上的金额总和是 120 元,那么可能遗漏的金额组合应该总和为 20 元,因为 120 - 100 = 20。题目要求找出所有可能的组合,使得这些组合的金额总和为 20 元。

第一次:count作为金额求和的结果,寻找可行的子串

#include <iostream>
#include <vector>
using namespace std;
void f(int i, int sum, int count, vector<int>& a, vector<int>& subset, vector<vector<int>>& result) {if (sum == count) {result.push_back(subset);return;}if (i == a.size() || sum > count) {return;}subset.push_back(a[i]);f(i + 1, sum + a[i], count, a, subset, result);//包含当前元素subset.pop_back();//不包含当前元素f(i + 1, sum, count, a, subset, result);
}
int main()
{int total,n;cin >> total>> n;vector<int> a(n);int sum = 0;for (int i = 0; i < n; i++) {cin >> a[i];sum += a[i];}int count=sum - total;vector<vector<int>> result;//存放最终结果vector<int> subset;//寻找满足条件的子集f(0, 0, count, a, subset, result);for (const auto& x : result) {for (int x2 : x) {cout << x2 << " ";}cout << endl;}
}

再考虑次序和去重问题,得到最终代码

#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
void f(int i, int sum, int count, vector<int>& a, vector<int>& subset, vector<vector<int>>& result) {if (sum == count) {result.push_back(subset);return;}if (i == a.size() || sum > count) {return;}for (int j = i; j < a.size(); ++j) {if (j > i && a[j] == a[j - 1])continue;subset.push_back(a[j]);f(j + 1, sum + a[j], count, a, subset, result);subset.pop_back();}
}
int main()
{int total,n;cin >> total>> n;vector<int> a(n);int sum = 0;for (int i = 0; i < n; i++) {cin >> a[i];sum += a[i];}sort(a.begin(), a.end());//排序int count=sum - total;vector<vector<int>> result;//存放最终结果vector<int> subset;//寻找满足条件的子集f(0, 0, count, a, subset, result);for (const auto& x : result) {for (int x2 : x) {cout << x2 << " ";}cout << endl;}
}

二.进制转换

1.任意进制转十进制:x=xk+a

如十六转十

在这里插入图片描述

在这里插入图片描述
评测系统

#include <iostream>
using namespace std;
int main()
{string s = "2021ABCD";int a[100];//存放十六进制的每个数for (int i = 0; i < s.length(); i++) { //调整十六进制数if (s[i] >= '0' && s[i] <= '9') {a[i] = s[i]-'0';}else {a[i] = 10+s[i] - 'A';}}int x=0;//输出的十进制数for (int i = 0; i < s.length(); i++) { //【转换代码】x = x * 16 + a[i];}cout << x;
}

2.十进制转任意进制:通过数组a输出

while(x){a[cnt++]=x%k;x=x/k;
}
reverse(a,a+cnt);

在这里插入图片描述
评测系统

#include <iostream>
#include <algorithm>
#include <string>
using namespace std;
int main()
{int T;cin >> T;while (T--) {int N, M;cin >> N >> M;string s;cin >> s;long long int a[100];//【先转成十进制】for (int i = 0; i < s.length(); i++) {if (s[i] >= '0' && s[i] <= '9') {a[i] = s[i] - '0';}else {a[i] = 10 + s[i] - 'A';}}long long int x = 0;//输出的十进制数for (int i = 0; i < s.length(); i++) {x = x * N + a[i];}if (M == 10) {cout << x << endl;}else { //【十进制转M进制】string b[100];int cnt = 0;while (x) {if (x % M >= 10) {b[cnt++] = x % M - 10 + 'A';}elseb[cnt++] = to_string(x % M);x = x / M;}reverse(b, b + cnt);//翻转//输出for (int i = 0; i < cnt; i++) {cout << b[i];}cout << endl;}}
}

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

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

相关文章

【51单片机系列】proteus中创建16x16LED点阵

本文参考来源&#xff1a; Proteus8.6中16x16LED点阵制作教程【Proteus】16乘16点阵滚动播放 文章目录 一、测试proteus中的8x8点阵驱动方式1.1 测试电流通过方向1.2 测试行列控制接口 二、使用proteus中的8x8点阵制作16x16LED点阵三、测试制作的16x16LED点阵四、使用自制的16x…

【Hive】

一、Hive是什么 Hive是一款建立在Hadoop之上的开源数据仓库系统&#xff0c;将Hadoop文件中的结构化、半结构化数据文件映射成一张数据库表&#xff0c;同时提供了一种类SQL语言&#xff08;HQL&#xff09;&#xff0c;用于访问和分析存在Hadoop中的大型数据集。Hive的核心是将…

Collecting Application Engine Performance Data 收集应用程序引擎性能数据

You can collect performance data of any specific SQL action of an Application Engine program to address any performance issue. 您可以收集应用程序引擎程序的任何特定SQL操作的性能数据&#xff0c;以解决任何性能问题。 You can collect performance data of the S…

LeetCode 每日一题 Day 11||贪心

2697. 字典序最小回文串 给你一个由 小写英文字母 组成的字符串 s &#xff0c;你可以对其执行一些操作。在一步操作中&#xff0c;你可以用其他小写英文字母 替换 s 中的一个字符。 请你执行 尽可能少的操作 &#xff0c;使 s 变成一个 回文串 。如果执行 最少 操作次数的方…

【虹科分享】基于Redis Enterprise,LangChain,OpenAI 构建一个电子商务聊天机器人

如何构建你自己的商务聊天机器人&#xff1f;注意哦&#xff0c;是你自己的聊天机器人。一起来看看Redis Enterprise的向量检索是怎么帮你实现这个愿望的吧。 鉴于最近人工智能支持的API和网络开发工具的激增&#xff0c;似乎每个人都在将聊天机器人集成到他们的应用程序中。 …

HAProxy 根据报文解析来定义不同的acl

1 .在 HAProxy 中使用 ACLs&#xff08;Access Control Lists&#xff09;检查 TCP 报文内容时&#xff0c;你可以使用 payload 关键字。以下是一个例子&#xff0c;演示如何在 HAProxy 的 ACL 中使用 payload&#xff1a; frontend my_frontendbind *:80mode tcpacl payload_h…

原生cesium、mars3d、supermap-cesium在vue3+vite中引入

1. 原生cesium 需要下载 yarn add cesiumyarn add vite-plugin-cesium2. mars3d 需要下载 yarn add mars3d mars3d-cesiumyarn add vite-plugin-mars3d3. supermap-cesium 只需要引入官网下载的包&#xff0c;build文件夹下的cesium&#xff0c;以及项目中引入的其他cesiu…

【深度学习】PHP操作mysql数据库总结

一.PHP数据库的扩展分类 1.MySQL 扩展是针对 MySQL 4.1.3 或更早版本设计的&#xff0c;是 PHP 与 MySQL数据库交互的早期扩展。由于其不支持 MySQL 数据库服务器的新特性&#xff0c;且安全性差&#xff0c;在项目开发中不建议使用&#xff0c;可用 MySQLi 扩展代替。 2.MySQ…

Android BottomSheetBehavior(底部弹窗)

目录 一、BottomSheetBehavior 介绍 二、BottomSheetBehavior 基本使用 2.1 在 CoordinatorLayout 中添加底部工作表&#xff1a; 2.2 在代码中获取 BottomSheetBehavior 实例&#xff1a; 2.3 设置工作表的状态&#xff0c;如展开、折叠等 2.4 工作表的状态 三、Bottom…

嵌入式系统未来的发展趋势走向???

人工智能和机器学习应用 模型优化&#xff1a; 为了在资源有限的嵌入式系统上运行&#xff0c;将会看到更多的努力投入到精简、优化和量化模型&#xff0c;以适应边缘计算的环境。 边缘推理&#xff1a; 嵌入式设备将更多地执行本地推理&#xff0c;而不是将所有数据发送到云端…

Android原生 MQTT开发

一、引包 1.1.模块的build.gradle //mqtt框架implementation org.eclipse.paho:org.eclipse.paho.client.mqttv3:1.1.0implementation org.eclipse.paho:org.eclipse.paho.android.service:1.1.1implementation org.bouncycastle:bcpkix-jdk15on:1.59 1.2 旧版AndroidStudio开…

【设计模式--行为型--命令模式】

设计模式--行为型--命令模式 命令模式定义结构案例优缺点使用场景 命令模式 定义 将一个请求封装为一个对象&#xff0c;使发出请求的责任和执行请求的责任分割开。这样两者之间通过命令对象进行沟通&#xff0c;这样方便将命令对象进行存储&#xff0c;传递&#xff0c;调用…

Springboot整合Redis实现消息发布订阅

一、前言 有时候在实际项目中&#xff0c;某些业务场景下我们需要使用消息的发布订阅功能&#xff0c;以实现某些特殊的需求&#xff0c;那么我们实际上可以有多种选择&#xff0c;比如使用常见的消息中间件Rabbitmq&#xff0c;Kafka&#xff0c;Activemq等&#xff0c;但这几…

Nodejs 第二十四章(zlib)

在 Node.js 中&#xff0c;zlib 模块提供了对数据压缩和解压缩的功能&#xff0c;以便在应用程序中减少数据的传输大小和提高性能。该模块支持多种压缩算法&#xff0c;包括 Deflate、Gzip 和 Raw Deflate。 zlib 模块的主要作用如下&#xff1a; 数据压缩&#xff1a;使用 z…

07--面向对象OOP--02

学习面向对象内容的三条主线 Java类及类的成员&#xff1a;&#xff08;重点&#xff09;属性、方法、构造器&#xff1b;&#xff08;熟悉&#xff09;代码块、内部类面向对象的特征&#xff1a;封装、继承、多态、&#xff08;抽象&#xff09;其他关键字的使用&#xff1a;…

城轨线路列车时刻表与车站客流控制协同优化方法

文章信息 论文题目为《城轨线路列车时刻表与车站客流控制协同优化方法》&#xff0c;该文于2021年发表于《交通运输系统工程与信息》上。文章考虑换入客流影响下列车时刻表与客流控制的协同优化问题&#xff0c;以最小化乘车延误人数为目标&#xff0c;以列车时刻表、客流控制和…

前端成神之路-CSS基础选择器

前端成神之路-CSS基础选择器 目录 前端成神之路-CSS基础选择器 CSS选择器&#xff08;重点&#xff09; 1. CSS选择器作用&#xff08;重点&#xff09; 选择器的作用 2. CSS基础选择器 2.1 标签选择器 2.2 类选择器 2.3 类选择器特殊用法- 多类名 2.4 id选择器 id选…

java代码编写twitter授权登录

在上一篇内容已经介绍了怎么申请twitter开放的API接口。 下面介绍怎么通过twitter提供的API&#xff0c;进行授权登录功能。 开发者页面设置 首先在开发者页面开启“用户认证设置”&#xff0c;点击edit进行信息编辑。 我的授权登录是个网页&#xff0c;并且只需要进行简单的…

动物姿态估计:微调 YOLOv8 姿态模型

动物姿态估计是计算机视觉的一个研究领域&#xff0c;是人工智能的一个子领域&#xff0c;专注于自动检测和分析图像或视频片段中动物的姿势和位置。目标是确定一种或多种动物的身体部位&#xff08;例如头部、四肢和尾巴&#xff09;的空间排列。这项技术具有广泛的应用&#…

目标检测YOLO系列从入门到精通技术详解100篇-【目标检测】边缘检测(附MATLAB代码实现)

目录 前言 知识储备 数字图像处理(Digital Image Processing) 数字图像处理基础知识与算法