PTA_乙级_1008

news2024/11/29 5:34:29

在这里插入图片描述
首先,它翻转前部分(0 到 N-M-1)。
然后,它翻转后部分(N-M 到 N-1)。
最后,它整体翻转整个数组(0 到 N-1)

#include<iostream>
using namespace std;

// 反转数组的指定范围
void reverseArray(int arr[], int start, int end) {
    while (start < end) {
        swap(arr[start], arr[end]);
        start++;
        end--;
    }
}

// 循环向右移动数组的数据
void rotateArrayRight(int arr[], int N, int M) {
    if (N <= 0 || M < 0 ) {
        return; // 无需移动
    }

    // 翻转前部分 (0 到 N-M-1)
    reverseArray(arr, 0, N - M - 1);

    // 翻转后部分 (N-M 到 N-1)
    reverseArray(arr, N - M, N - 1);

    // 整体翻转 (0 到 N-1)
    reverseArray(arr, 0, N - 1);
}

int main(){
    int n,m;
    cin>>n>>m;
    
    if(m>=n){
        m%=n;
    }
    int a[n];
    
    for(int i=0;i<n;i++)
        a[i]=0;
    
    for(int i=0;i<n;i++)
        cin>>a[i];
    
    rotateArrayRight(a, n, m);
    
    for(int i=0;i<n;i++){
        cout<<a[i];
        if(i!=n-1)
            cout<<" ";
    }
    return 0;
}

需要注意M可能会大于N,这个时候要进行取余操作
if(m>=n){
m%=n;
}

同样的题型还有循环左移

#include<iostream>
using namespace std;

// 反转数组的指定范围
void reverseArray(int arr[], int start, int end) {
    while (start < end) {
        swap(arr[start], arr[end]);
        start++;
        end--;
    }
}

// 循环向右移动数组的数据
void rotateArrayRight(int arr[], int N, int M) {
    if (N <= 0 || M < 0 ) {
        return; // 无需移动
    }

    // 翻转前部分 (0 到 M-1)
    reverseArray(arr, 0, M - 1);

    // 翻转后部分 (M 到 N-1)
    reverseArray(arr, M, N - 1);

    // 整体翻转 (0 到 N-1)
    reverseArray(arr, 0, N - 1);
}

int main(){
    int n,m;
    cin>>n>>m;
    
    if(m>=n){
        m%=n;
    }
    int a[n];
    
    for(int i=0;i<n;i++)
        a[i]=0;
    
    for(int i=0;i<n;i++)
        cin>>a[i];
    
    rotateArrayRight(a, n, m);
    
    for(int i=0;i<n;i++){
        cout<<a[i];
        if(i!=n-1)
            cout<<" ";
    }
    return 0;
}

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

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

相关文章

ABAP 7.58更新概览

背景 ABAP 7.58对应的ABAP平台版本和S4HANA版本是2023&#xff0c;如果大家确定自己的系统版本&#xff0c;也可以通过SM51 release notes查看SAP Kernel参数值&#xff0c;与下图对应。 前言 ABAP 7.58更新了很多内容啊&#xff0c;对于CDS和ABAP restful programming mod…

基于SSM的广告管理系统

末尾获取源码 开发语言&#xff1a;Java Java开发工具&#xff1a;JDK1.8 后端框架&#xff1a;SSM 前端&#xff1a;Vue 数据库&#xff1a;MySQL5.7和Navicat管理工具结合 服务器&#xff1a;Tomcat8.5 开发软件&#xff1a;IDEA / Eclipse 是否Maven项目&#xff1a;是 目录…

八个提升编程体验的VS Code插件

1.GitHub Copilot 安装链接&#xff1a;https://marketplace.visualstudio.com/items?itemNameGitHub.copilot GitHub Copilot 是开发人员的人工智能编码伴侣&#xff0c;可以实时提供代码建议。 这个扩展使编码变得轻而易举。这个扩展可以改善编码体验&#xff0c;提高生产…

在window10上安装Flink-1.18.0

一、Flink介绍 1、Flink是什么&#xff1a; Flink是为分布式、高性能、随时可用以及准确的流处理应用程序打造的开源流处理框架。是一个大数据处理引擎的处理框架,是针对流进行的处理. 它是Apache 旗下的一个框架和分布式的处理引擎,用于对无界和有界的数据进行状态的计算。 …

没有数据,没有实验条件怎么发表SCI论文?欢迎参加孟德尔随机化方法培训班!!!...

孟德尔随机化是什么&#xff1f;怎么用孟德尔随机化方法撰写发表论文&#xff1f;郑老师团队开设的利用孟德尔随机化方法快速撰写SCI论文课程包含&#xff1a;孟德尔随机化方法的基本介绍、利用孟德尔随机化方法撰写论文的过程、讲课老师现身说法介绍从学习到论文发表路径、以及…

【Docker】iptables基本原理

在当今数字化时代&#xff0c;网络安全问题变得越来越重要。为了保护我们的网络免受恶意攻击和未经授权的访问&#xff0c;我们需要使用一些工具来加强网络的安全性。其中&#xff0c;iptables是一个强大而受欢迎的防火墙工具&#xff0c;它可以帮助我们控制网络流量并保护网络…

vtk夹角计算控件

开发环境&#xff1a; Windows 11 家庭中文版Microsoft Visual Studio Community 2019VTK-9.3.0.rc0vtk-example参考代码目的&#xff1a;学习与总结 demo解决问题&#xff1a;renderWindow中创建一个夹角测量控件&#xff0c;通过三个点确定一个夹角 典型的控件类继承关系&am…

超声波清洗机怎么选?优质清洁力强超声波清洗机推荐

清洁物品对于大部分朋友来说都是件麻烦事情&#xff0c;能不动手就不动手。眼镜清洗也是一样的道理&#xff0c;随着科技发展&#xff0c;一些智能小家电的出现给我们的生活带来很大便利&#xff01;超声波清洗机不仅能够清洗眼镜&#xff0c;还可以清洗首饰、化妆刷等生活中的…

大小仅为人血细胞的1/10?揭秘纳米机器人的厉害之处

原创 | 文 BFT机器人 纳米机器人是一种比血细胞小10倍的微型机器人&#xff0c;有望彻底改变医疗保健行业。纳米技术与下一代软件平台和监督机器学习相结合&#xff0c;提供了广泛的强大的诊断、监测和治疗工具。 纳米机器人&#xff08;nanorobots&#xff09;旨在执行非常具…

golang工程中间件——redis常用结构及应用(set,zset)

Redis 命令中心 这些篇文章专门以应用为主&#xff0c;原理性的后续博主复习到的时候再详细阐述 set 集合&#xff0c;为了描述它的特征&#xff0c;我们可称呼为无序集合&#xff1b;集合的特征是唯一&#xff0c;集合中的元素是唯一存在 的&#xff1b; 存储结构 元素都…

易点易动固定资产管理系统:定制流程与用量控制的高效管理利器

固定资产管理对于企业来说至关重要&#xff0c;而如何提高固定资产管理的效率和精确度一直是企业管理者关注的焦点。易点易动固定资产管理系统以其自定义固定资产流程和用量控制功能&#xff0c;成为了提升固定资产管理效率的利器。本文将详细介绍易点易动固定资产管理系统的自…

【技术驿站】分布式基础与常见面试问题

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

虚幻5.3打包Windows失败

缺失UnrealGame二进制文件。 必须使用集成开发环境编译该UE项目。或者借助虚幻编译工具使用命令行命令进行编译 解决办法&#xff1a; 1.依次点击平台-项目启动程序 2.点击后面的按钮进行设置 3.稍等后&#xff0c;打包后的程序即可运行&#xff0c;之后就可以愉快的打包了

10个改变你Figma体验的高效插件!

Figma Ex 实用指数&#xff1a;⭐️⭐️⭐️⭐️⭐️ figma插件一直受到批评&#xff0c;很难找到。特别是一旦插件安装得太多&#xff0c;你就得去大海捞针&#xff0c;这是浪费时间。 这个工具可以使Figma的所有插件直接悬浮在右边的画布上&#xff0c;最重要的是显示每个插…

智慧工地管理系统源码 智慧大屏、手机APP、SaaS模式

一、智慧工地可以通过安全八要素来提升安全保障&#xff0c;具体措施包括&#xff1a; 1.安全管理制度&#xff1a;建立科学完善的安全管理制度&#xff0c;包括安全标准规范、安全生产手册等&#xff0c;明确各项安全管理职责和要求。 2.安全培训教育&#xff1a;对工地人…

DHorse(K8S的CICD平台)的实现原理

综述 首先&#xff0c;本篇文章所介绍的内容&#xff0c;已经有完整的实现&#xff0c;可以参考这里。 在微服务、DevOps和云平台流行的当下&#xff0c;使用一个高效的持续集成工具也是一个非常重要的事情。虽然市面上目前已经存在了比较成熟的自动化构建工具&#xff0c;比如…

汽车标定技术(六)--基于模型开发如何生成完整的A2L文件(2)

目录 1. 自定义ASAP2文件 2. asap2userlib.tlc需要修改的部分 3. 标定量观测量地址替换 3.1 由elf文件替换 3.2 由map文件替换 3.3 正则表达式&#xff08;含asap2post.m修改方法&#xff09; 4.小结 书接上文汽车标定技术(五)--基于模型开发如何生成完整的A2L文件(1)-C…

Python进阶该怎么学?有什么书推荐吗?

给大家再分享一下整理出来的Python进阶以及Python实践操作可以参考学习的堪称经典的书籍&#xff0c;同样是豆瓣高分榜&#xff01;内容有点长&#xff0c;一定要耐心看完。 Python进阶学习书籍 Effective Python&#xff1a;编写高质量Python代码的90个有效方法&#xff08;…

UVM 源码__report 机制浅析(一)

以uvm_error 为例浅析其背后的故事&#xff1a; uvm_error 是一个宏&#xff0c;在声明的时候只需要传入ID 和 msg&#xff0c;均为字符类型&#xff1b; 分析以上源码&#xff0c;发现起内部主要是调用了一个叫做uvm_report_enabled的函数进行判断&#xff0c;打印函数使用的…

零基础学Python有什么建议?如何入门编程?

零基础&#xff0c;如何入门编程&#xff1f; 首先要明确一点&#xff0c;编程之所以被成为超能力&#xff0c;在于其无所不能。学到深处&#xff0c;你自然可以跳脱限制&#xff0c;随心所欲&#xff1b;入门之时&#xff0c;你却处处碰壁&#xff0c;像蹒跚学步的孩童。其实…