0
点赞
收藏
分享

微信扫一扫

Java实现全排列模板-算法题必备


模板如下: 

import java.util.Scanner;
public class Main {
static int arr[]= {1,2,3,4,5,6,7,8,9}; //题目中看是从0开始还是从1开始
static int ans=0;
public static void main(String[] args) {

f(0);
System.out.println(ans);

}

private static void f(int k) {
if(k==9) {
if(check()) {
ans++;
}
}


// 确定第k位
for(int i=k;i<9;i++) {
//交换
int temp=arr[i];
arr[i]=arr[k];
arr[k]=temp;
//递归确定第k+1位
f(k+1);
//回溯
temp=arr[i];
arr[i]=arr[k];
arr[k]=temp;

}
}

private static boolean check() {

if(((arr[1]*(arr[6]*100+arr[7]*10+arr[8])+arr[3]*100+arr[4]*10+arr[5]*arr[2])%(arr[2]*(arr[6]*100+arr[7]*10+arr[8])))==0&&(arr[0]+
((arr[1]*(arr[6]*100+arr[7]*10+arr[8])+arr[3]*100+arr[4]*10+arr[5]*arr[2])/(arr[2]*(arr[6]*100+arr[7]*10+arr[8]))))==10){
System.out.println("a"+arr[0]+"b"+arr[1]+"c"+arr[2]+"d"+arr[3]+"e"+arr[4]+"f"+arr[5]+"g"+arr[6]+"h"+arr[7]+"i"+arr[8]);

return true;
}

return false;


}
}

其中的 check里面的条件可以改变,看题目来, 

上面的 f 基本固定 

 arr看题,从0还是从1开始,   然后就是如果是从0开始的话,f里面的k==10 在开始判断

文中check里面实现的是 这个条件哈

Java实现全排列模板-算法题必备_算法

 

~关注我  带你看更多精品知识

拜了个拜!

 

举报

相关推荐

0 条评论