一、给一个数组或者字符串
1、如果旋转前n个数可以分三步
2、现将前n个数进行旋转再将后面的数旋转
3、最后把整体进行旋转
我们可以看一下代码
void reserve(int *a,int left,int right)
{
while(left<right)
{
int x=a[left];
a[left]=a[right];
a[right]=x;
left++;
right--;
}
}
上面这个是这个是旋转代码的函数
int k;
scanf("%d",&k);
reserve(a,0,k-1);//先旋转前k个数
reserve(a,k,n-1);//后k个数
reserve(a,0,n-1);//整体
这个就是我上面说的三个旋转传入参数就好了(a是定义的数组,n是数组的长度)
旋转的核心就是这个了,字符串的话是一样的,大家可以动起手来写个字符串的旋转了哦。
可以参考一下我写的代码
#include<stdio.h>
void reserve(int *a,int left,int right)
{
while(left<right)
{
int x=a[left];
a[left]=a[right];
a[right]=x;
left++;
right--;
}
}
void printf_a(int *a,int m)
{
for(int i=0;i<m;i++)
{
printf("%d ",a[i]);
}
}
int main()
{
int n;
scanf("%d",&n);
int a[n];
for(int i=0;i<n;i++)
{
scanf("%d",&a[i]);
}
int k;
scanf("%d",&k);
reserve(a,0,k-1);//先旋转前k个数
reserve(a,k,n-1);//后k个数
reserve(a,0,n-1);//整体
printf_a(a,n);
return 0;
}