算法常用思路总结

思路

  • 1. 求数组中最大最小值
    • 思路
    • 代码
  • 2. 计算阶乘
    • 思路:
    • 代码:
  • 3. 得到数字的每一位
    • 思路
    • 代码
  • 4. 计算时间类型
  • 5. 最大公约数、最小公倍数
  • 6. 循环数组的思想
    • 题目:猴子选大王
    • 代码
  • 补充
    • 经典例题
      • 1. 复试四则运算
        • 题目内容
        • 题解
      • 2. 数列求和
        • 题目内容
        • 题解

1. 求数组中最大最小值

思路

把数组中下标为0的值,先设置为最大(最小值),然后遍历数组,如果比它大(小)就更新。

代码

ElementType Max( ElementType S[], int N )
{ElementType maxNum=S[0];for(int i = 1;i<N;i++)if(maxNum<S[i])maxNum=S[i];return maxNum;
}

2. 计算阶乘

思路:

使用递归,把大问题分解为小问题

代码:

int Factorial(int n){if(n==0)return 1;return n*Factorial(n-1);
}

3. 得到数字的每一位

思路

通过不断的模以10,然后再除以10,不断循环,可以把得到每一位存放到数组里面(灵活处理)。

代码

// 一种表达
while(number){array[number%10]++;  //使用辅助数组记录每个位出现的次数number/=10;}// 存放每一位在数组中
while(number){array[i++]=number%10;  //使用辅助数组记录每位number/=10;}// 判断某一位出现了几次while(number){if(number%10==D)count++;number/=10;}

4. 计算时间类型

思路:可以统一转为分钟之后,统一处理。

time=hour*60+mintue

5. 最大公约数、最小公倍数

在这里插入图片描述

// 最大公约数
int gcd(int a,int b){if(b == 0)return a;return gcd(b,a%b);
}// 最小公倍数
int lcm(int a, int b) {return (a * b) / gcd(a, b);
}

6. 循环数组的思想

题目:猴子选大王

一群猴子要选新猴王。新猴王的选择方法是:让N只候选猴子围成一圈,从某位置起顺序编号为1~N号。从第1号开始报数,每轮从1报到3,凡报到3的猴子即退出圈子,接着又从紧邻的下一只猴子开始同样的报数。如此不断循环,最后剩下的一只猴子就选为猴王。请问是原来第几号猴子当选猴王?

代码

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>int main() {int i, N, arr[1000] = {0}, count=0;scanf("%d", &N);// 存入数组for (i = 0; i < N; i++)arr[i] = i+1;i = 0;while (1) {if (arr[(i + N) % N] != 0) {count++;}if (count % 3 == 0)arr[(i + N) % N] = 0;if (count == 3 * N-2) {printf("%d", arr[(i + N) % N]);break;}i++;}return 0;
}

补充

经典例题

1. 复试四则运算

题目内容

本题要求编写程序,计算2个复数的和、差、积、商。

输入格式:
输入在一行中按照a1 b1 a2 b2的格式给出2个复数C1=a1+b1i和C2=a2+b2i的实部和虚部。题目保证C2不为0。

输出格式:
分别在4行中按照(a1+b1i) 运算符 (a2+b2i) = 结果的格式顺序输出2个复数的和、差、积、商,数字精确到小数点后1位。如果结果的实部或者虚部为0,则不输出。如果结果为0,则输出0.0。

题解
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<math.h>int main() {double a1, b1, a2, b2, a[4], b[4];char c[4] = { '+','-','*','/' };scanf("%lf %lf %lf %lf", &a1, &b1, &a2, &b2);a[0] = a1 + a2; b[0] = b1 + b2;a[1] = a1 - a2; b[1] = b1 - b2;a[2] = a1 * a2 - b1 * b2; b[2] = b1 * a2 + b2 * a1;a[3]= (a1 * a2 + b1 * b2) / (pow(a2, 2) + pow(b2, 2));b[3]= (b1 * a2 - a1 * b2) / (pow(a2, 2) + pow(b2, 2));for (int i = 0; i < 4; i++) {if (fabs(a[i]) > 0.05 && fabs(b[i]) > 0.05) {printf("(%.1lf%+.1lfi) %c (%.1lf%+.1lfi) = %.1lf%+.1lfi", a1, b1,c[i], a2, b2, a[i], b[i]);}else if (fabs(b[i]) > 0.05) {printf("(%.1lf%+.1lfi) %c (%.1lf%+.1lfi) = %.1lfi", a1, b1, c[i], a2, b2, b[i]);}else if (fabs(a[i]) > 0.05) {printf("(%.1lf%+.1lfi) %c (%.1lf%+.1lfi) = %.1lf", a1, b1,c[i], a2, b2, a[i]);}else {printf("(%.1lf%+.1lfi) %c (%.1lf%+.1lfi) = %.1lf", a1, b1, c[i],a2, b2, 0);}if(i!=3)printf("\n");}return 0;
}

2. 数列求和

题目内容

给定某数字A(1≤A≤9)以及非负整数N(0≤N≤100000),求数列之和S=A+AA+AAA+⋯+AA⋯A(N个A)。例如A=1, N=3时,S=1+11+111=123。

输入格式:
输入数字A与非负整数N。

输出格式:
输出其N项数列之和S的值。

题解
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include<math.h>int main() {double sum = 0, item = 0;int A, N;scanf("%d %d",&A,&N);for (int i = 0; i < N; i++) {// 和之前的每一项计算不太一样item+= A * pow(10, i);sum += item;}printf("%.lf", sum);return 0;
}

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

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

相关文章

专升本-拓展部分-信息安全

信息安全&#xff1a; 1.信息本身的安全&#xff0c;也是信息安全的基本属性&#xff1a;保密性&#xff0c;完整性&#xff0c;可用性 信息本身的安全是指保证信息的保密性&#xff08;非授权用户不能访问信息&#xff09;&#xff0c;完整性&#xff08;信息正确&#xff0c…

Pytest 测试框架与Allure 测试报告——Allure2测试报告-L3

目录&#xff1a; allure2报告中添加附件-图片 Allure2报告中添加附件Allure2报告中添加附件&#xff08;图片&#xff09;应用场景Allure2报告中添加附件&#xff08;图片&#xff09;-Python代码示例&#xff1a;allure2报告中添加附件-日志 Allure2报告中添加附件&#xff…

Flink处理函数(3)—— 窗口处理函数

窗口处理函数包括&#xff1a;ProcessWindowFunction 和 ProcessAllWindowFunction 基础用法 stream.keyBy( t -> t.f0 ).window( TumblingEventTimeWindows.of(Time.seconds(10)) ).process(new MyProcessWindowFunction()) 这里的MyProcessWindowFunction就是ProcessWi…

《WebKit 技术内幕》之五(4): HTML解释器和DOM 模型

4 影子&#xff08;Shadow&#xff09;DOM 影子 DOM 是一个新东西&#xff0c;主要解决了一个文档中可能需要大量交互的多个 DOM 树建立和维护各自的功能边界的问题。 4.1 什么是影子 DOM 当开发这样一个用户界面的控件——这个控件可能由一些 HTML 的标签元素…

【前端学习笔记2】javaScript基础

是什么&#xff1a; 是一种运行在客户端&#xff08;服务器的编程语言&#xff09; javacript分为行内JavaScript&#xff0c;内部JavaScript&#xff0c;外部JavaScript 内部JavaScript 直接写在html中body里面 alert&#xff08;“hello&#xff0c;world”&#xff09;…

Flutter 入门

什么是Flutter Flutter 只是一个用来解决跨平台的UI框架&#xff0c;最终还是要使用原生平台进行绘制&#xff0c;对于大部分和系统API无关的页面都可以使用Flutter处理,但是有一些获取系统信息的页面比如某个页面获取Android是否打开了通知栏权限&#xff1f;获取手机电池电量…

React16源码: React中的IndeterminateComponent的源码实现

IndeterminateComponent 1 &#xff09;概述 这是一个比较特殊的component的类型&#xff0c; 就是还没有被指定类型的component在一个fibrer被创建的时候&#xff0c;它的tag可能会是 IndeterminateComponent在 packages/react-reconciler/src/ReactFiber.js 中&#xff0c;有…

Impala:基于内存的MPP查询引擎

Impala查询引擎 1、Impala概述 1、Impala概述 Impala是Cloudera公司主导研发的高性能、低延迟的交互式SQL查询引擎&#xff0c;它提供SQL语义&#xff0c;能查询存储在Hadoop的HDFS和HBase中的PB级大数据。Impala是CDH平台首选的PB级大数据实时交互式查询分析引擎 2015年11月&…

使用Sobel算子把视频转换为只剩边缘部分

效果展示 原始视频 修改后的视频 整体代码 import cv2vc cv2.VideoCapture(test.mp4)if vc.isOpened():open, frame vc.read() else:open Falsei 0 while open:ret, frame vc.read()if frame is None:breakif ret True:i 1# 转换为灰度图gray cv2.cvtColor(frame, cv…

实现分布式锁

背景 分布式锁是一种用于协调分布式系统中多个节点之间并发访问共享资源的机制。在分布式系统中&#xff0c;由于存在多个节点同时访问共享资源的可能性&#xff0c;需要使用分布式锁来保证数据的一致性和正确性。 今天要实现的是分布式场景中的互斥类型的锁。 下面时分布…

Tensorflow 入门基础——向LLM靠近一小步

进入tensflow的系统学习&#xff0c;向LLM靠拢。 目录 1. tensflow的数据类型1.1 数值类型1.2 字符串类型1.3 布尔类型的数据 2. 数值精度3. 类型转换3.1 待优化的张量 4 创建张量4.1 从数组、列表对象创建4.2 创建全0或者1张量4.3 创建自定义数值张量 5. 创建已知分布的张量&…

luceda ipkiss教程 56:画多端口螺旋线

案例分享&#xff1a;画多端口螺旋线 注&#xff1a;spiral的长度不是真实长度&#xff0c;具体可以参考教程28 代码如下&#xff1a; from si_fab import all as pdk import ipkiss3.all as i3 import numpy as np from scipy.constants import piclass SpiralCircular(i3.P…

linux perf工具使用

参考文章Linux性能调优之perf使用方法_perf交叉编译-CSDN博客 perf是一款Linux性能分析工具。比如打流性能优化的时候&#xff0c;就能够看到是哪些函数消耗的cpu高 那么linux如何编译perf工具呢&#xff1f; perf工具编译 进入perf目录下linux-3.16/tools/perf make ARCH…

HarmonyOS 应用开发入门

HarmonyOS 应用开发入门 前言 DevEco Studio Release版本为&#xff1a;DevEco Studio 3.1.1。 Compile SDK Release版本为&#xff1a;3.1.0&#xff08;API 9&#xff09;。 构建方式为 HVigor&#xff0c;而非 Gradle。 最新版本已不再支持 &#xff08;”Java、JavaScrip…

React16源码: React中的updateHostRoot的源码实现

HostRoot 的更新 1 &#xff09;概述 HostRoot 是一个比较特殊的节点, 因为在一个react应用当中它只会有一个 HostRoot, 它对应的 Fiber 对象是我们的 RootFiber 对象重点在于它的更新过程 2 &#xff09;源码 定位到 packages/react-reconciler/src/ReactFiberBeginWork.js…

【Qt】信号和槽

需要云服务器等云产品来学习Linux的同学可以移步/-->腾讯云<--/-->阿里云<--/-->华为云<--/官网&#xff0c;轻量型云服务器低至112元/年&#xff0c;新用户首次下单享超低折扣。 目录 一、Qt中的信号和槽 1、信号 2、槽 3、Q_OBJECT 二、Qt中的connect函…

Windows下 VS2022 编译OpenSSL 库

SSL是Secure Sockets Layer(安全套接层协议)的缩写,可以在Internet上提供秘密性传输。Netscape公司在推出第一个Web浏览器的同时,提出了SSL协议标准。其目标是保证两个应用间通信的保密性和可靠性,可在服务器端和用户端同时实现支持。已经成为Internet上保密通讯的工业标准…

k3s x GitLab Runner Operator,GitLab CI 云原生构建新体验

GitLab CI 是非常常用的一款 CI/CD 工具&#xff0c;只需要在 .gitlab-ci.yml 文件中用 YAML 语法编写 CI/CD 流水线即可。而 GitLab CI 能够运行的关键组件是 GitLab Runner。GitLab Runner 是一个轻量级、高扩展的代理&#xff0c;主要用来执行 GitLab CI/CD 流水线中的 Job&…

stm32 FOC系列 直流有刷控制原理

1、直流有刷驱动板 使用三极管搭建的简易 H 桥电路&#xff0c;如图 5.3.1 所示&#xff1a; 图 5.3.1 是使用三极管搭建的简易 H 桥电路&#xff0c;其中 MOTOR 表示直流有刷电机&#xff0c; Q1、 Q2、 Q3 和 Q4 为 4 个三极管&#xff0c;其中 Q1 和 Q3 接在了电源正极&…

[AutoSar]BSW_OS 08 Autosar OS_内存保护

一、 目录 一、关键词平台说明一、内存保护的概念 关键词 嵌入式、C语言、autosar、OS、BSW 平台说明 项目ValueOSautosar OSautosar厂商vector &#xff0c;芯片厂商TI 英飞凌编程语言C&#xff0c;C编译器HighTec (GCC) >>>>>回到总目录<<<<&l…