PAT1008数组元素循环右移问题 (20)
2016-05-03 12:35
211 查看
一个数组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
输入格式:每个输入包含一个测试用例,第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
int data[101] = {0}, next[101]; int N, t = 1, M, tmp = 0; cin >> N >> M; while (t <= N){ cin >> tmp; data[t] = tmp; ++t; } int movt = (N - M)>0?N-M:(M-N)%6; if (movt != 0){ next[movt] = 0; next = 1; t = movt + 1; while (t != 0){ cout << data[t] << " "; t = next[t]; } } else if(movt==0||M==0){ t = 1; while (t != 0){ cout << data[t] << " "; t = next[t]; } }
相关文章推荐
- oracle安装问题
- 5个开源项目
- C#中的Hook,即钩子,引用微软的文章,很有用的
- 5个开源项目
- Linux之线程:同步与互斥
- hive建表时对字段间分割符的限制
- TLB工作原理
- 《深入.NET平台和C# 编程》内测纠错记录
- 职场黑话
- 德邦证券项目:关联表
- PostgreSQL9.5 新特性
- 演讲
- Android群英传帝落篇——程序人生,路漫漫其修远兮,吾将上下而求索!
- 运用 BoxLayout 进行 Swing 控件布局
- Android群英传帝落篇——程序人生,路漫漫其修远兮,吾将上下而求索!
- LeetCode 164. Maximum Gap
- 重写ScrollView 解决ScrollView嵌套viewpager事件冲突
- Httputils请求网络数据
- set QUOTED_IDENTIFIER ON事故记录
- 用例视图 Use Case View(rose)