当前位置:网站首页>PTA 习题2.2 数组循环左移
PTA 习题2.2 数组循环左移
2022-08-10 08:24:00 【盖世馒头】
题目
本题要求实现一个对数组进行循环左移的简单函数:一个数组a中存有n(>0)个整数,在不允许使用另外数组的前提下,将每个整数循环向左移m(≥0)个位置,即将a中的数据由(a0a1…an-1)变换为(am…an-1a0a1…am-1)(最前面的m个数循环移至最后面的m个位置)。如果还需要考虑程序移动数据的次数尽量少,要如何设计移动的方法?
输入格式:
输入第1行给出正整数n(≤100)和整数m(≥0);第2行给出n个整数,其间以空格分隔。
输出格式:
在一行中输出循环左移m位以后的整数序列,之间用空格分隔,序列结尾不能有多余空格。
输入样例:
8 3
1 2 3 4 5 6 7 8
输出样例:
4 5 6 7 8 1 2 3
1、循环队列法
利用循环队列的思想,可以简单地做出来
#include<stdio.h>
int main(){
int front=0,rear=0,size;
scanf("%d%d",&size,&front);
int arr[size];
rear=front-1;
for(int i=0;i<size;i++)
scanf("%d",&arr[i]);
for(int i=front;i<front+size;i++){
if(i==front)
printf("%d",arr[i%size]);
else
printf(" %d",arr[i%size]);
}
return 0;
}
2、逆转法
分别先对前半部分和后半部分进行逆转,然后再对整个数组进行逆转。
#include<stdio.h>
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 size,movements;
scanf("%d%d",&size,&movements);
movements=movements%size;
int arr[size];
for(int i=0;i<size;i++)
scanf("%d",&arr[i]);
reverse(arr,0,movements-1);
reverse(arr,movements,size-1);
reverse(arr,0,size-1);
for(int i=0;i<size;i++){
printf("%d",arr[i]);
if(i<size-1)
printf(" ");
}
return 0;
}
边栏推荐
猜你喜欢
PLSQL学习第二天
时序动作定位 | ACGNet:弱监督时序动作定位的动作补充图网络(AAAI 2022)
Rust learning: 6.3_ Tuples of composite types
Synchronization lock synchronized traces the source
Process management (dynamic)
速卖通卖家如何抓住产品搜索权重
TensorFlow 2.9的零零碎碎(一)
短视频同城流量宣传小魔推有何优势?如何给实体商家带来销量?
The probability distribution and its application
【Rust指南】使用Cargo工具高效创建Rust项目 | 理解Rust特别的输入输出语句
随机推荐
phpstudy starts automatically
Rust学习:6.3_复合类型之元组
模糊查询除了like+ % 还能用什么方式
Compilation failure:找不到符号
自动化测试框架搭建 ---- 标记性能较差用例
[Learn Rust together | Advanced articles | RMQTT library] RMQTT message server - installation and cluster configuration
Uni applet Tencent map polygon background transparency
A File Online Query Display and Download Function Realized by Delphi
2022-08-01 Advanced Network Engineering (24) STP Advanced Knowledge
[深入研究4G/5G/6G专题-56]: L3信令控制-5-无线承载管理
Introduction to C integer data storage
It is obvious that a unique index is added, why does it still generate duplicate data?
Based on STC8G2K64S4 single-chip microcomputer to display analog photosensitive analog value through OLED screen
Go-Excelize API source code reading (11) - GetActiveSheetIndex()
VMware ESX Server常用命令行
raid5的写性能,是不的比raid10快一些?
Summary of ctfshow SSTI knowledge points
34. Talk about why you want to split the database?What methods are there?
同步锁synchronized追本溯源
2022-08-01 网工进阶(二十三) VLAN高级技术-VLAN聚合、MUX VLAN