1008 数组元素循环右移问题 (20 分)

简介: 一个数组A中存有N(>0)个整数,在不允许使用另外数组的前提下,将每个整数循环向右移M(≥0)个位置,即将A中的数据由(A0​A1​⋯AN−1​)变换为(AN−M​⋯AN−1​A0​A1​⋯AN−M−1​)(最后M个数循环移至最前面的M个位置)。如果需要考虑程序移动数据的次数尽量少,要如何设计移动的方法?

一个数组A中存有N(>0)个整数,在不允许使用另外数组的前提下,将每个整数循环向右移M(≥0)个位置,即将A中的数据由(A0A1⋯AN−1)变换为(AN−M⋯AN−1A0A1⋯AN−M−1)(最后M个数循环移至最前面的M个位置)。如果需要考虑程序移动数据的次数尽量少,要如何设计移动的方法?

输入格式:

每个输入包含一个测试用例,第1行输入N(1≤N≤100)和M(≥0);第2行输入N个整数,之间用空格分隔。

输出格式:

在一行中输出循环右移M位以后的整数序列,之间用空格分隔,序列结尾不能有多余空格。

输入样例:

1. 6 2
2. 1 2 3 4 5 6

输出样例:

5 6 1 2 3 4

题目分析:

1.用一个中间变量存储数组的尾项

2.让数组的尾项-1项依次向后移

3.让首项=中间变量

4.输出

代码如下:


C语言:


#include <stdio.h>
int main() {
  int a[101];
  int n, m;
  scanf("%d%d", &n, &m);
  for (int i = 0; i < n; i++) {
    scanf("%d", &a[i]);
  }
  for (int i = 0; i < m; i++) {
    int t = a[n - 1];
    for (int j = n - 2; j >= 0; j--) {
      a[j + 1] = a[j];
    }
    a[0] = t;
  }
  printf("%d", a[0]);
  for (int i = 1; i < n; i++) {
    printf(" %d", a[i]);
  }
}


C++:


#include <iostream>
using namespace std;
int main() {
  int a[101];
  int n, m;
  cin >> n >> m;
  for (int i = 0; i < n; i++) {
    cin >> a[i];
  }
  for (int i = 0; i < m; i++) {
    int t = a[n - 1];
    for (int j = n - 2; j >= 0; j--) {
      a[j + 1] = a[j];
    }
    a[0] = t;
  }
  cout << a[0];
  for (int i = 1; i < n; i++) {
    cout << " " << a[i];
  }
}



相关文章
|
机器学习/深度学习 运维 算法
监督算法和无监督算法之间的区别
【8月更文挑战第23天】
459 0
|
机器学习/深度学习 人工智能 自然语言处理
AIGC技术革新:智能创造如何重塑艺术与设计行业
AIGC技术,人工智能生成内容,正引领艺术与设计行业的变革。借助深度学习和自然语言处理等技术,AIGC能自动生成文本、图像等内容,丰富创作手段并提供创新机会。在艺术领域,它模拟各种风格作品,助力高效创作;在设计领域,它根据用户需求生成设计方案,提升个性化选择。AIGC打破了传统界限,提高了创作效率,并满足了用户的个性化需求。未来,随着技术进步和应用场景拓展,AIGC将在虚拟现实等领域的结合中,为艺术与设计带来更沉浸式、交互式的体验,重塑行业未来。【6月更文挑战第4天】
1254 1
|
机器学习/深度学习 XML SQL
在Python中,数据加载与格式转换
在Python中,数据加载与格式转换
153 1
|
C语言
【C语言】判断一个数是否为素数
【C语言】判断一个数是否为素数
657 0
|
测试技术 C语言
数组元素循环右移问题 (C语言解法)
数组元素循环右移问题 (C语言解法)
数组元素循环右移问题 (C语言解法)
|
弹性计算 Ubuntu Shell
DeepRec编译生成whl包
DeepRec编译生成whl包
458 0
DeepRec编译生成whl包
|
Java 机器人 Linux
【2. 操作系统—中断、异常、系统调用】
🌗1. 启动 作用解析 Disk : 存放OS和Bootloader BIOS : 基于I/O处理系统(主要是计算机开机后,能够检查各种外设,然后加载软件执行) Bootloader : 加载OS,将OS从磁盘放入内存 注意:os最开始不是放到内存中的,而是放到disk(硬盘)中,由bios提供支持 开机流程 BIOS 开机后,寻找显卡和执行BIOS (此时, CS : IP = 0xF000 : 0xFFF0, CS/IP 两个寄存器) 将Bootloader从磁盘的引导扇区加载到0x7C00 (Bootloader一共占用512M字节的内存) 跳转到 CS : IP = 0
279 0
【2. 操作系统—中断、异常、系统调用】
|
知识图谱
L1-061 新胖子公式 (10 分)
L1-061 新胖子公式 (10 分)
161 0
|
网络安全 NoSQL 关系型数据库
手把手教你创建专有网络(VPC)和交换机
有时候在选择云产品,进行报价时,会提示没有交换机,从而导致看不了正确的价格。你有没有遇到这样的情况了:如果有类似的情况请跟我一起,一步一步的创建VPC和交换机(此图中已有VPC,我们暂且略过)一、我们在控制台先找到专有网络菜单:二、选择对应的地域,如果已有VPC,就直接到选择创建交换机:三、创建交换.
4521 0
手把手教你创建专有网络(VPC)和交换机
|
人工智能 算法 大数据
从IaaS到AI,马云为何让阿里云去扛阿里人工智能的大旗?
绝大多数人对阿里云的定位仍是国内市场最大的IaaS提供商。不过,随着国内人工智能市场在2016年迎来爆发,阿里开始在人工智能领域发力,阿里云的这一角色正在悄然转变。本文将向读者详细介绍阿里云是如何支持阿里从IaaS转到AI的。
4080 0