输出前M个字母中任取N个的所有组合情况

原创 2015年07月10日 16:24:29

[题目描述]
输入两个数M 和 N ,M>=N ,1<=M<=10,按字典序输出组合情况
[输入样例]
4 2
[输出样例]
AB
AC
AD
BC
BD
CD
[思路]
此题和棋盘问题较为相似,都可以用搜索解决,重点在于每一个值范围的确定比较难
[参考程序]

var a,b:array[1..50000]of longint;
    v:array[1..50000]of boolean;
    num,sum,i,j,k,l,m,n,leave:longint;
procedure print;
var i,j:longint;
begin
for i:=1 to num-1 do
  write(chr(b[i]));
writeln(chr(b[num]));
end;
procedure dfs(k:longint);
var i,j:longint;
begin
  if v[k] then
   begin
     v[k]:=false;
     sum:=sum+1;
     b[sum]:=64+k;
     dec(leave);
     if sum=num then
       print
       else
     for i:=k+1 to n-leave+1 do
        dfs(i);
     v[k]:=true;
     sum:=sum-1;
     leave:=leave+1;
    end;
end;
begin
  readln(n,num);
  leave:=num;
  fillchar(a,sizeof(a),0);
  fillchar(b,sizeof(b),40);
  fillchar(v,sizeof(v),true);
  sum:=0;
  for i:= 1 to n-leave+1 do
    dfs(i);
end.

n个元素中取m个元素的组合、排列问题

如A{1,2,3}则有这些组合:a) 1,2,3; b) 12,13,23; c) 123; 很显然这是一个组合问题,对于组合最常规的算法无非就是递归或回溯。 我们可以把问题分解如下: 1)求数...
  • hxz_qlh
  • hxz_qlh
  • 2013年10月18日 19:09
  • 6999

Java 实现m个数全排列组合以及从M中选取N个数(有序)

(1)全排列组合的递归规律: 集合s的全排列组合 all(s)=n+all(s-n);其中n为已经取出的集合 以集合 s={1,2,3}为例,则s的全排列组合为all(s)={1}+all({2,...
  • leixingbang1989
  • leixingbang1989
  • 2015年08月18日 22:22
  • 8385

组合(从长度为n的字符串中取m个字符)---java两种实现方法

对于这类组合问题,虽然感觉很简单,但是用java代码实现起来却不是那么容易的。 这其中最容易用到的应该是递归的思想了,这种方法也比较容易理解: 方法一: 递归实现代码:/** * 可能...
  • u014039577
  • u014039577
  • 2015年12月18日 17:41
  • 1253

机试算法讲解: 第6题 给n个整数,按从大到小的顺序,输出前m大的整数

/* 问题:给n个整数,按从大到小的顺序,输出前m大的整数 0
  • qingyuanluofeng
  • qingyuanluofeng
  • 2015年07月30日 23:36
  • 1455

排列组合 从n个自然数中取出r个数的组合

这种题目一般有两种方法,比较直接的方法就是使用循坏,但是对于这种方法只有r小于等于4时才是可行的,这个时候复杂度是(O(n^r)),可知,这种方法的时间复杂度很高,而且这种循环机制严重依赖r,通过r来...
  • a15994269853
  • a15994269853
  • 2014年03月12日 20:19
  • 5243

N个数取m个数的全排列非递归

全排序的非递归实现
  • lin200753
  • lin200753
  • 2014年05月31日 15:25
  • 1096

快速排序问题(输出前m大的数)

今天做的第一道题就卡死我了,总是超时,总是出错! 给你n个整数,请按从大到小的顺序输出其中前m大的数。 Input 每组测试数据有两行,第一行有两个数n,m(0 Output ...
  • zhangv123
  • zhangv123
  • 2015年07月23日 09:49
  • 1439

【算法-分治】从数组中取出n个元素的所有组合(需要深入理解递归)

本文为转载,原文章出处http://www.cnblogs.com/shuaiwhu/archive/2012/04/27/2473788.html 如数组为{1, 2, 3, 4, 5, 6},那...
  • wodeai1625
  • wodeai1625
  • 2015年04月27日 16:11
  • 793

从1....n中随机输出m个不重复的数

csdn上看到的一帖子 http://topic.csdn.net/u/20120825/20/6171393d-15ea-4a50-ba30-78d1d24974e3.html,是关于一种不重复随机...
  • u010590166
  • u010590166
  • 2013年12月20日 15:04
  • 1209

使用回溯法求所有从n个元素中取m个元素的组合

一个使用回溯法求n个元素中去m个元素的c语言代码,包括2个版本,递归版和迭代版,前者代码简洁,后者性能更好些。...
  • liangbch
  • liangbch
  • 2013年09月13日 13:55
  • 3476
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:输出前M个字母中任取N个的所有组合情况
举报原因:
原因补充:

(最多只允许输入30个字)