长度为n的整数数组循环左移右移m位
来源:互联网 发布:网络教研课题结项 编辑:程序博客网 时间:2024/06/05 04:38
长度为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; }
阅读全文
1 0
- 长度为n的整数数组循环左移右移m位
- 长度为n的整数数组循环左移m位
- 将一个长度为n的字符串向左循环移动m位
- 45一个整数数组,长度为n,将其分为m份,使各份的和相等,求m的最大值
- 一个整数数组,长度为n,将其分为m份,使各份的和相等,求m的最大值
- 一个整数数组,长度为n,将其分为m份,使各份的和相等,求m的最大值
- 一个整数数组,长度为n,将其分为m份,使各份的和相等,求m的最大值
- 一个整数数组,长度为n,将其分为m份,使各份的和相等,求m的最大值
- 一个整数数组,长度为n,将其分为m 份,使各份的和相等,求m 的最大值
- 面试题系列-整数数组长度为n,分为m份使各份的和相等,求最大的m
- 一个整数数组,长度为n,将其分为m份,使各份的和相等,求m的最大值
- 一个整数数组,长度为n,将其分为m份,使各份的和相等,求m的最大值
- 一个整数数组,长度为n,将其分为m 份,使各份的和相等,求m 的最大值
- 一个整数数组,长度为n,将其分为m份,使各份的和相等,求m的最大值。
- 整数数组,长度为n,分为m份。求m最大值
- 整数数组,长度为n,分为m份。求m最大值
- 一个整数数组,长度为n,将其分为m份,使得各分的和相等
- 得到一个m长度都为n的数组
- ajax readyState五种状态及status状态码
- Java 网络IO编程总结(BIO、NIO、AIO均含完整实例代码)
- 扩增子分析解读1质控,实验设计,双端序列合并
- jQuery 动画
- 信用,在中国究竟值多少钱?
- 长度为n的整数数组循环左移右移m位
- PythonIDE
- 最少拦截系统 动态规划 最长上升子序列
- Vue.js学习笔记:过渡效果(含列表过渡)
- (3)操作表中的数据
- 使用crosstool-ng给韦东山JZ2440制作4.8.2版本交叉编译器
- 学会Windows 10清理磁盘,让你的电脑不“卡顿”
- dedecms文章发布日期时间调用标签
- WEB-INF文件夹的位置和作用