转跳点:  

数组的题还是普遍比较简单的,这道题我取巧了,取巧的方法看看就行,没多大意义,用了点循环队列的思想()

  其实比赛的时候,无论怎么过的都无所谓,能过就行。我直接在读入数据的时候做了手脚……。让 i 从 step 开始 到 numsize+step 结束。然后中间索引改成 i % numsize 。这样在存入的时候就完成的了移动。不过这样就违背了题目的初衷,我们在A题了之后还是老老实实的用正常的点的方法写一遍吧,毕竟咱是来练技术的。

先贴一下水过的代码

 1 /**
2 * @brief 正常的方法
3 * @note 2019/10/5
4 * @author 杨文蓁的小迷弟
5 */
6 #include <stdio.h>
7 #include <stdlib.h>
8 #define MAX_SIZE 110
9
10 int main()
11 {
12 int numsize, step;
13 int numarrays[MAX_SIZE] = {0};
14 scanf("%d %d", &numsize, &step);
15
16 for (int i = step; i < numsize + step; i++)
17 {
18 scanf("%d", &numarrays[i % numsize]);
19 }
20
21 for (int i = 0; i < numsize; i++)
22 {
23 printf("%s%d", 0 == i ? "" : " ", numarrays[i]);
24 }
25
26 return 0;
27 }

看看就好

  其实正常的思路也很简单,写过插入排序就知道,这玩意适合从后往前操作。首先将数组的最后一个存起来,接着将让数组的前一个赋值给后一个,当循环到数组头部时,将temp给第一个位置。step有多大,就循环多少次

贴一下代码:

 1 /**
2 * @brief 正常的方法
3 * @note 2019/10/5
4 * @author 杨文蓁的小迷弟
5 */
6 #include <stdio.h>
7 #include <stdlib.h>
8 #define MAX_SIZE 110
9
10 int main()
11 {
12 int numsize, step;
13 int numarrays[MAX_SIZE] = {0};
14 scanf("%d %d", &numsize, &step);
15
16 for (int i = 0; i < numsize; ++i)
17 {
18 scanf("%d", &numarrays[i]);
19 }
20
21 for (int i = 0; i < step; ++i)
22 {
23 int temp = numarrays[numsize - 1];
24 for (int j = numsize - 1; j >= 0; --j)
25 {
26 numarrays[j] = numarrays[j - 1];
27 if (0 == j)
28 {
29 numarrays[j] = temp;
30 }
31 }
32 }
33
34 for (int i = 0; i < numsize; i++)
35 {
36 printf("%s%d", 0 == i ? "" : " ", numarrays[i]);
37 }
38
39 return 0;
40 }

正常方法

  其实还有一种抠字眼的做法,他说一个数组,没说不能开大一点,那我们就开大一点,从numsize + step - 1 ~ step 做一次循环,前面0 ~ step -1在做一次循环。这个虽然有点小小浪费空间,但是其赋值次数大大缩减了,所有个人还是比较推崇最后一种的

 1 /**
2 * @brief 正常的方法
3 * @note 2019/10/5
4 * @author 杨文蓁的小迷弟
5 */
6 #include <stdio.h>
7 #include <stdlib.h>
8 #define MAX_SIZE 110
9
10 int main()
11 {
12 int numsize, step;
13 int numarrays[MAX_SIZE] = {0};
14 scanf("%d %d", &numsize, &step);
15
16 for (int i = 0; i < numsize; ++i)
17 {
18 scanf("%d", &numarrays[i]);
19 }
20
21 step %= numsize;
22 for (int i = numsize + step - 1; i > step - 1; i--)
23 {
24 numarrays[i] = numarrays[i - step];
25 }
26 for (int i = 0; i <= step - 1; i++)
27 {
28 numarrays[i] = numarrays[numsize + i];
29 }
30
31 for (int i = 0; i < numsize; i++)
32 {
33 printf("%s%d", 0 == i ? "" : " ", numarrays[i]);
34 }
35
36 return 0;
37 }

抠字眼

上面的两个代码记得加一步step%numsize;防止step比数组大

  

  PTA不易,诸君共勉!

P 1008 数组元素循环右移问题的更多相关文章

  1. PAT乙级 1008. 数组元素循环右移问题 (20)

    1008. 数组元素循环右移问题 (20) 时间限制 400 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 一个数组A中存有N(N>0)个整数,在不允 ...

  2. PAT乙级真题1008. 数组元素循环右移问题 (20)

    原题: 1008. 数组元素循环右移问题 (20) 时间限制400 ms内存限制65536 kB 一个数组A中存有N(N>0)个整数,在不允许使用另外数组的前提下,将每个整数循环向右移M(M&g ...

  3. PAT-乙级-1008. 数组元素循环右移问题 (20)

    1008. 数组元素循环右移问题 (20) 时间限制 400 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 一个数组A中存有N(N>0)个整数,在不允 ...

  4. [C++]PAT乙级1008.数组元素循环右移问题 (20/20)

    /* 1008. 数组元素循环右移问题 (20) 时间限制 400 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 一个数组A中存有N(N>0)个整数, ...

  5. PAT 乙级 1008 数组元素循环右移问题 (20) C++版

    1008. 数组元素循环右移问题 (20) 时间限制 400 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 一个数组A中存有N(N>0)个整数,在不允 ...

  6. PAT 1008 数组元素循环右移问题 (20)(代码)

    1008 数组元素循环右移问题 (20)(20 分) 一个数组A中存有N(N&gt0)个整数,在不允许使用另外数组的前提下,将每个整数循环向右移M(M>=0)个位置,即将A中的数据由(A ...

  7. 【PAT】1008. 数组元素循环右移问题 (20)

    1008. 数组元素循环右移问题 (20) 一个数组A中存有N(N>0)个整数,在不允许使用另外数组的前提下,将每个整数循环向右移M(M>=0)个位置,即将A中的数据由(A0A1……AN- ...

  8. PAT 乙级 1008.数组元素循环右移问题 C++/Java

    1008 数组元素循环右移问题 (20 分) 题目来源 一个数组A中存有N(>)个整数,在不允许使用另外数组的前提下,将每个整数循环向右移M(≥)个位置,即将A中的数据由(A​0​​A​1​​⋯ ...

  9. PAT——1008. 数组元素循环右移问题

    一个数组A中存有N(N>0)个整数,在不允许使用另外数组的前提下,将每个整数循环向右移M(M>=0)个位置,即将A中的数据由(A0A1……AN-1)变换为(AN-M …… AN-1 A0  ...

  10. PAT 1008. 数组元素循环右移问题 (20)

    一个数组A中存有N(N>0)个整数,在不允许使用另外数组的前提下,将每个整数循环向右移M(M>=0)个位置,即将A中的数据由(A0 A1--AN-1)变换为(AN-M -- AN-1 A0 ...

随机推荐

  1. python用户界面编程和文件转换为exe文件

    python用户界面编程学习代码如下所示: #python用户图形界面编程实现import sys #简单用户图形界面实现from PyQt5.QtWidgets import QApplicatio ...

  2. python中对闭包的理解

    运行环境声明:本人的代码在sublime text 3中写的,可以Ctrl+b运行.python版本是python3.6.如果您直接运行的,请自觉加入if __name__ == '__main__' ...

  3. 关于length、length()、size()

    length:属性,数组的属性. length(): String的方法,方法体里面是  return value.length; size():集合如list.set.map的方法,返回元素个数.

  4. day06 python 3中的编码

    #python2 和 python3 的一些区别 ''' #python2 print('aaa') print'aaa' range() xrange()生成器 raw_input() #pytho ...

  5. vagrant 添加带版本号的 box

    众所周知,vagrant添加box的时候要从外网下载,那速度...(说多了都是泪),所以只好用下载工具下载到本地之后再添加. 如何搭建 homestead:https://laravelacademy ...

  6. 回顾PHP:第一章:PHP基础语法(2)

    十.PHP常量和变量——用常量限制用户跳过某些文件(重要) 十.1常量在代码中定义.书写方式: define(常量名,常量值) 注:1.常量值只能为标量 2.常量名可以小写,但是通常大写 3.常量名可 ...

  7. 【Python基础知识】【语法】【入门】

    一.Python概述 Python是一门面向对象的编程语言,拥有强大丰富的库,没有操作系统的限制,是一种优美.清晰的编程语言. 二.Python基础语法 1.Python标识符 标识符就是程序中定义的 ...

  8. PHP+MySQL实现在线测试答题实例

    这个实例主要给大家介绍如何使用jQuery+PHP+MySQL来实现在线测试题,包括动态读取题目,答题完毕后台评分,并返回答题结果. 读取答题列表: $sql = "select * fro ...

  9. Python format语法

    a = {"name" : "alex","age":16} v = "my name is {name}, my age is ...

  10. poj1703 Find them, Catch them(种类并查集

    题目地址:http://poj.org/problem?id=1703 题目大意:警察抓了n个坏蛋,这些坏蛋分别属于龙帮或蛇帮.输入m个语句,A x y询问x和y的关系(在一个帮派,不在,不能确定), ...