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

    .

  • 相关阅读:
    算法学习——贪心篇
    Centos7下搭建LAMP环境,安装wordpress(不会生产博客,只是一名博客搬运工)(菜鸟)
    小白创建网站的曲折之路
    7.2.5 多层嵌套的if语句
    7.2.4 else与if配对
    7.2.3
    7.4 electirc.c -- 计算电费
    oracle数据库命令行查看存储过程
    Linux下如何查看进程准确启动时间
    7.2 if else 语句
  • 原文地址:https://www.cnblogs.com/boomkeeper/p/1008b.html
Copyright © 2011-2022 走看看