题目描述

设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]++;
}
}
} }

最新文章

  1. POJ 2251 Dungeon Master(3D迷宫 bfs)
  2. 转: Delphi的OverRide、OverLoad和Virtual方法
  3. JAVA源码走读(二)二分查找与Arrays类
  4. Linux系统中配置jdk
  5. 快速入门系列--NOSQL--07MongoDB
  6. SqlServerException:拒绝对表对象的select,insert权限解决(新建账号导致的问题)
  7. iOS开发笔记-swift实现iOS数据持久化之归档NSKeyedArchiver
  8. IIS不定期Crash和Oracle“未处理的内部错误(-2)”的问题分析
  9. BCP command usage in SQL Server
  10. 解决从linux本地文件系统上传文件到HDFS时的权限问题
  11. SSO之CAS备忘
  12. Xcode简易基础篇,以新手角度去操作
  13. 一道C语言面试题:写一个宏,将16位的整数转为Big Endian
  14. mysql--学生课程成绩表
  15. 调整分区大小(ext2\ext3\ext4)
  16. [HNOI 2014]江南乐
  17. Mac破解免费office软件
  18. python框架之Django(8)-CBV中添加装饰器
  19. 论文阅读笔记:【Transforming Auto-encoders】
  20. googletest基本测试宏

热门文章

  1. Wpf 正常关闭程序 Gc 来不及回收?
  2. 新创建的项目AndroidManifast报App is not indexable by Google Search;
  3. 局域网ip地址扫描_v1版本
  4. Spring Boot Admin实现服务健康预警
  5. SpringBoot基础实战系列(三)springboot单文件与多文件上传
  6. STM32编程:是时候深入理解栈了
  7. 前端面试题-TCP和UDP的区别
  8. 8、HTTPS证书Actions无法导出问题
  9. 【雕爷学编程】Arduino动手做(58)---SR04超声波传感器
  10. Spark_Streaming整合Kafka