【算法实验】实验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,一经查实,立即删除!

相关文章

ElasticSearch设置用户名密码访问

版本号:7.3.1 1、需要在配置文件中开启x-pack验证, 修改config目录下面的elasticsearch.yml文件&#xff0c;在里面添加如下内容,并重启 xpack.security.enabled: true xpack.license.self_generated.type: basic xpack.security.transport.ssl.enabled: true 2、执行设置用…

将 RxJava 的 Observable 转换为 Reactor 的 Flux流

如果您想将 RxJava 的 Observable 转换为 Reactor 的 Flux,可以使用 Reactor Adapter 库来实现这一转换。这个库提供了一些静态方法来将 RxJava 类型转换为 Reactor 类型。 以下是一个示例代码,演示了如何将 RxJava 的 Observable 转换为 Reactor 的 Flux: import reactor…

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在绝大多数的回归和分类 问题上表现的十分…

Golang+Gorm库使用踩坑——未标识primarykey导致创建后无法返回修改

问题描述 做毕设ing&#xff0c;基本的增删改查。 这里是一个需要增的地方&#xff0c;代码如下&#xff1a; func (BI *BlogImpl) CreateBlog(ctx context.Context, blogInformation repo.BlogInformation) (repo.BlogInformation, error) {err : BI.Db.Table(BlogTable).Cre…

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文档。如您所见,有大量不同的方法我…

如何在一个系统中同时访问异构的多种数据库

如何在一个系统中同时访问异构的多种数据库 比如在一个系统中&#xff0c;要同时访问MySQL,H2, MsAccess, Mongodb. 要是使用Hibernate, MyBatis这些ORM&#xff0c;难度简直不敢想像。 要是MySQL还使用了分库分表&#xff0c;那更加不得了&#xff0c;一大堆的组件都要配合着…

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) {// 查看…

【开发记录】不是自己初始化的值,需要做判空/〇处理

在Java中&#xff0c;如果一个变量没有被显式初始化&#xff0c;它将具有默认值。这些默认值依赖于变量的类型&#xff0c;例如&#xff0c;整数类型的默认值是0&#xff0c;布尔类型的默认值是false&#xff0c;引用类型的默认值是null。当我们使用这些未初始化的变量时&#…

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

学习一门新的编程语言或框架对于新手和有经验的程序员来说都是一个挑战。然而&#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; 以下是三个主要的改进点&…