全排列---邻里交换法
代码:
public class 第十五题 {
static int count;
static int a[]={1,2,3,4,5,6,7,8,9};
public static void main(String[] args) {
f(a,0);
System.out.println(count/6);
}
public static void f(int a[],int step){
if(step==a.length-1){
if (a[0]+a[1]+a[2]+a[3]==a[3]+a[4]+a[5]+a[6]&&a[0]+a[1]+a[2]+a[3]==a[6]+a[7]+a[8]+a[0]){
count++;
}
return;
}
for (int i=step;i<a.length;i++){
{
int x = a[i];//交换数据
a[i] = a[step];
a[step] = x;
}
f(a,step+1);
{
int x = a[i];//还原数据
a[i] = a[step];
a[step] = x;
}
}
}
}
结果:




















![[大模型]ChatGLM3-6B Code Interpreter](https://img-blog.csdnimg.cn/direct/4536a1ed3c4b456d9f9d86adcbdeda9a.png#pic_center)