首页 > 代码库 > *1008. 数组元素循环右移问题
*1008. 数组元素循环右移问题
1 /* 2 * Main.c 3 * 1008. 数组元素循环右移问题 Ver.2 4 * Created on: 2014年8月29日 5 * Author: Boomkeeper 6 ********测试通过******* 7 */ 8 #include <stdio.h> 9 10 int main(void) {11 12 int array[101];13 int n, m; //题目中的N、M14 int i,j;15 16 scanf("%i %i", &n, &m);17 getchar();18 19 for (i = 0; i < n; i++) {20 scanf("%i", &array[i]);21 }22 //将m限制在0~n的范围23 // while (m > n) {24 // m /= n;25 // }26 //右移27 int temp;28 for(i=0;i<m;i++){29 temp = array[n-1];30 for(j=n-2;j>=0;j--){31 array[j+1] = array[j];32 }33 array[0] = temp;34 }35 //输出36 for(i=0;i<n;i++){37 if(i==0)38 printf("%i",array[i]);39 else40 printf(" %i",array[i]);41 }42 printf("\n");43 44 return 0;45 }
如果限制m在0~n的范围,题目提交就会报错,去掉可以通过。这样如果m > n,其实无效循环了好多遍...应该是多循环(m/n)*n遍吧...
1 /* 2 * Main.c 3 * 1008. 数组元素循环右移问题 Ver.1 4 * Created on: 2014年8月29日 5 * Author: Boomkeeper 6 ********部分通过******* 7 */ 8 #include <stdio.h> 9 10 int main(void) {11 12 int array[101];13 int n, m; //题目中的N、M14 int i;15 16 scanf("%i %i", &n, &m);17 getchar();18 19 for (i = 0; i < n; i++) {20 scanf("%i", &array[i]);21 }22 //将m限制在0~n的范围23 while (m > n) {24 m /= n;25 }26 //输出27 for (i = n - m; i < n; i++) {28 if (i == n - m)29 printf("%i", array[i]);30 else31 printf(" %i", array[i]);32 }33 for (i = 0; i < n - m; i++)34 printf(" %i", array[i]);35 printf("\n");36 37 return 0;38 }
这个算法就没有完全通过,不懂了...如果不限制m范围的话,就会数组越界。
题目链接:
http://pat.zju.edu.cn/contests/pat-b-practise/1008
.
*1008. 数组元素循环右移问题
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。