如何重复找到所有选项?

时间:2017-12-20 22:06:13

标签: c

我正在寻找一个我无法理解的问题。

我需要所有(现在是正确的数学术语)排列吗?元组?组合?重复由4个给定的元素组成。

我有元素 A,B,C,D 。其中有四个,金额是固定的。对于给定的 n ,我需要能够从这四个元素中获得所有可能的选项。例如:

n = 1 ; 可能的选择: :一种 乙 C d

n = 2 ; 可能的选择: 的 AA AB AC 广告 BA BB 公元前 BD ... DC DD

n = 4 ;可能的选择: AAAA AAAB AAAC ... DDDC DDDD

有人能够在某处指导我吗?有一些以下条件,但我应该能够在旅途中过滤它们。当然我试着寻找答案,但似乎没有任何话题是我试图解决的问题。

非常感谢任何至少试图让我朝正确方向捏捏的人。

1 个答案:

答案 0 :(得分:0)

你不能使用嵌套循环来完成它,因为你需要n for循环并且n最初没有确定(并且使用n个嵌套for循环是荒谬的)。解决问题的一种方法是使用递归函数。递归函数应该返回由4个字母组成的基本列表,对于n = 1,对于n> 1,它应该用参数(n-1)调用自身,然后将四个字母中的每一个附加到递归调用的每个返回的字符串中。我建议你在阅读下面的伪代码之前尝试自己实现它!

list func(int n){
  if ( n == 1 ) {return list('A', 'B', 'C', 'D'); }
  else {
    result = list();
    permutations = func(n-1);
    for (each item in permutations) {
      result.append(item+'A');
      result.append(item+'B');
      result.append(item+'C');
      result.append(item+'D');
      return result;
    }
  }
}