顺序表应用4-2:元素位置互换之逆置算法(数据改进)

Problem Description

一个长度为len(1<=len<=1000000)的顺序表,数据元素的类型为整型,将该表分成两半,前一半有m个元素,后一半有len-m个元素(1<=m<=len),设计一个时间复杂度为O(N)、空间复杂度为O(1)的算法,改变原来的顺序表,把顺序表中原来在前的m个元素放到表的后段,后len-m个元素放到表的前段。
注意:交换操作会有多次,每次交换都是在上次交换完成后的顺序表中进行。

Input

第一行输入整数len(1<=len<=1000000),表示顺序表元素的总数;

第二行输入len个整数,作为表里依次存放的数据元素;

第三行输入整数t(1<=t<=30),表示之后要完成t次交换,每次均是在上次交换完成后的顺序表基础上实现新的交换;

之后t行,每行输入一个整数m(1<=m<=len),代表本次交换要以上次交换完成后的顺序表为基础,实现前m个元素与后len-m个元素的交换;

Output

输出一共t行,每行依次输出本次交换完成后顺序表里所有元素。

Example Input

10
1 2 3 4 5 6 7 8 9 -1
3
2
3
5

Example Output

3 4 5 6 7 8 9 -1 1 2
6 7 8 9 -1 1 2 3 4 5

1 2 3 4 5 6 7 8 9 -1

#include<iostream> #include<cstdio> using namespace std; int a[1000100]; long len,m; void change(int a[],int l,int r) { int i,j,k; for(i=l,k=r;i<=(l+r)/2;i++) { j=a[i];a[i]=a[k]; a[k]=j; k--; } } void print(int a[],long n) { for(int i=1;i<n;i++) printf("%d ",a[i]); printf("%d\n",a[n]); } int main() { scanf("%ld",&len); for(int i=1;i<=len;i++) scanf("%d",&a[i]); int t; scanf("%d",&t); for(int i=1;i<=t;i++) { scanf("%ld",&m); change(a,1,len); change(a,1,len-m); change(a,len-m+1,len); print(a,len); } }

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

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

相关文章

HtmlUnit优秀文章

博客地址:https://www.cnblogs.com/davidwang456/articles/8693050.html https://blog.csdn.net/anLA_/article/details/50199815

主程成长之路

原文&#xff1a;https://blog.csdn.net/hackmind/article/details/48137233 0x01、技术 1、技术是程序员吃饭的手艺&#xff0c;打磨自己的手艺肯定无可厚非 2、保持对技术的热爱&#xff0c;不断学习&#xff0c;持续编程 3、有敬畏心&#xff0c;明白自己是在做商业项目…

顺序表应用7:最大子段和之分治递归法

Problem Description 给定n(1<n<50000)个整数&#xff08;可能为负数&#xff09;组成的序列a[1],a[2],a[3],…,a[n],求该序列如a[i]a[i1]…a[j]的子段和的最大值。当所给的整数均为负数时定义子段和为0&#xff0c;依此定义&#xff0c;所求的最优值为&#xff1a; Max{…

WebMagic写的网络爬虫优秀文章

博客地址: https://www.cnblogs.com/yanduanduan/p/6527359.html https://www.cnblogs.com/tibit/p/7136762.html https://blog.csdn.net/qq_36251958/article/details/79313035#commentBox

向量内积(点乘)和外积(叉乘)概念及几何意义

向量的内积&#xff08;点乘&#xff09; 定义 概括地说&#xff0c;向量的内积&#xff08;点乘/数量积&#xff09;。对两个向量执行点乘运算&#xff0c;就是对这两个向量对应位一一相乘之后求和的操作&#xff0c;如下所示&#xff0c;对于向量a和向量b&#xff1a; a和b…

SVN分支/合并

转自&#xff1a;https://blog.csdn.net/e3002/article/details/21469437 先说说什么是branch。按照Subversion的说法&#xff0c;一个branch是某个development line&#xff08;通常是主线也即trunk&#xff09;的一个拷贝&#xff0c;见下图&#xff1a; branch存在的意义在…

全国省市直辖市列表

爬取来源&#xff1a;http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2015/34.html 结果&#xff1a; 云南省 昆明市/曲靖市/玉溪市/保山市/昭通市/丽江市/普洱市/临沧市/楚雄彝族自治州/红河哈尼族彝族自治州/文山壮族苗族自治州/西双版纳傣族自治州/大理白族自治州/德宏傣…

prim算法 求最小生成树

最小生成树Prim算法理解 标签&#xff1a; Prim算法理解最小生成树Prim2014-08-16 18:49 18482人阅读 评论(5) 收藏 举报版权声明&#xff1a;本文为博主原创文章&#xff0c;未经博主允许不得转载。 MST&#xff08;Minimum Spanning Tree&#xff0c;最小生成树&#xff09;问…

Hadoop视频教程资源链接

一 慕课网 1.Hadoop大数据平台架构与实践–基础篇(已学习) 链接:https://www.imooc.com/learn/391 2.Hadoop进阶&#xff08;已学习&#xff09; 链接:https://www.imooc.com/learn/890 二 极客学院 1.Hadoop 概述(已学习) 链接:http://www.jikexueyuan.com/course/677.html 2…

Unity大密度建筑场景加载解决方案

现在虚拟城市仿真&#xff0c;以及军事仿真项目越来越多&#xff0c;开发此类项目&#xff0c;首先面对的一个比较棘手的问题是内存管理&#xff0c;城市中的建筑物特别多&#xff0c;这些建筑物的面数和贴图都要被加到内存中的&#xff0c;内存有自己的峰值&#xff0c;超过了…

poj 1836 Alignment

题目大意&#xff1a; 给定一排人的身高&#xff0c;求踢出最少的人可以使队列身高如下形状&#xff1a; Description In the army, a platoon is composed by n soldiers. During the morning inspection, the soldiers are aligned in a straight line in front of the capta…

Qt程序崩溃原因

Qt写的程序在执行过程中莫名其妙的出现崩溃&#xff0c;代码没有任何问题。最后发现原因是因为Release版本的程序链接了Debug版的lib文件&#xff0c;所以导致程序执行过程中莫名其妙的出现崩溃。此类错误出现了很多次了&#xff0c;查找起来异常困难&#xff0c;需要注意&…

【转载】jvm内存回收

1.java的内存 java的内存结构分为 堆 (是gc的主要区域) 线程共享,主要是用于分配实例对象和数组 栈 线程私有,它的生命周期和线程相同,又分成 虚拟机栈和本地方法栈,只有它会报 StackOverFlowError,栈深度超标 方法区 线程共享 用于储存被虚拟机加载的类的信息,静态变量 常量和…

2016杭州ccpc

Kingdom of Obsession 标签&#xff1a; 二分图最大匹配2016-10-29 16:23 51人阅读 评论(2) 收藏 举报分类&#xff1a;二分图和最大匹配&#xff08;2&#xff09; 版权声明&#xff1a;本文为棒&#xff08;xian&#xff09;棒&#xff08;yu&#xff09;博主原创文章&#x…

深入理解C语言的函数调用过程

本文主要从进程栈空间的层面复习一下C语言中函数调用的具体过程&#xff0c;以加深对一些基础知识的理解。 先看一个最简单的程序&#xff1a; 点击(此处)折叠或打开 /*test.c*/#include <stdio.h> int foo1(int m,int n,int p){ int x m n p; …

【转载保存】RunTime.getRunTime().addShutdownHook 添加钩子

https://blog.csdn.net/gongxinju/article/details/69963099

Unity3D打包后日志文件输出目录

Unity3D打包后日志文件输出目录&#xff0c;包括日志文件和崩溃时记录文件 C:\Users\Administrator\AppData\LocalLow\长沙迪迈科股份有限公司\镍矿探秘 其中"..\长沙迪迈科股份有限公司\镍矿探秘" 为unity的公司和产品设置

【转载保存】Jsoup使用

https://blog.csdn.net/ricky73999/article/details/54989972

Unity3d LookAt参数说明

Unity3d LookAt参数说明 //// 摘要: // Rotates the transform so the forward vector points at targets current position.//// 参数: // target:// Object to point towards.//// worldUp:// Vector specifying the upward direction.public void LookAt(…