(Java实现) 洛谷 P1691 有重复元素的排列问题
JAVA 实现 元素 重复 洛谷 排列 问题
2023-09-14 08:58:18 时间
题目描述
设R={r1,r2,……,rn}是要进行排列的n个元素。其中元素r1,r2,……,rn可能相同。使设计一个算法,列出R的所有不同排列。
给定n以及待排列的n个元素。计算出这n个元素的所有不同排列。
输入输出格式
输入格式:
第1行:元素个数n(1<=n<500)
第2行:一行字符串,待排列的n个元素
输出格式:
计算出的n个元素的所有不同排列,最后一行是排列总数。
输入输出样例
输入样例#1:
4
aacc
输出样例#1:
aacc
acac
acca
caac
caca
ccaa
6
说明
输出按字典顺序排
import java.util.Scanner;
public class youchongfuyuansudepailiewenti {
public static int[] f;
public static int[] a;
public static char[] str;
public static int count=0,n=0;
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
n = sc.nextInt();
String s = sc.next();
sc.close();
f = new int[27];
a = new int[501];
str = s.toCharArray();
for (int i = 0; i < n; i++) {
f[str[i] - 96]++;
}
dfs(1);
System.out.println(count);
}
public static void dfs(int step){
if (step==n+1) {
count++;
for (int i = 1; i <= n; i++) {
System.out.print((char)(a[i]+96));
}
System.out.println();
return;
}
for (int i = 1; i <=26; i++) {
if(f[i]>0){
a[step]=i;
f[i]--;
dfs(step+1);
f[i]++;
}
}
}
}
相关文章
- java分层打印二叉树_基于Java的二叉树层序遍历打印实现
- java反转数组_Java实现数组反转翻转的方法实例
- Java实现单例模式的9种方法
- MySQL字段类型如何转为java_Java JDBC中,MySQL字段类型到JAVA类型的转换
- java笛卡尔积算法_Java 笛卡尔积算法的简单实现
- 用java实现笛卡尔积_Java实现笛卡尔积
- Java 零拷贝_java高性能编程
- 关于冒泡排序的Java代码实现详解编程语言
- Java连接MySQL:实现数据互通(java如何连接mysql)
- 学习如何使用Linux环境运行Java程序(linux下的java)
- Linux配置多版本JDK实现多版本Java切换(linux多个jdk)
- 【Java】使用BlockingQueue实现生产者-消费者模式详解编程语言
- 系统命令Java实现Linux系统命令调用的探究(java调用linux)
- 数据库实现Java程序与Oracle数据库的连接(java链接oracle)
- Java实现Redis事务管理(redis事务java)
- Java连接SQL Server:实现数据库完美对接(java链接sqlserver)
- 时间配置Redis中Java实现过期时间设置(redisjava过期)
- 机制让Redis Java实现自动过期机制(redisjava过期)
- 性能Java操作Redis实现高性能过期缓存(redisjava过期)
- 处理使用Java实现Redis数据过期处理(redisjava过期)
- 使用Java远程控制Linux 实现简单、高效的服务器管理(java控制linux)
- Java实现Redis数据存储(java的redis)
- Java编程实现MySQL表备份(java备份mysql表)
- 程序Oracle调用Java程序的实现方法(oracle调用java)
- 实现高并发:Java利用Redis秒杀成功(java秒杀redis)
- Java与MySQL的无缝衔接:实现高效数据操作(java中使用mysql)
- 市场Oracle公司助力Java攻克市场(oracle公司java)
- Java锁表与Oracle数据库协调实现数据安全(java锁表oracle)
- MySQL和Java结合的必备工具MySQL下载Java(mysql下载java)
- 利用Redis锁实现Java程序并发控制(redis锁java实现)
- 删除JAVA集合中元素的实现代码