长度为n的整数数组循环左移右移m位
长度为n的整数数组循环左移m位
右移m相当于左移n-m
// pat.cpp : Defines the entry point for the console application.
//#include "stdafx.h"#include <iostream>void MoveLeft(int a[],int n,int m);int _tmain(int argc, _TCHAR* argv[])
{int old[9]={1,2,3,4,5,6,7,8,9};int *p;int out[9];MoveLeft(old,9,6);for(int i=0;i<9;i++){printf("%d\n",old[i]);}int a;std::cin>>a;return 0;
}void MoveLeft(int a[],int n,int m)
{int temp = a[0];for(int i=0;i<n-1;i++){a[i]=a[i+1];}a[n-1]=temp;m--;if(m>0) MoveLeft(a,n,m);else return;}
更美:
算法解释:
前(n-m)位数字直接向右移动m; i—-i+m
后m位数字 ;j—-j-(n-m)
一次reverse 把i—n-m-1-i
二次reverse 把j—2n-m-1-j
最后reverse得到结果
#include <stdio.h>
int a[100];
void reverse(int *a, int m, int n){ for (int i = m; i <= (m + n) / 2; i++){ int tmp = a[i]; a[i] = a[m + n - i]; a[m + n - i] = tmp; }
} int main(){ int n, m; scanf("%d%d", &n, &m); m %= n; for (int i = 0; i < n; i++) scanf("%d", &a[i]); reverse(a, 0, n-m-1); reverse(a, n-m, n-1); reverse(a, 0, n-1); for (int i = 0; i < n; i++) printf("%d%s", a[i], (i-n+1?" ":"\n")); return 0;
}
长度为n的整数数组循环左移右移m位相关推荐
- c语言 数组循环左移m位
#include<stdio.h> //函数原型 void rightshiftleft(int *p_num,int n,int m); void enterint(int *p_num ...
- 算法 - 数组循环左移m个元素
题目 整数数组,n个元素 数组循环左移m个元素 [1,2,3,4,5,6,7,8,9] -> [4,5,6,7,8,9,1,2,3] 思路 数组整体逆转 [1,2,3,4,5,6,7,8,9] ...
- 一维数组反转c语言_C语言实现数组的循环左移,右移,翻转的示例
数组结合指针可以实现很多有趣的功能,比如下面这个程序: 假设数组为 : 12345 如果左移一次即为:23451 ,依次类推 如果右移一次即为:51234 ,依次类推 翻转则为:54321 我们来实现 ...
- 给你一个长度为 n 的整数数组 nums 和 一个目标值 target。请你从 nums 中选出三个整数,使它们的和与 target 最接近。 /返回这三个数的和。
// 给你一个长度为 n 的整数数组 nums 和 一个目标值 target.请你从 nums 中选出三个整数,使它们的和与 target 最接近. // 返回这三个数的和. // 假定每组输入只存在 ...
- 7-2 数组循环左移(20分)(顺序表实现)
题目描述: 本题要求实现一个对数组进行循环左移的简单函数:一个数组a中存有n(>0)个整数,在不允许使用另外数组的前提下,将每个整数循环向左移m(≥0)个位置,即将a中的数据由(a0 a1 - ...
- 浙江大学PTA 数据结构 习题2.2 数组循环左移 (20 分)
本题要求实现一个对数组进行循环左移的简单函数:一个数组a中存有n(>0)个整数,在不允许使用另外数组的前提下,将每个整数循环向左移m(≥0)个位置,即将a中的数据由(a0a1⋯an ...
- 习题2.2 数组循环左移(20 分)浙大版《数据结构(第2版)》题目集
本题要求实现一个对数组进行循环左移的简单函数:一个数组a中存有n(>0)个整数,在不允许使用另外数组的前提下,将每个整数循环向左移m(≥0)个位置,即将a中的数据由(a0a1⋯an ...
- 【算法】将数组循环左移
问题描述 设将n(n>1)个整数存放到一维数组 arr 中.将 arr 中保存的序列循环左移p (0<p<n)个位置,即将 arr 中的数据由(X0,X1,-, Xn-1)变换为(X ...
- 数组循环左移 C++
目录 题目描述 思路分析 AC代码 题目描述 本题要求实现一个对数组进行循环左移的简单函数:一个数组a中存有n(>0)个整数,在不允许使用另外数组的前提下,将每个整数循环向左移m(≥0)个位置, ...
最新文章
- html 复选框 mysql_Html:实现带复选框的下拉框(一)
- 公共基因表达数据分析系统genevestigator,再也不愁表达数据的查询和比较了
- WPF中StringFormat的用法
- #一周五# VS2015 CTP6, TFS2015 CTP1更新,老衣的开发工具汇总,2015 MVP 社区巡讲
- 【计算理论】图灵机 ( 多个带子的图灵机 | 计算能力对比 | 证明过程 | 一个带子图灵机 )
- MATLAB 数组运算
- 必须采用初始化列表一共有三种情况
- C++ 知识记录-LZL
- Codeforces Round #701 (Div. 2) D. Multiples and Power Differences 思维构造
- 在MySQL中当有多个索引时 你知道MySQL是如何选择索引的吗 ???
- 同行压力(兼谈敏捷团队,绩效管理,自组织团队)
- Spring知识点总结-3
- python+adb实现物理按键长按(比如长按关机)
- 最强白嫖指南---推荐11个珍藏多年的网站!
- 利用hive完成阿里天池大数据音乐预测比赛数据处理工作
- microapp微前端基础使用
- 拳头的国人动画师,是这样让《英雄联盟》里的角色变成“戏精”的
- 敏捷开发:一文了解影响地图和用户故事地图之间的那些事儿
- 软件测试常见笔试题(附带答案)—初级篇01
- 为什么www.52pjb.net总是不收录,最多只收录首页?