递归实现1-n的全排列(JAVA语言)
2024-09-05 20:07:18
思路:
For example:
123的全排列=
1在最前面 23的全排列
+
2在最前面 13的全排列
+
3最前面 12的全排列
所以只需交换和最前面元素的位置,生成剩余元素的全排列即可。
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner in=new Scanner(System.in);
int n=in.nextInt();
int a[]=new int[n];
for(int i=1;i<=n;i++) {
a[i-1]=i;
}
dfs(a,0,n-1);
}
private static void dfs(int a[],int s,int e) {
if(s==e) {
for(int i=0;i<a.length;i++)
System.out.print(a[i]+" ");
System.out.println();
}
else
for(int i=s;i<=e;i++) {
swap(a,s,i);
dfs(a,s+1,e);
swap(a,s,i);
}
}
private static void swap(int[] a, int s2, int i) {
// TODO Auto-generated method stub
int t=a[s2];
a[s2]=a[i];
a[i]=t;
}
}
最新文章
- 通俗易懂的来讲讲DOM
- 从头开始搭建一个dubbo+zookeeper平台
- ios 上架需要注意的问题
- ajax 技术和原理分析
- (4)用opengl读入off文件生成可执行文件把模型显示出来(未完待续)
- Generate the Jobs script from msdb Database
- 清空session的方法
- 服务器部署_nginx报错: [warn] conflicting server name ";www.test.com"; on 0.0.0.0:80, ignored
- 基于物联网操作系统HelloX的智慧家庭体系架构
- Jenkins 四: 启动关闭以及重启jenkins
- GIT分支操作常用命令
- 日历上添加活动通知(Asp.net)
- Windows系统如何使用sqlmap
- lintcode.22 平面列表
- EditTable可编辑的表格
- java ---日期的格式化
- 【OpenFOAM案例】01 elbow
- Leetcode 1021. 最佳观光组合
- node.js的
- [转]最完美解决Nginx部署ThinkPHP项目的办法