zoukankan      html  css  js  c++  java
  • *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、M
    14     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         else
    40             printf(" %i",array[i]);
    41     }
    42     printf("
    ");
    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、M
    14     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         else
    31             printf(" %i", array[i]);
    32     }
    33     for (i = 0; i < n - m; i++)
    34         printf(" %i", array[i]);
    35     printf("
    ");
    36 
    37     return 0;
    38 }

    这个算法就没有完全通过,不懂了...如果不限制m范围的话,就会数组越界。

    题目链接:

    http://pat.zju.edu.cn/contests/pat-b-practise/1008

    .

  • 相关阅读:
    使用Jackson对字典翻译
    通过代理的方式实现对httpClient的监控,超时回调
    mapstruct 1.4.2和lombok 1.18.16之后版本,报错和mapstruct生成空的实现
    jenkins + sonar 中文文件名报错解决
    linux 启动jar脚本
    easyUI关键(常见)组件详解
    shiro三连斩之概念
    SpringMVC请求参数总结
    springboot jsp,过滤器,拦截器
    CentOS添加使用
  • 原文地址:https://www.cnblogs.com/boomkeeper/p/1008b.html
Copyright © 2011-2022 走看看