排列.java

来自「数字的全排列问题」· Java 代码 · 共 59 行

JAVA
59
字号
package 算法;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.Reader;


public class 排列 {

	static int num,cont=0;
	public static void main(String [] args) throws IOException{
		int i;
		int a[] = new int[30];
		System.out.println("请输入要进行全排列的数N(N<=9):");
		//读取用户输入的信息
		Reader reader = new InputStreamReader(System.in);

		BufferedReader br = new BufferedReader(reader);

		String str = br.readLine();
		//字符转化为数字
		num = Integer.parseInt(str);

		for(i=1;i<=num;i++)
			a[i]=i;
		perm(a,1);
		//打印总的排列个数
		System.out.println("总共有"+cont+"种方法");

	}

	static int perm(int b[], int i){
		int k,j,temp;
		//如果i=用户输入的数
		if(i==num){
			//直接按顺序打印数组的值
			for(k=1;k<=num;k++)
				System.out.print(b[k]+"   ");
			System.out.println();
			cont++;
		}else
			for(j=i;j<=num;j++){
				//将b[i]与b[j]交换
				temp=b[i];
				b[i]=b[j];
				b[j]=temp;
				//进行下一次排列
				perm(b,i+1);
//				再次将b[i]与b[j]交换
				temp=b[i];
				b[i]=b[j];
				b[j]=temp;
			}
		return(0);
	}
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?