CCF201703-2 学生排队

本文展示了一个使用C++实现的数组元素位移算法,通过输入数组长度和操作次数,可以将指定元素向前或向后位移特定位置,同时保持数组其他元素的相对顺序不变。该算法适用于需要频繁调整数组元素位置的应用场景。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

简单题不做过多解释,有问题欢迎下方留言!

using namespace std;
#include<bits/stdc++.h>
int main(){
	int n,m,p,q,tmp;
	int a[1000];
	int i,j;
	cin>>n>>m;
	for(i=0;i<n;i++) a[i]=i+1;
	while(m--){
		cin>>p>>q;
		for(i=0;i<n;i++){
			if(a[i] == p){//find
				tmp=i;
				if(q>0){
					for(j=tmp;j<tmp+q;j++){
						a[j]=a[j+1];
					}
					a[tmp+q]=p;
					break;
				}
				else{
					for(j=tmp;j>tmp+q;j--){
						a[j]=a[j-1];
					}
					a[tmp+q]=p;
					break;
				}
			}
		}
//		for(i=0;i<n;i++){
//			cout<<a[i]<<" ";
//		}
	}
	for(i=0;i<n;i++){
		cout<<a[i]<<" ";
	}
	return 0;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值