数组元素循环右移问题

news2024/11/20 7:14:41

目录

1008 数组元素循环右移问题

输入格式:

输出格式:

输入样例:

输出样例:

代码长度限制

时间限制

内存限制

思路:

  1.右移函数

  1.2函数代码:

  2.main函数中

  2.2main函数代码:

 完整代码:

时间复杂度:

总结:

题目的链接:


1008 数组元素循环右移问题

一个数组A中存有N(>0)个整数,在不允许使用另外数组的前提下,将每个整数循环向右移M(≥0)个位置,即将A中的数据由(A0​A1​⋯AN−1​)变换为(AN−M​⋯AN−1​A0​A1​⋯AN−M−1​)(最后M个数循环移至最前面的M个位置)。如果需要考虑程序移动数据的次数尽量少,要如何设计移动的方法?

输入格式:

每个输入包含一个测试用例,第1行输入N(1≤N≤100)和M(≥0);第2行输入N个整数,之间用空格分隔。

输出格式:

在一行中输出循环右移M位以后的整数序列,之间用空格分隔,序列结尾不能有多余空格。

输入样例:

6 2
1 2 3 4 5 6

输出样例:

5 6 1 2 3 4

代码长度限制

16 KB

时间限制

400 ms

内存限制

64 MB

思路:

  1.右移函数

  我们可以写一个函数来进行循环右移问题:

    假设长度为5,下标为:

0        1        2        3        4

将0右移的话,0就在最右边了,0后面的所有数字都要左移一位:

4        1        2        3        0

先将0交换过去之后,将4一直挪移到0左边:

1        4        2        3        0

---->

1        2        4        3        0

---->

1        2        3        4        0

OK,这样就进行了一次右移运算.

  1.2函数代码:

int n,m; //n为长度,m为次数 
int a[101]; //循环数组 
void fun(){ //右移一位 
	swap(a[0],a[n-1]); //第一位和最后一位交换 
	for(int i=(n-1);i>=2;i--) //将原本的最后一位不断的挪移到原本的第一位旁边 
	  swap(a[i],a[i-1]); //相邻的交换 
}

  2.main函数中

  成功编写了一次右移循环,我们只需要进行m次这样的函数,就打成了题目要求,因为题目说了行末没有多余的空格,输出的时候要特判一下.

  2.2main函数代码:

int main(){
	cin>>n>>m; //输入长度和循环次数 
	for(int i=0;i<n;i++) //一次输入 
	  cin>>a[i]; //输入n个数 
	for(int i=0;i<m;i++) //进行m次数组右移循环 
	  fun(); //一次数组右移循环 
	for(int i=0;i<n;i++){ //输出 
		if(i!=(n-1)) //如果不是最后一个 
		  cout<<a[i]<<" "; //输出空格 
		else //在行的末尾 
		  cout<<a[i]; //不加空格 
	}
	cout<<endl; //换行 
	return 0;
}

 完整代码:

#include<bits/stdc++.h>
using namespace std;
int n,m; //n为长度,m为次数 
int a[101]; //循环数组 
void fun(){ //右移一位 
	swap(a[0],a[n-1]); //第一位和最后一位交换 
	for(int i=(n-1);i>=2;i--) //将原本的最后一位不断的挪移到原本的第一位旁边 
	  swap(a[i],a[i-1]); //相邻的交换 
}
int main(){
	cin>>n>>m; //输入长度和循环次数 
	for(int i=0;i<n;i++) //一次输入 
	  cin>>a[i]; //输入n个数 
	for(int i=0;i<m;i++) //进行m次数组右移循环 
	  fun(); //一次数组右移循环 
	for(int i=0;i<n;i++){ //输出 
		if(i!=(n-1)) //如果不是最后一个 
		  cout<<a[i]<<" "; //输出空格 
		else //在行的末尾 
		  cout<<a[i]; //不加空格 
	}
	cout<<endl; //换行 
	return 0;
}

时间复杂度:

   右移一位也就是说fun函数的时间复杂度为O(N);

  我们是连续运行了m次fun函数右移一位,时间复杂度就是O(M)*O(N)=O(MN);

总结:

  这道题考了学生们的函数书写,动笔计算,循环找规律的应用,用数组实现算是简单的了,后续我们会讲一道链表右移一位循环问题!

题目的链接:

PTA | 程序设计类实验辅助教学平台千名教师建设,万道高质量题目,百万用户拼题的程序设计实验辅助教学平台https://pintia.cn/problem-sets/994805260223102976/exam/problems/994805316250615808

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

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

相关文章

MongoDB(一)【概念介绍安装】

MongoDB 概念以及安装 官方文档&#xff1a;https://www.mongodb.com/docs/manual/ 简介 官方介绍 MongoDB是一个文档数据库&#xff0c;旨在方便应用开发和扩展 百度百科 MongoDB是一个基于分布式文件存储的数据库。由C语言编写。旨在为WEB应用提供可扩展的高性能数据存储解…

【web前端期末大作业】html在线网上书店 基于html制作我的书屋(23页面)

&#x1f389;精彩专栏推荐 &#x1f4ad;文末获取联系 ✍️ 作者简介: 一个热爱把逻辑思维转变为代码的技术博主 &#x1f482; 作者主页: 【主页——&#x1f680;获取更多优质源码】 &#x1f393; web前端期末大作业&#xff1a; 【&#x1f4da;毕设项目精品实战案例 (10…

反序列化漏洞原理

序列化及其出现场景 ●远程和进程间通信&#xff08;RPC/IPC&#xff09; ●连线协议、Web服务、消息代理 ●缓存/持久性存储区 ●数据库、缓存服务器、文件系统 ●HTTP cookie、HTML参数、API身份验证令牌 序列化 (serialize)是将对象的状态信息转换为可以存储或传输的形…

基于java+springmvc+mybatis+jsp+mysql的电动车实名制挂牌管理系统

项目介绍 电动车实名制挂牌管理系统的需求和管理上的不断提升&#xff0c;电动车实名制挂牌管理的潜力将无限扩大&#xff0c;电动车实名制挂牌管理系统在业界被广泛关注&#xff0c;本网站及对此进行总体分析&#xff0c;将电动车实名制挂牌信息管理的发展提供参考。电动车实…

微信接入ChatGPT,使用Node+ChatGPT+Wechaty做一个微信机器人

目录 前言 准备工作 起步 实践 写在最后 前言 接上篇文章&#xff1a;站在巨人的肩膀上&#xff0c;用NodeChatGPT模块实现一个接口_DieHunter1024的博客-CSDN博客 我将ChatGPT模块的使用介绍了一下&#xff0c;使用自己的session发送请求达到调用ChatGPT进行聊天的目的&…

动态规划——背包问题(2)

文章目录多重背包的单调队列优化例题思路代码二维费用背包问题例题背包问题装法的总结&#xff1a;至多、恰好、至少背包最多装V体积背包恰好装V体积背包最少装V体积例题求解方案数初始化和循环顺序例题求解具体方案思路例题考察思维的一些题目多重背包与分组背包机器分配金明的…

原生JS开发手机端H5项目总结(FamilyChallenge)

一、 插件文件 &#xff08;可多选&#xff09; JQuery &#xff08;操作dom&#xff09;lottie.js &#xff08;播放动效&#xff09;preload-0.6.2.min.js&#xff08;资源预加载&#xff09;jweixin-1.6.0.js &#xff08;h5跳转微信小程序&#xff09;TweenMax.min.js &am…

Lidar based off-road negative obstacle detection and analysis(论文翻译)

&#xff08;机翻 自己留作资料的 大家辩证使用 论文地址&#xff1a;https://ieeexplore.ieee.org/document/6083105&#xff09; Abstract: 无人驾驶地面车辆 (UGV) 要想在越野地形中高速行驶&#xff0c;就必须实时分析和了解周围的地形&#xff1a;它必须知道它打算去哪里&…

备忘录模式

一、备忘录模式 1、定义 备忘录模式&#xff08;Memento Pattern&#xff09;又称作快照模式&#xff08;Snapshot Pattern&#xff09;&#xff0c;指在不破坏封装的前提下&#xff0c;捕获一个对象的内部状态&#xff0c;并在对象之外保存这个状态。这样以后就可将该对象恢复…

你好,Cartesi Rollups Alpha 0.8.0

支持 Arbitrum 和 Optimism 部署&#xff0c;并使内部增强。我们通过这个新版本支持在Optimism和Arbitrum L2 链上的部署&#xff0c;为 Cartesi Rollups DApp 开发人员带来了更低的延迟和更低的gas费用。我们致力于提高 Cartesi 技术的多样性和性能提升&#xff0c;并且通过 R…

【MySQL】视图

文章目录视图基本使用视图规则与限制视图 视图是一个虚拟表,其内容由查询定义,同真实的表一样,视图包含一系列带有名称的列和行数据,视图的数据变化会影响到基表,基表的数据变化也会影响到视图, 主要作用是,将表的内容,常用需要的部分创建一个部分,这样使用视图的时候,可以减…

CAS:1407166-70-4,NODA-GA-NHS ester大环化合物供应

基本信息 名称&#xff1a; NODA-GA-NHS ester 2,2′-(7-(1-carboxy-4-((2,5-dioxopyrrolidin-1-yl)oxy)-4-oxobutyl)-1,4,7-triazonane-1,4-diyl)diacetic acid CAS编号&#xff1a;1407166-70-4 分子式&#xff1a;C19H28N4O10&#xff0c;HPF6&#xff0c;TFA 分子量&a…

HTTP MIME类型

文章目录HTTP MIME类型HTTP MIME类型 HTTP 请求头中的 Accept 头是客户端用来告诉服务器&#xff0c;客户端可以处理什么类型的内容&#xff0c;这种内容类型使用 MIME 类型来表示。借助内容协商机制&#xff0c;服务器可以从诸多 MIME 中选择一项进行应用&#xff0c;并使用 …

Java精品项目源码第145期食品检测管理系统

Java精品项目源码第145期食品检测管理系统 大家好&#xff0c;小辰哥又来啦&#xff0c;今天给大家介绍一个错的基于SSM的食品检测管理系统。 文章目录Java精品项目源码第145期食品检测管理系统前言一、项目运行1.运行环境2.截图前言 提示&#xff1a;以下是本篇文章正文内容…

大数据-玩转数据-Linux部署redis集群

一、下载安装包 访问https://redis.io/download 到官网进行下载。这里下载最新版本. 或直接下载 wget http://download.redis.io/releases/redis-6.2.7.tar.gz 二、安装环境 redis是C语言开发&#xff0c;安装redis需要先将官网下载的源码进行编译&#xff0c;编译依赖gcc环…

数据结构——线性表

线性表的基本操作 对于不同的应用&#xff0c;线性表的基本操作是不同的&#xff0c;上诉操作是最基本的&#xff0c;对于实际问题中涉及的关于线性表的更复杂操作&#xff0c;完全可以用这些基本操作的组合来实现。如要使得A A U B,就是要将存在于集合B中但不存在于集合A中的…

Java项目:SSM实现茶叶电商销售商城

作者主页&#xff1a;源码空间站2022 简介&#xff1a;Java领域优质创作者、Java项目、学习资料、技术互助 文末获取源码 项目介绍 该项目为前后台项目&#xff0c;分为普通用户与管理员两种角色&#xff0c;前台普通用户登录&#xff0c;后台管理员登录&#xff1b; 管理员角…

软件设计与体系结构——结构型模式

如果有兴趣了解更多相关内容&#xff0c;欢迎来我的个人网站看看&#xff1a;瞳孔空间 结构型模式(Structural Pattern)描述如何将类或对象按某种布局组成更大的结构。就像搭积木&#xff0c;可以通过简单积木的组合形成复杂的、功能更为强大的结构 结构型模式可以分为类结构型…

(附源码)ssm教学督导管理系统 毕业设计 292346

ssm教学督导管理系统 摘 要 随着社会的发展&#xff0c;社会的方方面面都在利用信息化时代的优势。互联网的优势和普及使得各种系统的开发成为必需。 本文以实际运用为开发背景&#xff0c;运用软件工程原理和开发方法&#xff0c;它主要是采SSM技术和mysql数据库来完成对系统的…

Springboot传参详解

作者简介 作者名&#xff1a;编程界明世隐 简介&#xff1a;CSDN博客专家&#xff0c;从事软件开发多年&#xff0c;精通Java、JavaScript&#xff0c;博主也是从零开始一步步把学习成长、深知学习和积累的重要性&#xff0c;喜欢跟广大ADC一起打野升级&#xff0c;欢迎您关注&…