今晚做了华为的机试,3道ACM题,最后一道是实现从M个不同字符中任取N个字符的所有组合。

eg: input:ABC 2

output:AB AC BC

第一个输入为字符串,第二个输入为组合的字符个数,当N=0或者N>M时,输出“ERROR”。

思路:可以用递归的算法解决,例如ABC中2个字符的所有组合,先选取第一个的A,那包含A的2个字符的所有组合就是从后面剩余的BC中取1个字符的所有组合,然后选取第二个的B,那包含B的2个字符的所有组合就是从后面剩余的C中取1个字符的组合,即只有C,到选取第三个的C时,后面已经没有字符了,不足以组成2个字符的组合。以此类推,将从M个不同字符中任取N个字符的所有组合递归成从M-1个不同字符任选N-1个字符的所有组合(包含“A”)加上从M-1个个不同字符任选N个字符的所有组合(不包含“A”)。

import java.util.*;
public class Main {
public static void main(String args[]){
Scanner cin = new Scanner(System.in);
String str = cin.next();
int maxCount = cin.nextInt();
char[] chs = str.toCharArray();
if(maxCount==0 ||maxCount>str.length()){
System.out.print("ERROR");
}
combination(chs, 0, 0, maxCount, "");
}
/*
* @param chs 输入的字符数组
* @param index 选取的字符所在的数组索引值
* @param count 已经选取字符的个数
* @param maxCount 输入的要选取字符的个数
* @param result 已经选取的字符组合
*
*/
public static void combination(char[] chs, int index, int count, int maxCount, String result) {
if (count == maxCount) {
System.out.print(result+" ");
return;
}
for (int i = index; i < chs.length; ++i) {
combination(chs, i + 1, count + 1, maxCount, result + chs[i]);
}
}
}

  

最新文章

  1. 报错:MySQL check the manual that corresponds to your MySQL server version for the right syntax
  2. 使用Sqlserver更新锁防止数据脏读
  3. SESSION机制
  4. HDU 3333 &amp; 离线+线段树
  5. mysql跟踪和日志
  6. 使用Retrofit时出现 java.lang.IllegalArgumentException: URL query string &quot;t={type}&amp;p={page}&amp;size={count}&quot; must not have replace block. For dynamic query parameters use @Query.异常原因
  7. C语言结构体的对齐原则
  8. Ajax页面逻辑
  9. stm32按键识别
  10. angular的$http.post()提交数据到Java后台接收不到参数值问题的解决方法
  11. SolrCloud(一)搭建Zookeeper
  12. win10 UWP 九幽数据分析
  13. 封装简单的equery
  14. HttpURLConnection 传输数据和下载图片
  15. web项目通过ajax提交数据太大报错
  16. ES6的Promise
  17. 数字类型转换 --Python3
  18. SpringCloud断路器监控面板——Hystrix Dashboard
  19. [置顶] Linux下发布QT程序
  20. POSTGRESQL 自动登录

热门文章

  1. java.lang.IllegalArgumentException: Wrong state classs
  2. iOS仿支付宝首页效果
  3. 调用iPhone的短信
  4. 用HTML5canvas绘制一个圆环形的进度表示
  5. 使用React的static方法实现同构以及同构的常见问题
  6. 《STL源代码剖析》学习笔记系列之七、八——仿函数和配接器
  7. PHP将多级目录打包成zip文件
  8. excel批量取消隐藏工作表
  9. struts2中在Action中如何获取servlet的api?
  10. Elasticsearch5.3 学习(一):安装、Yii2.0 下载es扩展