1008

package com.company;

import java.util.Scanner;

public class Main {

    public static void main(String[] args) {
    // write your code here

        Scanner sc=new Scanner(System.in);
        int N=sc.nextInt();
        int M=sc.nextInt();
        int i;
        int j=0;
        int[] num=new int[N];
        int[] turn=new int[N];
        for (i=0;i<N;i++){
            num[i]=sc.nextInt();
        }
        for (j=0;j<N;j++){
            if(j>M-1){
                turn[j]=num[j-M];
            }
            if(j>=0&j<M){
                turn[j]=num[N-M+j];
            }

        }
        for (j=0;j<N;j++){
            if (j<N-1){
                System.out.print(turn[j]+" ");
            }
            else{
                System.out.println(turn[j]);
            }
        }
    }
}

这样14分,明显不行。

package com.company;

import java.util.Scanner;

public class Main {

    public static void main(String[] args) {
    // write your code here

        Scanner sc=new Scanner(System.in);
        int N=sc.nextInt();
        int M=sc.nextInt();
        int i;
        int j,k,temp;
        int[] num=new int[N];
        for (i=0;i<N;i++){
            num[i]=sc.nextInt();

        }
        for (i=N-M,j=0;i<N;i++,j++){
            if (i<=(2*N-M-1)/2){
                temp=num[i];
                num[i]=num[N-1-j];
                num[N-1-j]=temp;
            }


        }
        for (i=0,k=0;i<N-M;i++,k++){
            if(i<=(N-M-1)/2){
                temp=num[i];
                num[i]=num[N-M-1-k];
                num[N-M-1-k]=temp;
            }

        }
        for (i=N-1;i>=0;i--){
            if (i>0&i<=N-1){
                System.out.print(num[i]+" ");
            }
            else if(i==0){
                System.out.println(num[i]);
            }
        }
    }
}

两次循环倒序输出,没有添加新数组,还是不成。

import java.util.Scanner;

public class Main {

    public static void main(String[] args) {
    // write your code here

        Scanner sc=new Scanner(System.in);
        int N=sc.nextInt();
        int M=sc.nextInt();
        int i;
        int j,k,temp;
        int[] num=new int[2*N];

        for (i=0;i<N;i++){
            num[i]=sc.nextInt();
            num[i+N]=num[i];
        }
        M=M%N;
        for (i=N-M;i<2*N-M;i++){
            if (i<2*N-M-1){
                System.out.print(num[i]+" ");
            }else if(i==2*N-M-1){
                System.out.print(num[i]);
            }
        }
    }
}
 M=M%N;这句代码如果没有则部分正确,说明题目中没有明确M一定小于N,当M=N时,移动之后的数组和以前的数组完全一样,所以需要对M求余。
posted @ 2018-09-27 13:42  博客园机器人  阅读(585)  评论(0编辑  收藏  举报