快去复习吧+++常用算法及参考算法 递推法++穷举法++排序(冒泡、选择)++查找(顺序、折半)++字符串处理++方程求根++无穷级数求和

接上:常用算法及参考算法 (1)累加 (2)累乘 (3)素数 (4)最大公约数 (5)最值问题 (6)迭代法

在这里插入图片描述

常用算法及参考算法

7. 递推法

递推法通常用于通过已知的前一项或几项来计算数列的下一项。例如,斐波那契数列:

#include <stdio.h>int fibonacci(int n) {if (n <= 1) return n;return fibonacci(n - 1) + fibonacci(n - 2);
}int main() {int n = 10;printf("The %dth Fibonacci number is %d\n", n, fibonacci(n));return 0;
}

(注意:上述斐波那契实现是递归的,但对于大数可能效率较低。通常使用迭代递推实现。)

8. 穷举法

穷举法用于遍历所有可能的解。例如,找出1到100之间的所有素数:

#include <stdio.h>
#include <stdbool.h>bool is_prime(int num) {if (num <= 1) return false;for (int i = 2; i * i <= num; i++) {if (num % i == 0) return false;}return true;
}int main() {for (int i = 2; i <= 100; i++) {if (is_prime(i)) printf("%d ", i);}return 0;
}

9. 排序(冒泡、选择)

冒泡排序
void bubble_sort(int arr[], int n) {for (int i = 0; i < n - 1; i++) {for (int j = 0; j < n - i - 1; j++) {if (arr[j] > arr[j + 1]) {int temp = arr[j];arr[j] = arr[j + 1];arr[j + 1] = temp;}}}
}
选择排序
void selection_sort(int arr[], int n) {for (int i = 0; i < n - 1; i++) {int min_index = i;for (int j = i + 1; j < n; j++) {if (arr[j] < arr[min_index]) {min_index = j;}}int temp = arr[min_index];arr[min_index] = arr[i];arr[i] = temp;}
}

10. 查找(顺序、折半)

顺序查找
int sequential_search(int arr[], int n, int target) {for (int i = 0; i < n; i++) {if (arr[i] == target) return i;}return -1; // 未找到
}
折半查找(二分查找)
int binary_search(int arr[], int n, int target) {int left = 0, right = n - 1;while (left <= right) {int mid = left + (right - left) / 2;if (arr[mid] == target) return mid;if (arr[mid] < target) left = mid + 1;else right = mid - 1;}return -1; // 未找到
}

(11)字符串处理

示例:字符串反转
#include <stdio.h>
#include <string.h>void reverse_string(char *str) {char *start = str;char *end = str + strlen(str) - 1;char temp;while (start < end) {temp = *start;*start++ = *end;*end-- = temp;}
}int main() {char str[] = "Hello, World!";reverse_string(str);printf("%s\n", str); // 输出: "!dlroW ,olleH"return 0;
}

(12)方程求根

示例:一元二次方程求根
#include <stdio.h>
#include <math.h>void quadratic_roots(double a, double b, double c, double *root1, double *root2) {double discriminant = b * b - 4 * a * c;if (discriminant > 0) {*root1 = (-b + sqrt(discriminant)) / (2 * a);*root2 = (-b - sqrt(discriminant)) / (2 * a);} else if (discriminant == 0) {*root1 = *root2 = -b / (2 * a);} else {printf("方程无实数根\n");*root1 = *root2 = 0; // 或者可以设置为 NAN}
}int main() {double a = 1, b = -3, c = 2;double root1, root2;quadratic_roots(a, b, c, &root1, &root2);if (root1 != root2) {printf("方程的两个根为 %.2f 和 %.2f\n", root1, root2);} else {printf("方程的重根为 %.2f\n", root1);}return 0;
}

(13)无穷级数求和

示例:求π的近似值(使用Gregory-Leibniz级数)
#include <stdio.h>double pi_approximation(int n) {double pi = 0.0;int sign = 1;for (int i = 0; i < n; i++) {pi += sign / (2.0 * i + 1.0);sign *= -1;}pi *= 4;return pi;
}int main() {int n = 1000000; // 增大n以获取更精确的π值printf("π的近似值为: %.15f\n", pi_approximation(n));return 0;
}

(14)其它算法

示例:大小写字母转换
#include <stdio.h>char to_upper(char c) {if (c >= 'a' && c <= 'z') {return c - 'a' + 'A';}return c; // 如果不是小写字母,则保持不变
}int main() {char c = 'b';printf("'%c' 的大写为: '%c'\n", c, to_upper(c)); // 输出: 'b' 的大写为: 'B'return 0;
}

具体实现可能需要根据具体需求进行调整。
**

快去复习吧

**
在这里插入图片描述

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

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

相关文章

【LocalAI】(13):LocalAI最新版本支持Stable diffusion 3,20亿参数图像更加细腻了,可以继续研究下

最新版本v2.17.1 https://github.com/mudler/LocalAI/releases Stable diffusion 3 You can use Stable diffusion 3 by installing the model in the gallery (stable-diffusion-3-medium) or by placing this YAML file in the model folder: Stable Diffusion 3 Medium 正…

Git使用过程中涉及的几个区域

一. 简介 Git 是一个开源的分布式版本控制系统&#xff0c;可以有效、高速的处理从很小到非常大的项目版本管理&#xff0c;也是 Linus Torvalds 为了帮助管理 Linux内核开发而开发的一个开放源码的版本控制软件。 本文简单了解一下 git涉及的几个部分&#xff0c;以及git 常…

Django 模版过滤器

Django模版过滤器是一个非常有用的功能&#xff0c;它允许我们在模版中处理数据。过滤器看起来像这样&#xff1a;{{ name|lower }}&#xff0c;这将把变量name的值转换为小写。 1&#xff0c;创建应用 python manage.py startapp app5 2&#xff0c;注册应用 Test/Test/sett…

安卓中使用ttf字体文件

官方文档中提供的方法要设备能访问google&#xff1f; 官方方法 直接下载字体的fft文件 我要使用的是lexend 需要的格式可以在里面搜索 使用下载的ttf文件 解压出来 可以单独使用static里面的&#xff0c;里面是直接的lexend的各种格式 但是我这里直接使用Lexend-Vari…

IDEA Plugins中搜索不到插件解决办法

IDEA中搜不到插件有三种解决方案&#xff1a; 设置HTTP选项&#xff0c;可以通过File->Settings->Plugins->⚙->HTTP Proxy Settings进行设置 具体可参考这篇博文&#xff1a;IDEA Plugins中搜索不到插件解决办法本地安装&#xff0c;ile->Settings->Plugin…

【python】python股票量化交易策略分析可视化(源码+数据集+论文)【独一无二】

&#x1f449;博__主&#x1f448;&#xff1a;米码收割机 &#x1f449;技__能&#x1f448;&#xff1a;C/Python语言 &#x1f449;公众号&#x1f448;&#xff1a;测试开发自动化【获取源码商业合作】 &#x1f449;荣__誉&#x1f448;&#xff1a;阿里云博客专家博主、5…

【Leetcode】520. 检测大写字母

文章目录 题目思路代码复杂度分析时间复杂度空间复杂度 结果总结 题目 题目链接&#x1f517;我们定义&#xff0c;在以下情况时&#xff0c;单词的大写用法是正确的&#xff1a; 全部字母都是大写&#xff0c;比如 “USA” 。单词中所有字母都不是大写&#xff0c;比如 “le…

【科普】半导体制造过程的步骤、技术、流程

在这篇文章中&#xff0c;我们将学习基本的半导体制造过程。为了将晶圆转化为半导体芯片&#xff0c;它需要经历一系列复杂的制造过程&#xff0c;包括氧化、光刻、刻蚀、沉积、离子注入、金属布线、电气检测和封装等。 基本的半导体制造过程 1.晶圆&#xff08;Wafer&#xf…

LabVIEW电池管理系统测试平台

随着混合动力汽车技术的快速发展&#xff0c;对电池管理系统&#xff08;BMS&#xff09;的测试需求显著增加。利用LabVIEW软件开发了一款电池管理系统测试平台&#xff0c;通过模拟电池行为验证BMS的控制策略&#xff0c;从而降低成本、缩短开发周期&#xff0c;并提高整车的能…

一五三、MAC 安装MongoDB可视化工具连接

若没有安装brew包管理工具&#xff0c;在命令行输入安装命令 /bin/bash -c “$(curl -fsSL https://gitee.com/cunkai/HomebrewCN/raw/master/Homebrew.sh)”上面步骤安装完成后&#xff0c;开始安装MongoDB&#xff0c;输入安装命令&#xff1a; brew tap mongodb/brewbrew u…

FFmpeg源码:ff_ctz / ff_ctz_c函数分析

一、ff_ctz函数的作用 ff_ctz定义在FFmpeg源码目录的libavutil/intmath.h 下&#xff1a; #ifndef ff_ctz #define ff_ctz ff_ctz_c /*** Trailing zero bit count.** param v input value. If v is 0, the result is undefined.* return the number of trailing 0-bits*/…

网络编程篇:HTTP协议

一.预备知识 在客户端访问服务端时&#xff0c;要用ipport&#xff0c;但是在日常用户访问服务端的时候&#xff0c;并不会直接使用ip&#xff0c;而是使用域名&#xff0c;比如&#xff1a;百度(www.baidu,com)。 …

图像数字化基础

一、像素 1、获取图像指定位置的像素 import cv2 image cv2.imread("E:\\images\\2.png") px image[291,218] print("坐标(291,218)上的像素的BGR值是&#xff1a;",px) &#xff08;1&#xff09;RGB色彩空间 R通道&#xff1a;红色通道 G通道&…

Altera的JTAG电路下载模块为何上下拉电阻,不可不知的秘密

一、FPGA背景信息 当前的FPGA市场上有国际和国产两大体系&#xff0c;国际排名&#xff0c;一直很稳定&#xff0c;国际上前三名Xilinx、Altera、Lattice&#xff0c;国内FPG厂商也在填补空白&#xff0c;低端、中低端市场上发力&#xff0c;替代潮流已在兴起&#xff0c;目前…

Chromium 开发指南2024 Mac篇-开始编译Chromium(五)

1.引言 在之前的指南中&#xff0c;我们已经详细介绍了在 macOS 上编译和开发 Chromium 的准备工作。您学会了如何安装和配置 Xcode&#xff0c;如何下载和配置 depot_tools&#xff0c;以及如何获取 Chromium 的源代码。通过这些步骤&#xff0c;您的开发环境已经搭建完毕&am…

MTANet: 多任务注意力网络,用于自动医学图像分割和分类| 文献速递-深度学习结合医疗影像疾病诊断与病灶分割

Title 题目 MTANet: Multi-Task Attention Network for Automatic Medical Image Segmentation and Classification MTANet: 多任务注意力网络&#xff0c;用于自动医学图像分割和分类 01 文献速递介绍 医学图像分割和分类是当前临床实践中的两个关键步骤&#xff0c;其准…

【会议征稿】第五届物联网、人工智能与机械自动化国际学术会议 (IoTAIMA 2024,7月19-21)

由浙江工业大学主办&#xff0c;第五届物联网、人工智能与机械自动化国际学术会议 (IoTAIMA 2024) 将于2024年7月19-21日在浙江杭州召开。 会议旨在为从事物联网、人工智能与机械自动化的专家学者、工程技术人员、技术研发人员提供一个共享科研成果和前沿技术&#xff0c;了解学…

超详细!想进华为od的请疯狂看我!

三分钟带你全面了解华为OD 【合同及管理】签约方为科锐国际/外企德科&#xff08;人力服务公司&#xff09;&#xff0c;劳动合同期为4年&#xff0c;试用期6个月。员工关系合同管理、五险一金、考勤发薪由科锐国际/外企德科负责&#xff1b;定级定薪、员工培训、工作安排、绩…

【C++算法】——高精度(加,减,乘,除)

前言 高精度算法就是为了去解决一些比较大的数&#xff0c;这些数大到long long都存不下。&#xff0c;这里的主要思想就是用字符串来存。 下面的内容有很多用到c的容器&#xff0c;不明白的可以先去学习stl。 一 高精度加法 首先第一步就是去模拟我们自己写的加法&#xff…