📄 fac2_4_1.java
字号:
//本程序取自王晓东编著“算法分析与设计”第 21 页,例2-4
//排列问题的递归解法
import java.io.*;
class MyMath{
public MyMath(){
}
static void swap(double[] a,int i,int j)
{
double temp;
temp=a[i];
a[i]=a[j];
a[j]=temp;}
}
public class Fac2_4_1{
static int j=0;
public static void perm(double[] list ,int k,int m)
{ //产生lisi[k:m]的所有排列
if(k==m)
{//单元素序列
j++;
for(int i=0;i<=m;i++)
System.out.print(list[i]+" ");
System.out.println(" 排列序号"+j);
}
else
// 多元素序列,递归产生排序
for(int i=k;i<=m;i++) //把最小的元素放在最前面
{
MyMath.swap(list,k,i);
perm(list,k+1,m);
MyMath.swap(list,k,i);
}
}
public static void main(String args[])throws IOException
{
InputStreamReader iin=new InputStreamReader(System.in);
BufferedReader bin=new BufferedReader(iin);
int n;
System.out.println("输入予排序元素个数 n ");
n=Integer.parseInt(bin.readLine());
double a[]=new double[n];
for(int i=0;i<n;i++)
a[i]=Double.parseDouble(bin.readLine());
System.out.println("输出予排序元素");
for(int i=0;i<n;i++)
System.out.print(a[i]+" ");
System.out.println();
int x=a.length-1;
int y=0;
System.out.println("输出排序结果");
perm(a,y,x);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -