#DSA0108. 向量漂移
向量漂移
时间限制: 1.0 秒
空间限制: 256 MB
题目描述
已知一个长度为 的正整数向量 ,给定一个正整数 ,你需要设计一个就地算法,让该向量循环左移 位。
每次循环左移 1 位的效果为:将数组中所有元素依次向左移动 1 位,并将 放在 的位置,使操作完的向量长度同样为 。
为了保证你的算法是就地算法,我们会在交互方式上进行限制。
交互方式
这是一道函数式交互题,不需要选手考虑输入输出,也不要从标准输入读入数据,或将任何内容输出到标准输出,否则会影响判题。
你提交的代码需要包含头文件 shift.h
。
你需要实现一个函数 void shift(int, int)
,传入的第一个参数为向量长度 ,第二个参数为 ;在该函数中完成对数组的循环左移。
你可以调用函数 void swapval(int, int)
,传入参数为两个介于 到 的整数 ,交换当前向量中 位置和 位置的值。当 swapval
调用次数超过 ,或传入参数越界,则会报 Runtime Error
。
以下我们给出一个代码提交实例(会固定交换依次 和 位置的值,仅作为示例,不保证能得分):
#include "shift.h"
void shift(int n, int k)
{
swapval(0, n - 1);
}
你不需要,也不应该,实现主函数。
我们给出两个样例,供你在本地进行调试。
3 2
5 0 3
3 5 0
5 7
1 2 3 4 5
3 4 5 1 2
子任务
对于所有数据,保证 。
提示
Chap 01,绪论,就地算法,习题 [1-26]。
结合教材第 1 章的就地算法 reverse
进行实现。
Related
In following contests: