全排列(dfs-有重复数字)
2024-09-06 15:15:00
给出一个字符串S(可能有重复的字符),按照字典序从小到大,输出S包括的字符组成的所有排列。例如:S = "1312",
输出为:
1123
1132
1213
1231
1312
1321
2113
2131
2311
3112
3121
3211
Input 输入一个字符串S(S的长度 <= 9,且只包括0 - 9的阿拉伯数字)
Output 输出S所包含的字符组成的所有排列Sample Input
1312
Sample Output
1123
1132
1213
1231
1312
1321
2113
2131
2311
3112
3121
3211 注意是输出字符排列,所以第一位可以为0;java会超时,卡输入,用快速输入
代码:
import java.util.Arrays;
import java.util.Scanner;
static int a[]=new int[10];
static int b[]=new int [10];
static boolean vis[]=new boolean[10];
static void dfs(int step,int n){
if(step==n){
// if(b[0]==0) return ;
for(int i=0;i<n;i++) out.print(b[i]);
out.println();
}
for(int i=0;i<n;i++){
if(!vis[i]){
vis[i]=true;
b[step]=a[i];
dfs(step+1,n);
vis[i]=false;
while(a[i]==a[i+1]) i++;
}
}
}
public static void main(String[] args) {
String s=scan.next();
for(int i=0;i<s.length();i++) a[i]=s.charAt(i)-'0';
Arrays.sort(a,0,s.length());
dfs(0,s.length());
out.flush();
}
}
最新文章
- Java final自变量
- Linux学习笔记(1)Linux虚拟机安装过程中的知识点及常用管理工具
- 九、UINavigationController切换视图 实例
- Javascript设计模式之我见:迭代器模式
- opencv初体验
- JVM - 内存溢出问题排查相关命令jcmd jmap
- js 记忆函数
- POJ1789 Truck History 【最小生成树Prim】
- 采用Duplicate target database在线恢复秩序oracle datagard图书馆设备
- delphi 快捷键大全
- JS-DOM操作应用高级(二)
- 三星note4,微信公众号开发,页面闪退
- Linux安装简介
- ajaxfileupload原理及用法,主要用于即想用ajax序列化传递参数,又必须上传文件
- python趣味——与MS系列编译器一样强大的Unicode变量名支持
- zabbix 主动模式和被动模式说名
- Behavior开发时找不到Expression.Interactions的问题解决
- Struts2 架构图
- Excel文件的读写
- Unity资源Assetbundle