【算法实验】实验1

 实验1-1 斐波那契数

【问题描述】斐波那契数 (通常用 F(n) 表示)形成的序列称为 斐波那契数列 。该数列由 0 和 1 开始,后面的每一项数字都是前面两项数字的和。

定义:F(0) = 0, F(1)= 1, F(n) = F(n-1) + F(n-2) 其中n>1

要求计算第n个斐波那契数。
【输入形式】输入1行包含1个整数n。
【输出形式】输出1行包含1个整数,表示计算的F(n)
【样例输入1】

2
【样例输出1】

1
【样例说明1】

F(2) = F(1) + F(0) = 1 + 0 = 1

【样例输入2】

3
【样例输出2】

2
【样例说明2】

F(3) = F(2) + F(1) = 1 + 1 = 2


【说明】

0<= n <= 30

递归

#include<iostream>
using namespace std;int fib(int x)
{if(x == 1 || x == 0 ){return 1;}else{return fib(x-1) + fib(x-2);}
}
int main()
{int x;cin >> x;cout << fib(x) << "\n";
}

数组循环

#include<iostream>
using namespace std;
const int N = 1e5 + 10;
int f[N];int main()
{int x;cin >> x;f[0] = 1,f[1] = 1;for(int i = 2 ; i <= x ; i ++){f[i] = f[i-1] + f[i-2];}cout << f[x] << "\n";
}

实验1-2 整数幂

【问题描述】实现pow(x,n),即计算实数x的非负整数n次幂。
【输入形式】输入1行包含2个实数,第1个表示实数x,第2个表示非负整数n。
【输出形式】输出1行一个数字表示计算结果,结果保留4位小数。


【样例输入1】

2 10

【样例输出1】

1024.0000

【样例说明1】

2^10 = 1024

【样例输入2】

1.1 2

【样例输出2】

1.2100

【样例说明2】

1.1 ^ 2 = 1.21

【说明】

-100 < x < 100

0 <= n <= 100

【进阶】

思考如果n可以取负数

递归

#include<iostream>
#include<iomanip>
using namespace std;float pow(float x,int n)
{if( n == 0){return 1;}else{return pow(x,n-1)*x;}
}
int main()
{float x;int n;cin >> x >> n;cout << fixed << setprecision(4) << pow(x,n) << "\n";//推荐带精度的话写printf//printf("%.4f",pow(x,n) ); 
}

实验1-3 基数排序

【问题描述】给定一个长度为n的整数数组nums,要求使用【基数排序】的方法将该数组升序排序。
【输入形式】输入的第1行中有1个数字n,表示数组的长度;第2行中有n个数字,表示数组的元素
【输出形式】输出1行中有n个数字,表示按照升序排序后的数组,数字之间使用空格分割。
【样例输入】

5

35 28 9 87 56
【样例输出】

9 28 35 56 87

【说明】

1 <= n <= 10^4

0 <= nums[i] <= 10^5

#include<iostream>
#include<bits/stdc++.h>
using namespace std;
const int N = 1010;
int a[N];void RadixSort(int n)
{int maxx = 1;//最大值 int base = 1;//基数 int tmp[N];while( maxx / base > 0) //看最大值的位数 {int bucket[10] = {0};for(int i = 0 ; i < n ; i ++ ){bucket[ a[i] / base % 10 ] ++;}for(int i = 1; i < 10 ; i ++){bucket[i] += bucket[i-1];}for(int i = 0 ; i < n ; i ++ ){tmp[ bucket[a[i] / base % 10] - 1] = a[i];bucket[a[i] / base % 10] -- ;}for(int i = 0 ; i < n ; i ++ ){a[i] = tmp[i];}base *= 10;}
}
int main()
{int n;cin >> n;for(int i = 0 ; i < n ; i ++ ){cin >> a[i];}RadixSort(n);for(int i = 0 ; i < n ; i ++ ){cout << a[i] << " ";}return 0;
}

实验1-4 生成排列

【问题描述】使用归纳法,生成数组1,2...n的所有排列。
【输入形式】输入1行包含1个整数n。
【输出形式】输出包含若干行,每行表示1个排列方式,每行排列数字之间使用空格分割。可以按照任意顺序输出。
【样例输入】

3
【样例输出】

1 2 3 

1 3 2 

2 1 3 

2 3 1 

3 1 2 

3 2 1 
【样例说明】
数组1,2,3的排列共有3*2*1=6种可能。

【说明】

1<=n<=10

#include<iostream>
#include<bits/stdc++.h>
using namespace std;
const int N = 1010;
int a[N];
bool vis[N];
void show(int n,int step)
{if(step == n + 1){for(int i = 1 ; i <= n ; i ++ ){cout << a[i] <<" ";}cout << "\n";}else{for(int i = 1;i <= n ; i ++ ){if(vis[i]==false){vis[i] = 1;a[step] = i;show( n , step+1 );vis[i] = 0;}}}
}
int main()
{memset(vis,0,sizeof vis); int n;cin >> n;show(n,1);return 0;
}

实验1-5 寻找多数元素

【问题描述】给定一个大小为 n 的数组 nums ,返回其中的多数元素。多数元素是指在数组中出现次数 大于 ⌊ n/2 ⌋ 的元素。题目保证一定存在多数元素。

【输入形式】输入的第1行中有1个数字n,表示数组的长度;第2行中有n个数字,表示数组的元素

【输出形式】输出1行一个数字表示该数组中的多数元素。
【样例输入】

3

1 2 1
【样例输出】

1

【说明】
1 <= n <= 10^5

-10^9 <= nums[i] <= 10^9

法一

upper_bound和lower_bound很好用

#include<iostream>
#include<bits/stdc++.h>
using namespace std;
const int N = 1010;
int a[N];
int num;int main()
{int n;cin >> n;for(int i = 0 ; i < n ; i ++ ){cin >> a[i];}sort(a,a+n);int mid1 = a[n/2];int mid2 = a[n/2 + 1];int num1 = upper_bound(a,a+n,mid1) - lower_bound(a,a+n,mid1); //记录个数 //int num2 = upper_bound(a,a+n,mid2) - lower_bound(a,a+n,mid2);if( num1 > n/2)cout << mid1;elsecout << mid2;return 0;
}

法二

//5. 寻找多数元素
//小小暴力
#include<bits/stdc++.h>
#include<algorithm>
using namespace std;
const int N=1e5+10;
int num[N];int main()
{int n,x;cin >> n;for(int i=1;i<=n;++i){cin>>num[i];}if(n==1){cout<<num[1];return 0;}sort(num+1,num+n+1);for(int i=2;i<=n;++i){if(num[i]==num[i-1]){int cnt=1;while(num[i]==num[i-1]){cnt++;i++;}i-=1;if(cnt>n/2){cout<<num[i-1]<<" ";}}}return 0;
}

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

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

相关文章

web前端算法简介之字典与哈希表

回顾 栈、队列 &#xff1a; 进、出 栈&#xff08;Stack&#xff09;&#xff1a; 栈的操作主要包括&#xff1a; 队列&#xff08;Queue&#xff09;&#xff1a; 队列的操作主要包括&#xff1a; 链表、数组 &#xff1a; 多个元素存储组成的 简述链表&#xff1a;数组&…

机器学习---xgboost算法

1. xgboost算法原理 XGBoost&#xff08;Extreme Gradient Boosting&#xff09;全名叫极端梯度提升树&#xff0c;XGBoost是集成学习方法的王 牌&#xff0c;在Kaggle数据挖掘比赛中&#xff0c;大部分获胜者用了XGBoost。 XGBoost在绝大多数的回归和分类 问题上表现的十分…

MYSQL的索引(一)

本章概览 索引的出现就是为了提高数据查询的效率&#xff0c;实际上可以提高读写效率的数据节后有很多 索引常见模型 哈希表是一种以键 - 值&#xff08;key-value&#xff09;存储数据的结构&#xff0c;用哈希函数把key计算成一个值&#xff0c;这个值代表一个位置&#xf…

使用docker搭建LNMP架构

目录 环境准备 下载安装包 服务器环境 任务分析 nginx部分 建立工作目录 编写 Dockerfile 脚本 准备 nginx.conf 配置文件 生成镜像 创建自定义网络 启动镜像容器 验证nginx MySQL部分 建立工作目录 编写 Dockerfile 准备 my.cnf 配置文件 生成镜像 启动镜像…

Puppeteer让你网页操作更简单(2)抓取数据

Puppeteer让你网页操作更简单(1)屏幕截图】 示例2 —— 让我们抓取一些数据 现在您已经了解了Headless Chrome和Puppeteer的工作原理基础知识,让我们看一个更复杂的示例,其中我们实际上可以抓取一些数据。 首先,请查看此处的Puppeteer API文档。如您所见,有大量不同的方法我…

Marin说PCB之传输线损耗---趋肤效应和导体损耗01

大家在做RF上的PCB走线或者是车载相机的上走线的时候经常会听那些硬件工程师们说你这个走线一定要保证50欧姆的阻抗匹配啊&#xff0c;还有就是记得加粗走做隔层参考。 有的公司的EE硬件同事会很贴心的把RF走线的注意事项给你备注在原理图上或者是layoutguide上&#xff0c;遇到…

php中常用的几个安全函数

1. mysql_real_escape_string() 这个函数对于在PHP中防止SQL注入攻击很有帮助&#xff0c;它对特殊的字符&#xff0c;像单引号和双引号&#xff0c;加上了“反斜杠”&#xff0c;确保用户的输入在用它去查询以前已经是安全的了。但你要注意你是在连接着数据库的情况下使用这个…

【Kafka-3.x-教程】-【二】Kafka-生产者-Producer

【Kafka-3.x-教程】专栏&#xff1a; 【Kafka-3.x-教程】-【一】Kafka 概述、Kafka 快速入门 【Kafka-3.x-教程】-【二】Kafka-生产者-Producer 【Kafka-3.x-教程】-【三】Kafka-Broker、Kafka-Kraft 【Kafka-3.x-教程】-【四】Kafka-消费者-Consumer 【Kafka-3.x-教程】-【五…

10.9.2 std::function 非OO的多态实现 Page185~187

源代码&#xff1a; #include <iostream> #include <functional> #include <list>using namespace std;//使用function模板类定义一个类型&#xff0c; //该类型要求作为T的 //函数类型是参数是string,返回值是void typedef std::function <void (std::s…

关于浏览器下载的时候出现失败,网络错误

我试过所有浏览器&#xff0c;谷歌&#xff0c;firefox,qq浏览器&#xff0c;还是edge都不好使&#xff0c; 1.看网上说是http debugger的问题&#xff0c;但是我没有找到这个服务项 2.也有说可以通过修改或设置下载路径解决 -------- 我通过下载一个叫xdm的软件&#xff…

CloudFlare平台下载的WARP一直连不上(warp无法连接)解决办法

遇到问题&#xff1a; 解决办法&#xff1a; 下载一个warp选ip的文件夹&#xff0c;选一下ip就行了。 下载链接如下&#xff1a; https://pan.kejicode.cn/d/Onedrive/WIN%E7%AB%AFwarp%E8%87%AA%E9%80%89IP(%E6%89%8B%E5%8A%A8%2B%E8%87%AA%E5%8A%A8).rar?signRqBdHIMyyhg…

代码随想录算法训练营第三十二天|122.买卖股票的最佳时机II、55. 跳跃游戏、45.跳跃游戏II

题目&#xff1a;122.买卖股票的最佳时机II 文章链接&#xff1a;代码随想录 视频链接&#xff1a;LeetCode:122.买卖股票的最佳时机|| 题目链接&#xff1a;力扣题目链接 图释&#xff1a; class Solution { public:int maxProfit(vector<int>& prices) {// 查看…

高效学习新编程语言的实践指南

学习一门新的编程语言或框架对于新手和有经验的程序员来说都是一个挑战。然而&#xff0c;通过采用一些有效的策略和方法&#xff0c;我们可以快速入门并掌握新的编程工具。本文将从新手和有编程经验两个不同的角度&#xff0c;分享一些实用的建议和技巧&#xff0c;帮助读者在…

Costco攻入山姆大本营

01 Costco深圳店开业火爆 “我今天不去Costco&#xff0c;早上还没开业&#xff0c;路上就已经堵车了&#xff0c;看来今天人很多&#xff0c;过几天再去”&#xff0c;原本计划在Costco开业当天去逛逛的张芸&#xff08;化名&#xff09;无奈只能放弃。 家住在Costco深圳店旁…

回归预测 | Python基于ISSA多策略改进麻雀优化ISSA-CNN-BiLSTM多输入单输出回归预测

目录 效果一览基本介绍程序设计参考资料 效果一览 基本介绍 原创改进&#xff0c; ISSA多策略改进麻雀优化ISSA-CNN-BiLSTM 多输入单输出回归 python代码 优化参数&#xff1a;filter,unints1,units2&#xff0c;学习率&#xff08;可添加&#xff09; 以下是三个主要的改进点&…

【Minio】常见问题解决思路

检查存储服务器对应的端口与应用服务器是否能够互通&#xff0c;通过ping|telnet命令检查、查看防火墙端口是否开放&#xff0c;检查防火墙端口linux系统和windows系统各有不同。检查电脑上的杀毒软件是否限制了网络端口和文件权限问题。检查minio配置信息是否正确&#xff0c;…

第三次面试总结 - 吉云集团 - 全栈开发

&#x1f9f8;欢迎来到dream_ready的博客&#xff0c;&#x1f4dc;相信您对专栏 “本人真实面经” 很感兴趣o (ˉ▽ˉ&#xff1b;) 专栏 —— 本人真实面经&#xff0c;更多真实面试经验&#xff0c;中大厂面试总结等您挖掘 目录 总结&#xff08;非详细&#xff09; 面试内…

【面试突击】并发编程、线程池面试实战

&#x1f308;&#x1f308;&#x1f308;&#x1f308;&#x1f308;&#x1f308;&#x1f308;&#x1f308; 欢迎关注公众号&#xff08;通过文章导读关注&#xff1a;【11来了】&#xff09;&#xff0c;及时收到 AI 前沿项目工具及新技术 的推送 发送 资料 可领取 深入理…

SpringBoot懒加载

什么是懒加载 懒加载是一种优化技术&#xff0c;它延迟加载或按需加载资源&#xff0c;以减少初始加载时间或提高性能。在不同的上下文中&#xff0c;懒加载有不同的应用和含义。在web开发中&#xff0c;懒加载通常指的是延迟加载图片数据。在长网页或应用中&#xff0c;如果图…

分布式链路追踪专栏,分布式链路追踪:Skywalking集群管理设计

SkyWalking 是一个开源 APM 系统&#xff0c;包括针对 Cloud Native 体系结构中的分布式系统的监视&#xff0c;跟踪&#xff0c;诊断功能。核心功能如下&#xff1a; 服务、服务实例、端点指标分析&#xff1b; 根本原因分析&#xff0c;在运行时分析代码&#xff1b; 服务拓…