华为机试ACM(字符组合问题)
今晚做了华为的机试,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]);
}
}
}
华为机试ACM(字符组合问题)的更多相关文章
- 2014华为机试西安地区B组试题
2014华为机试西安地区B组试题 题目一.亮着点灯的盏数 一条长廊里依次装有n(1≤n≤65535)盏电灯,从头到尾编号1.2.3.-n-1.n.每盏电灯由一个拉线开关控制.開始,电灯所有关着. 有n ...
- 华为机试001:字符串最后一个单词的长度(华为OJ001)
华为机试 字符串最后一个单词的长度 计算字符串最后一个单词的长度,单词以空格隔开. 提交网址: http://www.nowcoder.com/practice/8c949ea5f36f422594b ...
- 2014华为机试西安地区A组试题
2014华为机试西安地区A组试题 题目一.分苹果 M个同样苹果放到N个同样篮子里有多少种放法,同意有篮子不放. 1<=M<=10.1<=N<=10 比如5个苹果三个篮子,3,1 ...
- 输入一个字符串,去掉重复的字符,并按ASCII值排序-华为机试
import java.util.Scanner; //输入字符串,去掉重复的字符,并按ASSIC码值排序 public class quChong { public static void main ...
- 华为机试正式版(西安c/c++/java),今天下午去机试的题目,新奇出炉了!
下面题目都是回顾的.题目都非常easy, 大家有些基础就能够參加!(语言能够是c/c++.也能够是java的) 题目一(60分): 字符串操作. 将小写转换成大写, 将大写转化为小写, 数字的不做转换 ...
- 华为机试_字符串识别_Vector的使用;
第一题:拼音转数字输入是一个只包含拼音的字符串,请输出对应的数字序列.转换关系如下:描述: 拼音 yi er san si wu liu qi ba jiu ...
- 华为机试 之 joseph环
一:首先科普一下约瑟夫问题的数学方法 (1) 不管是用list实现还是用vector实现都有一个共同点:要模拟整个游戏过程,不仅程序写起来比較烦,并且时间复杂度高达O(nm),当n,m很大(比如上百 ...
- 【华为机试】找最高分(通过此题熟悉牛客网Node输入输出)
来源:牛客网 老师想知道从某某同学当中,分数最高的是多少,现在请你编程模拟老师的询问.当然,老师有时候需要更新某位同学的成绩. 输入描述: 输入包括多组测试数据.每组输入第一行是两个正整数N和M(0 ...
- (华为机试大备战)java。多了解了解最常用的那个类库的方法对处理字符串的方法
1.常考字符串处理:对处理字符串的方法. (a)统计字符串中特定字符的个数. 2.郭靖考了一道二维数组?? 3.多了解了解最常用的那个类库的方法.
随机推荐
- iOS学习(项目中遇到的错误1)
1.[AppModel copyWithZone:]: unrecognized selector sent to instance 0x7ffda9f4cf70 *** Terminating ap ...
- Effective JAVA 创建和销毁对象 遇到多参构造器考虑使用构建器
//构建器抽象类,为不同类的实现提供 public interface Builder<T> { public T build(); } /** * @描述: 营养表 */ public ...
- webuploader插件使用中的一点东西
本人绝对菜鸟,高手勿喷 菜鸟开发中的解决方法,高手勿喷 1.针对同一应用中不同的类别,存放不同的路径 在页面中添加,hidden属性的标记,如: type="hidden" ...
- 篇章一:[AngularJS] 使用AngularAMD動態載入Controller
前言 使用AngularJS來開發Single Page Application(SPA)的時候,可以選用AngularUI Router來提供頁面內容切換的功能.但是在UI Router的使用情景裡 ...
- mysql中百万级别分页查询性能优化
前提条件: 1.表的唯一索引 2.百万级数据 SQL语句: select c.* FROM ( SELECT a.logid FROM tableA a where 1 = 1 <#if pho ...
- VSCode调试.net core 2.0 输出窗口乱码
Q:输出窗口乱码 A:修改.vscode文件夹下,tasks.json文件,具体内容见图
- asp.net web.config配置节说明
web.config 文件查找规则: (1)如果在当前页面所在目录下存在web.config文件,查看是否存在所要查找的结点名称,如果存在返回结果并停止查找. (2)如果当前页面所 ...
- c语言中external,static关键字用法
static用法: 在C中,static主要定义全局静态变量.定义局部静态变量.定义静态函数. 1.定义全局静态变量:在全局变量前面加上关键字static,该全局变量变成了全局静态变量.全局静态变量有 ...
- Google Code Jam 2014 资格赛:Problem B. Cookie Clicker Alpha
Introduction Cookie Clicker is a Javascript game by Orteil, where players click on a picture of a gi ...
- php使用imagick模块实现图片缩放、裁剪、压缩示例
PHP 使用Imagick模块 缩放,裁剪,压缩图片 包括gif图片 缩放 裁剪 复制代码代码如下: /** * 图片裁剪 * 裁剪规则: * 1. 高度为空或为零 按宽度缩放 高度自适 ...