一个数组A中存有N(>)个整数,在不允许使用另外数组的前提下,将每个整数循环向右移M(≥)个位置,即将A中的数据由(A​0​​A​1​​⋯A​N−1​​)变换为(A​N−M​​⋯A​N−1​​A​0​​A​1​​⋯A​N−M−1​​)(最后M个数循环移至最前面的M个位置)。如果需要考虑程序移动数据的次数尽量少,要如何设计移动的方法?

输入格式:

每个输入包含一个测试用例,第1行输入N(1)和M(≥);第2行输入N个整数,之间用空格分隔。

输出格式:

在一行中输出循环右移M位以后的整数序列,之间用空格分隔,序列结尾不能有多余空格。

输入样例:

6 2
1 2 3 4 5 6

输出样例:

5 6 1 2 3 4
#include <stdio.h>
#include <algorithm>
#include <string>
#include <map>
#include <iostream>
#include <stack>
#include <math.h>
#include <vector>
#include <queue>
using namespace std;
const int maxn = ;
int index[maxn] = { };
queue<int> q; int main(){
int n, m;
cin >> n >> m;
m = m%n;
for (int i = ; i < n; i++){
int j;
cin >> j;
q.push(j);
}
for (int i = ; i < n - m;i++){
int j;
j = q.front();
q.pop();
q.push(j);
}
for (int i = ; i < n; i++){
cout << q.front();
q.pop();
if (!q.empty())cout << ' ';
}
system("pause");
}

看了网上有好多方法实现这个,用队列的好像不多,看到题目要求第一想法是要用链表,速度绝对是最快的,但写起来比较复杂。就想到了这个可以用队列实现,先进先出。网上还有开两个数组的,开一个两倍长度数组的,还有根据输入直接控制输出的,都很妙。

注意点:m可能很大,超过n,所以要先取余。

最新文章

  1. vsftp软链接ln遇到550错误
  2. Least Common Ancestors 分类: ACM TYPE 2014-10-19 11:24 84人阅读 评论(0) 收藏
  3. mysql 查询随机条记录的sql语句和php计算概率
  4. 面向中国 Azure 开发者发布开源解决方案指南
  5. Oracle的SCN与检查点机制
  6. IE8 不支持Date.now()
  7. nyoj 214
  8. javascript中的原型理解总结
  9. [置顶] java ant 配置及构建项目
  10. vc中关于 directx的配置,和dxsdk_extras(directshow)
  11. MySQL锁详解
  12. 201521123027&lt;java程序设计&gt;第14周作业总结
  13. win10 uwp 视差效果
  14. wing带你玩转自定义view系列(3)模仿微信下拉眼睛
  15. Git branch &amp;&amp; Git checkout常见用法
  16. solr6.5.0(windows)教程
  17. 020-Json结构数据序列化异步传递
  18. Windows10关闭自动更新
  19. (java项目)坦克大战 2.0
  20. CentOS 7 NAT软路由

热门文章

  1. hadoop学习之hdfs文件系统
  2. php面向对象高级-魔术方法与迭代器
  3. 新飞电器的BI建设案例
  4. AutoCompleteTextView 自定义提示样式
  5. 如何借助 NoSQL 提高 JPA 应用性能
  6. Sql server在使用sp_executesql @sql执行文本sql时,报错: Could not find database ID 16, name &#39;16&#39;. The database may be offline. Wait a few minutes and try again.
  7. python基础学习9----深浅拷贝
  8. AWS服务学习
  9. Gitkraken的使用
  10. 作为一名GIS从业人员,这些网站你应该关注