smile


私信TA

用户名:18797819559

访问量:1161

签 名:

等  级
排  名 72886
经  验 140
参赛次数 0
文章发表 1
年  龄 0
在职情况 学生
学  校 江西现代职业技术学院
专  业

  自我简介:

TA的其他文章

解题思路:
采用变形全排列思路,当a[i]和a[i+1]两个元素交换时,根据两个相邻元素差不超过2,所以a[i-1]到a[i+2]是不能移动的,除掉i==a.length-3这种情况



注意事项:





参考代码:

import java.lang.reflect.Array;

import java.util.Arrays;

import java.util.Scanner;


public class Main {


         public static void main(String[] args) {

         Scanner sc=new Scanner(System.in);

         int n=sc.nextInt();

         int[] a=new int[n];

         for(int i=0;i<a.length;i++){

                  a[i]=i+1;

         }

         ff(a,1);

         System.out.println(sum);

         }

         static int sum=0;

         static void ff(int[] a,int index){

                     if(index>=a.length-1){

                             sum++;

                             return;

                     }

                     for(int i=0;i<2;i++){

                             int temp=a[index]; a[index]=a[index+i];a[index+i]=temp;

                             if(i==1&&index!=a.length-3){

                                      ff(a,index+3);

                             }else{

                                       ff(a,index+1);

                             }

                             temp=a[index]; a[index]=a[index+i];a[index+i]=temp;

                     }

         }

}


 

0.0分

0 人评分

看不懂代码?想转换其他语言的代码? 或者想问其他问题? 试试问问AI编程助手,随时响应你的问题:

编程语言转换

万能编程问答

代码解释器

  评论区