经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » 程序设计 » C 语言 » 查看文章
1008 数组元素循环右移问题
来源:cnblogs  作者:乐逍遥xwl  时间:2019/1/2 9:49:24  对本文有异议

一个数组A中存有N(>0)个整数,在不允许使用另外数组的前提下,将每个整数循环向右移M(0)个位置,即将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(1N100)和M(0);第2行输入N个整数,之间用空格分隔。

输出格式:

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

输入样例:

  1. 6 2
  2. 1 2 3 4 5 6

输出样例:

  1. 5 6 1 2 3 4

  1. 1 #include<stdio.h>//整体移动思想
  2. 2 int main()
  3. 3 {
  4. 4 int n,m;
  5. 5 scanf("%d %d",&n,&m);
  6. 6 int num[n];
  7. 7 for(int i=0;i<n;i++)
  8. 8 scanf("%d",&num[i]);
  9. 9 int temp;
  10. 10 for(int i=0;i<m;i++)//移动m轮
  11. 11 {
  12. 12 temp=num[n-1];//取出最后一位 (虽然n固定,但是后移时num[n]会改变,则取出值不同)
  13. 13 for(int j=n-1;j>=0;j--)
  14. 14 {
  15. 15 num[j]=num[j-1];
  16. 16 if(j==0)
  17. 17 num[j]=temp;//放到最前面
  18. 18 }//完成一轮
  19. 19 }
  20. 20 for(int i=0;i<n-1;i++)
  21. 21 printf("%d ",num[i]);
  22. 22 printf("%d",num[n-1]);
  23. 23 return 0;
  24. 24 }

 

 
 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号