算法笔记 02 —— 入门模拟
本系列为胡凡编著的算法笔记当中代码部分的精简版整理,笔者也在同时准备Leetcode刷题和实习面试,希望为有一定编码和数据结构基础的同学提供一份系统型的参考,以方便遗忘时的算法查阅、期末复习总览以及C++学习参照。
目录
01 简单模拟
Ⅰ害死人不偿命的(3*n+1)思想
Ⅱ 挖掘机技术哪家强
02 查找元素 —— 找 x
03 图形输出 —— 跟奥巴马一起编程
04 日期处理 —— 日期差值
05 进制转换
Ⅰ D 进制的 A+B
06 字符串处理
Ⅰ 回文串
Ⅱ 说反话
01 简单模拟
Ⅰ害死人不偿命的(3*n+1)思想

#include <iostream>
using namespace std;int CalCallatz(int n){int k = 0;while(n != 1){if(n % 2 == 0){n /= 2;}else{n = (n * 3 + 1) / 2;}k++;}return k;
}int main(){int n;scanf("%d", &n);int count;count = CalCallatz(n);printf("%d", count);return 0;
}
Ⅱ 挖掘机技术哪家强

#include <iostream>
using namespace std;int main(){int N;scanf("%d", &N);//输入名单int school[100000] = {0};int k, score, flag1 = 0;for(int i = 0; i < N; i++){scanf("%d%d", &k, &score);school[k] += score;if(k > flag1) flag1 = k; //flag1记录学校个数}//查找最大int maxScore = 0, flag2 = 0;for(int i=0; i<=flag1; i++){if(school[i] > maxScore){maxScore = school[i];flag2 = i; //flag2记录最大学校编号}}printf("%d %d", flag2, maxScore);return 0;
}
02 查找元素 —— 找 x

#include <iostream>
using namespace std;
const int MAXN = 210;int main(){int n, x, num[MAXN] = {0};while(scanf("%d", &n) != EOF){ //1 输入多组数据for(int i=0; i<n; i++){scanf("%d", &num[i])}scanf("%d", &x);for(int i=0; i<n; i++){if(num[i] == x){printf("%d\n", i);break; //2 节省查找时间}}if(i == n){printf("-1\n") //3 没找到也要答复一下}}return 0;
}
03 图形输出 —— 跟奥巴马一起编程

#include <iostream>
using namespace std;int main(){int N;char c;scanf("%d %c", &N,,&c); //1 注意%d和%c之间的空格for(int i=0; i<N; i++){printf("%c", c);}printf("\n");for(int i=0; i<(int)((N + 1) / 2 - 2); i++){printf("%c", c);for(int j=0; j<(N-2); j++){printf(" ");}printf("%c\n", c);}for(int i=0; i<N; i++){printf("%c", c);}return 0;
}
04 日期处理 —— 日期差值

#include <iostream>
using namespace std;//1 分解年月日
//2 年分365、366天,月分29、30、31天
//3 数据比大小,小的做加法int specialYear(int x){if(x % 4 == 0 && x % 100 != 0)return 1;else return 0;
}int main(){int data1, data2;int y1, y2, m1, m2, d1, d2;//4 二维数组,巧妙地把月份和年份联结起来int month[13][2] = {{-1,-1}, {31, 31}, {28, 29}, {31, 31}, {30, 30}, {31, 31}, {30, 30}, {31, 31}, {31, 31},{30, 30},{31, 31}, {30, 30}, {31, 31}};while(scanf("%d%d", &data1, &data2) != EOF){if((data1 - data2) < 0){int temp = data1;data1 = data2;data2 = temp;}d1 = data1 % 100, m1 = (data1 / 100) %100, y1 = data1 / 10000;d2 = data2 % 100, m2 = (data2 / 100) %100, y2 = data2 / 10000;int count = 0;while(!(y1 == y2 && m1 == m2 && d1 == d2)){d2++;count++;if(d2 == month[m2][specialYear(y2)] + 1){m2++;d2 = 1;if(m2 == 13){m2 = 1;y2++;}} }printf("%d\n", count);}return 0;
}
05 进制转换
对一个 P 进制的数,如果要转换为 Q 进制,需要分为两步:
① 将 P 进制数 x 转换为十进制数 y。
int x, P;
scanf("%d%d", &x, &P);int y = 0, product = 1;
while(x != 0){y = y + (x % 10) * product;x = x / 10;product = product * P;
}
② 将十进制数 y 转换为 Q 进制数 z。
采用 “除基取余法”。每次将待转换数 y 除以 Q,得到的余数作为低位存储,得到的商继续除以 Q 并重复上述操作,最后商为 0 时,将所有位从高到底输出得到 z。
int Q;
scanf("%d", &Q);int z[40], i = 0;
//如果十进制数y恰好等于0,那么使用while语句会使循环直接跳出,而非存放z[0]=0
do{z[i] = y % Q;y = y / Q;i++;
}while(y != 0);while(i != -1){printf("%d", z[i]);i--;
}
Ⅰ D 进制的 A+B

#include <iostream>
using namespace std;int main(){int A, B, D;scanf("%d%d%d", &A, &B, &D);int C = A + B;//除基取余法int num[40], i = 0;do{num[i++] = C % D;C /= D;}while(C != 0);while(i != -1){printf("%d", num[--i])}return 0;
}
06 字符串处理
Ⅰ 回文串

#include <iostream>
using namespace std;int main(){char str[255];gets(str);int len = strlen(str); //1 字符串长度strlen()for(int i = 0; i < (len / 2); i++){if(str[i] != str[len - 1 - i]){ printf("NO.");}}if(i == len / 2){printf("Yes.")}return 0;
}
Ⅱ 说反话

#include <iostream>
using namespace std;int main(){char str[80], word[80][80] = {(0, 0)};while(gets(str) != EOF){int m = 0, n = 0;for(int i=0; i<strlen(str); i++){if(str[i] != ' '){word[m][n++] = str[i];}else{word[m][n] = '\0'; //1 末尾是结束符\0m++;n = 0;}}while(m != 0){puts(word[m--]);printf(" ");}//2 最后一个单词之后输出空格会导致 “格式错误”puts(word[0]);}return 0;
}
相关文章:
算法笔记 02 —— 入门模拟
本系列为胡凡编著的算法笔记当中代码部分的精简版整理,笔者也在同时准备Leetcode刷题和实习面试,希望为有一定编码和数据结构基础的同学提供一份系统型的参考,以方便遗忘时的算法查阅、期末复习总览以及C学习参照。 目录 01 简单模拟 Ⅰ害…...
PyTorch 源码学习:从 Tensor 到 Storage
分享自己在学习 PyTorch 源码时阅读过的资料。本文重点关注 PyTorch 的核心数据结构 Tensor 的设计与实现。因为 PyTorch 不同版本的源码实现有所不同,所以笔者在整理资料时尽可能按版本号升序,版本号见标题前[]。最新版本的源码实现还请查看 PyTorch 仓…...
uniapp 使用 鸿蒙开源字体
uniapp vue3 使用 鸿蒙开源字体 我的需求是全局使用鸿蒙字体。 所以: 0. 首先下载鸿蒙字体: 鸿蒙资源 下载后解压,发现里面有几个文件夹: 字体名称说明Sans默认的鸿蒙字体,支持基本的多语言字符(包括字…...
LabVIEW多电机CANopen同步
核心问题与解决方案 通信层配置 节点ID与波特率冲突问题:在多电机系统中,节点ID重复或波特率不匹配常导致通信中断或数据丢失。案例:某3轴贴片机因步科驱动器的默认节点ID均为1,触发了总线仲裁错误。解决方案:通过配置…...
每日定投40刀BTC(2)20250209 - 20250212
行路吟 青山叠叠水迢迢, 步履虽艰志未消。 莫问前程几多苦, 长风破浪自逍遥。...
【LeetCode Hot100 子串】和为 k 的子数组、滑动窗口最大值、最小覆盖子串
子串 1. 和为 k 的子数组题目描述解题思路主要思路步骤 时间复杂度与空间复杂度代码实现 2. 滑动窗口最大值题目描述解题思路双端队列的原理:优化步骤: Java实现 3. 最小覆盖子串题目描述解题思路滑动窗口的基本思路:具体步骤:算法…...
某虚拟页式存储管理系统中有一个程序占8个页面,运行时访问页面的顺序是1,2,3,4,5,3,4,1,6,7,8,7,8,5。假设刚开始内存没有预装入任何页面。
某虚拟页式存储管理系统中有一个程序占8个页面,运行时访问页面的顺序是1,2,3,4,5,3,4,1,6,7,8,7,8,5。假设刚开始内存没有预装入任何页面。 (1) 如果采用LRU调度算法,该程序在得到4块内存空间时,会产生多少次缺页中断?请给出详细…...
傅里叶公式推导(三)
文章目录 周期 2L周期T 周期 2L 周期 T 2 L T2L T2L 的傅里叶变换 即 f ( t ) f ( t 2 L ) f(t) f(t2L) f(t)f(t2L) xt2 π \pi π 2 L 2L 2L 原公式 f ( x ) a 0 2 ∑ n 1 ∞ [ a n cos n x b n sin n x ] a 0 1 π ∫ − π π f ( x ) d x a n 1 π ∫…...
Ubuntu 下 nginx-1.24.0 源码分析 - ngx_time_update函数
定义在 src\core\ngx_times.c 中 ngx_time_init 函数后面 void ngx_time_update(void) {u_char *p0, *p1, *p2, *p3, *p4;ngx_tm_t tm, gmt;time_t sec;ngx_uint_t msec;ngx_time_t *tp;struct timeval tv;if (!ngx_trylock(&ngx…...
老牌系统工具箱,现在还能打!
今天给大家分享一款超实用的电脑软硬件检测工具,虽然它是一款比较“资深”的软件,但依然非常好用,完全能满足我们的日常需求。 电脑软硬件维护检测工具 功能强大易用 这款软件非常贴心,完全不需要安装,直接打开就能用…...
mysql error1449解决方法
MySQL Error 1449 错误信息为 “The user specified as a definer (userhost) does not exist”,意思是定义者(创建存储过程、函数、触发器等数据库对象时指定的用户)在当前系统中不存在,从而导致无法正常使用这些对象。以下是针对…...
Notepad++ 中删除所有以 “pdf“ 结尾的行
Notepad 中删除所有以 “pdf” 结尾的行 操作步骤 1.打开文件: 在 Notepad 中打开你需要处理的文本文件。 2.打开查找和替换对话框: 按快捷键 Ctrl F,打开“查找和替换”对话框。 3.启用正则表达式模式: 在对话框的底部…...
归并排序 和 七大算法的总结图
目录 什么是递归排序: 图解: 递归方法: 代码实现: 思路分析: 非递归方法: 思路: 代码实现: 思路分析: 什么是递归排序: 先将数据分解成诺干个序列࿰…...
嵌入式硬件篇---原码、补码、反码
文章目录 前言简介八进制原码、反码、补码1. 原码规则示例问题 2. 反码规则示例问题 3. 补码规则示例优点 4. 补码的运算5. 总结 十六进制原码、反码、补码1. 十六进制的基本概念2. 十六进制的原码规则示例 3. 十六进制的反码规则示例 4. 十六进制的补码规则示例 5. 十六进制补…...
评估多智能体协作网络(MACNET)的性能:COT和AUTOGPT基线方法
评估多智能体协作网络(MACNET)的性能 方法选择:选择COT(思维链,Chain of Thought)、AUTOGPT等作为基线方法。 COT是一种通过在推理过程中生成中间推理步骤,来增强语言模型推理能力的方法,能让模型更好地处理复杂问题,比如在数学问题求解中,展示解题步骤。 AUTOGPT则是…...
洛谷题目: P2398 GCD SUM 题解 (本题较难,省选-难度)
题目传送门: P2398 GCD SUM - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 前言: 本题涉及到 欧拉函数,素数判断,质数,筛法 ,三大知识点,相对来说还是比较难的。 本题要求我们计算 …...
kubernetes-cni 框架源码分析
深入探索 Kubernetes 网络模型和网络通信 Kubernetes 定义了一种简单、一致的网络模型,基于扁平网络结构的设计,无需将主机端口与网络端口进行映射便可以进行高效地通讯,也无需其他组件进行转发。该模型也使应用程序很容易从虚拟机或者主机物…...
AI Agent有哪些痛点问题
AI Agent有哪些痛点问题 目录 AI Agent有哪些痛点问题AI Agent领域有哪些知名的论文缺乏一个将智能多智能体技术和在真实环境中学习的两个适用流程结合起来的统一框架LLM的代理在量化和客观评估方面存在挑战自主代理在动态环境中学习、推理和驾驭不确定性存在挑战AI Agent领域有…...
使用Java爬虫获取京东JD.item_sku API接口数据
在电商领域,商品的SKU(Stock Keeping Unit)信息是运营和管理的关键数据。SKU信息包括商品的规格、价格、库存等,对于商家的库存管理、定价策略和市场分析至关重要。京东作为国内领先的电商平台,提供了丰富的API接口&am…...
华为云+硅基流动使用Chatbox接入DeepSeek-R1满血版671B
华为云硅基流动使用Chatbox接入DeepSeek-R1满血版671B 硅基流动 1.1 注册登录 1.2 实名认证 1.3 创建API密钥 1.4 客户端工具 OllamaChatboxCherry StudioAnythingLLM 资源包下载: AI聊天本地客户端 接入Chatbox客户端 点击设置 选择SiliconFloW API 粘贴1.3创…...
GP8892SEH贴片SOP7省外围5V2A隔离型原边反馈芯片直接替代MT3723
GP8892SEH 是一款自供电原边反馈 PWM 控制芯片,采用 SOP7 贴片封装,主打"省外围、高精度、低待机"路线。它内置功率三极管,无需外置功率管,同时集成了 FB 下偏电阻和 CS 采样电阻,外围元件极少,特…...
S2C如何以FPGA原型验证方案破解中国芯片设计团队的验证痛点
1. 从EDA巨头东迁,看一个被忽视的蓝海市场最近业内有个不大不小的新闻,Altium这家知名的电子设计自动化(EDA)公司把总部搬到了中国。这事儿引起了不少讨论,但说实话,它既不是第一个这么干的,也未…...
黑莓印相≠复古滤镜!基于CIE Lab色域分析的Midjourney色彩空间偏移校准方案(附Python验证脚本)
更多请点击: https://intelliparadigm.com 第一章:黑莓印相≠复古滤镜!基于CIE Lab色域分析的Midjourney色彩空间偏移校准方案(附Python验证脚本) 黑莓印相(Blackberry Print Tone)常被误认为是…...
10x-bench-eval:量化开发效率的基准测试框架设计与实践
1. 项目概述:当“10倍速”遇上“基准测试”在软件工程领域,“10倍速工程师”是一个充满争议又令人神往的概念。它描述的是一种理想状态:一位工程师凭借其卓越的工具链、深刻的问题洞察力以及高效的自动化能力,其产出效率能达到普通…...
告别网络盲区:用RTL8811CU让旧笔记本变身Linux双频WiFi网卡/AP二合一网关
旧硬件新生:用RTL8811CU打造Linux双频无线网关实战指南 每次升级笔记本后,那些陪伴我们多年的旧设备往往被束之高阁。作为一名网络技术爱好者,我发现这些"退役"笔记本其实蕴藏着巨大的再利用价值——特别是当它们遇到RTL8811CU这样…...
智能缓存优化LibraVDB视频数据库内存管理实战
1. 项目概述与核心价值 最近在折腾一个需要处理大量视频流和图像识别的项目,遇到了一个老生常谈但又极其棘手的问题:内存。尤其是在使用像LibraVDB这样的开源视频数据库进行帧级数据存取时,传统的缓存策略要么命中率低,要么内存占…...
告别STM32cubeIDE的路径红波浪线:VSCode配置C/C++插件的保姆级指南
告别STM32cubeIDE的路径红波浪线:VSCode配置C/C插件的保姆级指南 对于习惯了STM32cubeIDE的嵌入式开发者来说,第一次用VSCode打开工程时,满屏的红色波浪线可能会让人瞬间崩溃。别担心,这不是你的代码有问题,而是VSCode…...
模块化IC设计流程:应对复杂芯片挑战的解决方案
1. 现代IC设计面临的挑战与模块化流程的价值在当今半导体行业,芯片设计团队正面临前所未有的复杂挑战。随着工艺节点不断演进至5nm及以下,设计复杂度呈指数级增长。我曾参与的一个65nm SoC项目,团队最初采用传统线性设计流程,结果…...
别再乱接电源了!STM32的VDDA、VSSA、VBAT引脚,一个没接对,ADC采样全是噪声
STM32电源设计实战:VDDA、VSSA与VBAT的噪声抑制艺术 当你的STM32项目遇到ADC采样值跳变、RTC计时不准或程序下载失败时,电源引脚的设计往往是罪魁祸首。许多工程师在PCB布局时,对这些看似简单的电源引脚处理过于随意,结果在调试阶…...
