3.1入门模拟B1008. 数组元素循环右移问题 (20)
来源:互联网 发布:中日海军对比2017知乎 编辑:程序博客网 时间:2024/06/06 02:48
一个数组A中存有N(N>0)个整数,在不允许使用另外数组的前提下,将每个整数循环向右移M(M>=0)个位置,即将A中的数据由(A0 A1……AN-1)变换为(AN-M …… AN-1 A0 A1……AN-M-1)(最后M个数循环移至最前面的M个位置)。如果需要考虑程序移动数据的次数尽量少,要如何设计移动的方法?
输入格式:每个输入包含一个测试用例,第1行输入N ( 1<=N<=100)、M(M>=0);第2行输入N个整数,之间用空格分隔。
输出格式:在一行中输出循环右移M位以后的整数序列,之间用空格分隔,序列结尾不能有多余空格。
输入样例:
6 2
1 2 3 4 5 6
输出样例:
5 6 1 2 3 4
#include <iostream>#include <cstdio>using namespace std;/* 1、M可能会大于N,所以M=M%N 2、不要在循环内部初始化变量,这样这个变量每次循环都只能一个值,这个错误犯了多次; 3、不一定要对数组本身进行移动,只要输出正确的结果即可,所以本程序采用的是打印移动的方法;其实没有移动数组 4、关于最后一个数之后不能有空格的处理,用一个计数来分支处理就好了; 5、要注意考虑到M=0的情况;*/int main(){ int N,M;//N是总个数,M是需要移动的次数 scanf("%d%d",&N,&M); M = M%N; int a[N]={0}; for(int i=0;i<N;++i) { scanf("%d",&a[i]); } int j=N-M;//j是用来打印出最终结果的计数器 if(j==N) //考虑M=0的情况 { j=0; } for(int i = 0;i<N;++i) { if(i!= N-1) { printf("%d ",a[j]); } else { printf("%d",a[j]); } j++; j = j%N; } return 0;}
0 0
- 3.1入门模拟B1008. 数组元素循环右移问题 (20)
- B1008.数组元素循环右移问题
- PAT B1008. 数组元素循环右移问题 (20)
- B1008. 数组元素循环右移问题 (20)
- PAT B1008. 数组元素循环右移问题 (20)
- B1008. 数组元素循环右移问题 (20')
- PAT:B1008. 数组元素循环右移问题 (20)
- PAT-B] 1008. 数组元素循环右移问题 [模拟]
- 1008数组元素循环右移问题(模拟)
- 数组元素循环右移问题 (20)
- 数组元素循环右移问题 (20)
- 数组元素循环右移问题 (20)
- 1008. 数组元素循环右移问题 (20) (模拟啊 ZJU_PAT)
- 数组元素循环左/右移问题
- 数组元素循环右移问题
- 1008. 数组元素循环右移问题
- PAT1008:数组元素循环右移问题
- 数组元素循环左/右移问题
- 策略模式和Spring的结合在项目中的应用
- 371. Sum of Two Integers
- Codeforces 681C Heap Operation 【模拟】【堆】
- cf 341C (容斥原理)
- Win10 独立音量调整
- 3.1入门模拟B1008. 数组元素循环右移问题 (20)
- Javascript异步编程的4种方法
- 机器学习基础 第六章 模型选择
- 为什么要重写hashcode() 方法
- java.io.Serializable浅析
- Hibernate复合主键映射
- activiti工作流的web流程设计器整合视频教程 SSM和独立部署
- 10.2.1
- springmvc整合mybatis框架源码 bootstrap html5 mysql oracle