华为机试ACM(字符组合问题)
2024-09-03 11:30:38
今晚做了华为的机试,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]);
}
}
}
最新文章
- 报错:MySQL check the manual that corresponds to your MySQL server version for the right syntax
- 使用Sqlserver更新锁防止数据脏读
- SESSION机制
- HDU 3333 &; 离线+线段树
- mysql跟踪和日志
- 使用Retrofit时出现 java.lang.IllegalArgumentException: URL query string ";t={type}&;p={page}&;size={count}"; must not have replace block. For dynamic query parameters use @Query.异常原因
- C语言结构体的对齐原则
- Ajax页面逻辑
- stm32按键识别
- angular的$http.post()提交数据到Java后台接收不到参数值问题的解决方法
- SolrCloud(一)搭建Zookeeper
- win10 UWP 九幽数据分析
- 封装简单的equery
- HttpURLConnection 传输数据和下载图片
- web项目通过ajax提交数据太大报错
- ES6的Promise
- 数字类型转换 --Python3
- SpringCloud断路器监控面板——Hystrix Dashboard
- [置顶] Linux下发布QT程序
- POSTGRESQL 自动登录
热门文章
- java.lang.IllegalArgumentException: Wrong state classs
- iOS仿支付宝首页效果
- 调用iPhone的短信
- 用HTML5canvas绘制一个圆环形的进度表示
- 使用React的static方法实现同构以及同构的常见问题
- 《STL源代码剖析》学习笔记系列之七、八——仿函数和配接器
- PHP将多级目录打包成zip文件
- excel批量取消隐藏工作表
- struts2中在Action中如何获取servlet的api?
- Elasticsearch5.3 学习(一):安装、Yii2.0 下载es扩展