将一个存放n(1<n<maxSize,maxSize=100)个整数存放在一维数组R中,要求实现R序列循环左移p个位置。
源码:
import java.io.*;
import java.util.Scanner;
class test
{
public static void Reverse(int[] R,int l,int r){//把数组R的下标l到下标r,区间[l,r]的元素倒置
int i,j;
int temp;
for(i=l,j=r;i<j;++i,--j){
temp=R[i];
R[i]=R[j];
R[j]=temp;
}
}
public static void RCR(int[] R,int n,int p){
if(p<=0||p>=n){
System.out.println("ERROR");
}else{
//三部曲:
Reverse(R,0,p-1);//1.把R中前p个元素按顺序倒置;
Reverse(R,p,n-1);//2.把剩下的元素按循序倒置;
Reverse(R,0,n-1);//3.最后把R所有元素按顺序倒置。
}
}
//一下主函数是次要的,可以不看:
public static void main (String[] args) throws java.lang.Exception
{
int L=0,i=0,n=0;
int[] R;
R=new int[50];
Scanner scan=new Scanner(System.in);//new一个输入流
if(scan.hasNextInt())
L=scan.nextInt();
if(scan.hasNextInt())
n=scan.nextInt();
for(i=0;i<n;++i){//只接收整数
if(scan.hasNextInt()){
R[i]=scan.nextInt();
}else{
i--;
}
}
System.out.println("n:"+n);
System.out.println("L:"+L);
RCR(R,n,L);
for(i=0;i<n;++i){
System.out.print(R[i]);
if(i==n-1)
System.out.print("\n");
else
System.out.print(",");
}
}
}