当前位置: 首页 > news >正文

【PTA数据结构 | C语言版】线性表循环右移

本专栏持续输出数据结构题目集,欢迎订阅。

文章目录

    • 题目
    • 代码

题目

给定顺序表 A=(a1​,a2​,⋯,an​),请设计一个时间和空间上尽可能高效的算法将该线性表循环右移指定的 m 位。例如,(1,2,5,7,3,4,6,8) 循环右移 3 位(m=3) 后的结果是 (4,6,8,1,2,5,7,3)。

输入格式:
第一行输入 n ( 1≤n≤105)、m(m≥0);第二行输入 n 个整数。所有数字在 int 型整数范围内,同行数字间以空格分隔。

输出格式:
输出循环右移 m 位以后的整数序列。数字间以 1 个空格分隔,行首尾不得有多余空格。

输入样例:
6 2
1 2 3 4 5 6

输出样例:
5 6 1 2 3 4

代码

#include <stdio.h>// 反转数组中从start到end的元素
void reverse(int arr[], int start, int end) {while (start < end) {int temp = arr[start];arr[start] = arr[end];arr[end] = temp;start++;end--;}
}int main() {int n, m;scanf("%d %d", &n, &m);// 定义数组并读取输入元素int arr[100000];for (int i = 0; i < n; i++) {scanf("%d", &arr[i]);}// 右移n次等于原数组 避免多余移动m = m % n;// 步骤1: 反转前n-m个元素reverse(arr, 0, n - m - 1);// 步骤2: 反转后m个元素reverse(arr, n - m, n - 1);// 步骤3: 反转整个数组完成循环右移reverse(arr, 0, n - 1);// 输出结果,确保行末无多余空格for (int i = 0; i < n; i++) {printf("%d", arr[i]);if (i < n - 1) {printf(" ");}}printf("\n");return 0;
}    
http://www.dtcms.com/a/271539.html

相关文章:

  • AI进化论03:达特茅斯会议——AI的“开宗立派”大会
  • 【王阳明代数讲义】心气微积分西方体系汇流历史考述
  • Agent AI(1):多模态交互智能中的背景和动机
  • 2025快手创作者中心发布视频python实现
  • 各类电子设备镜像格式及文件系统统计
  • ETF期权交割日全攻略
  • Linux的 `test`命令(或等价中括号写法 `[空格expression空格]`)的用法详解. 笔记250709
  • 遍历map(LinkedHashMap)
  • 52 spi接口两笔读写耗时多大的问题
  • AP中的Execution Manager“非报告进程”和“伴随进程”概念解析
  • n8n文本语意识别与问题自动补充工作流的深化及企业级部署
  • 代码随想录Day15:二叉树(平衡二叉树、二叉树的所有路径、左叶子之和、完全二叉树的节点个数——全递归版本)
  • 记忆管理框架MemOS——在时序推理上较OpenAI提升159%
  • python+vue的企业产品订单管理系统
  • pytorch常用API
  • [特殊字符] 突破小样本瓶颈:DataDream——用Stable Diffusion生成高质量分类数据集
  • 认证鉴权技术解析:COOKIE | SESSION | TOKEN | JWT | SSO
  • `fatal: bad config value for ‘color.ui‘`错误解决方案
  • 前端UI逻辑复杂可以用什么设计模式
  • 卫星通信终端天线的5种对星模式之二:功率检测型载波跟踪
  • 在Excel用公式计算周次
  • NumPy-梯度与导数计算详解
  • 用一个代码案例详解介绍vmalloc函数的功能和作用
  • 权限分级看板管理:实时数据驱动决策的关键安全基石
  • 奇异值分解(singular value decomposition,SVD)
  • 笔试——Day2
  • 单细胞入门(2)-经典案例分析
  • EPLAN 电气制图(六):结构盒与设备管理器核心概念(基础知识选看)
  • 脑电分析入门指南:信号处理、特征提取与机器学习
  • python 在运行时没有加载修改后的版本