欢迎您访问365答案网,请分享给你的朋友!
生活常识 学习资料

蓝桥杯算法训练序列(递归)

时间:2023-07-02

 题目:

代码:

import java.util.Scanner;public class Main {public static void main(String[] args) {Scanner sc = new Scanner(System.in);int n = sc.nextInt();Solution(0,n-1);//a[0]~a[n-1]System.out.println(sum%1007);//对1007取模}static int[] a={1,2,3,4,5,6,7,8,9,10};//1<=n<=10static int sum = 0;//逆序对的计数变量public static void Solution(int begin,int end){//begin,end分别为数列的首个数和最后一个数的下标if(begin==end){//递归结束,产生一个全排列for(int i=0;i<=end;i++){//遍历一个全排列for(int j=i+1;j<=end;j++) {if(a[i]>a[j]) {//判断是否有逆序对sum++;}}}}else{for(int i=begin;i<=end;i++){int temp=a[begin];//交换a[begin]和a[i]a[begin]=a[i];a[i]=temp;Solution(begin+1, end);//对余下的数进行全排列temp=a[begin];//还原a[begin]和a[i]a[begin]=a[i];a[i]=temp;}}}}

求全排列的方法参考了这篇文章:(36条消息) JAVA递归实现对1~n全排列【附代码详细执行过程】_m0_51656781的博客-CSDN博客_java全排列递归算法

评测结果截图:

Copyright © 2016-2020 www.365daan.com All Rights Reserved. 365答案网 版权所有 备案号:

部分内容来自互联网,版权归原作者所有,如有冒犯请联系我们,我们将在三个工作时内妥善处理。