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

    .

  • 相关阅读:
    SP笔记:交叉实现七行并成一行
    HTML tag 学习
    操作哈希表
    Efficient bipedal robots based on passivedynamic walkers
    Pushing People Around
    ZEROMOMENT PONTTHIRTY FIVE YEARS OF ITS LIFE

    Active Learning for RealTime Motion Controllers
    Accelerometerbased User Interfaces for the Control of a Physically Simulated Character
    Dynamic Response for Motion Capture Animation
  • 原文地址:https://www.cnblogs.com/boomkeeper/p/1008b.html
Copyright © 2011-2022 走看看