怎样遍历生成所有的可能组合?

有5道不定项选择题目,每题有A,B,C,D四个选项,至少有一个是对的,怎样生成这5道题目所有的回答可能?
(A,B,C,D,A)、(A、B、C、D、B).......(AB,ABCD,AB,B,C)

阅读 7.5k
3 个回答
import itertools

a = ('a','b','c','d')
ans = []

for i in range(1, len(a)):
    ans += list(itertools.combinations(a,i))

你参考一下这个

里面我也有回答,手机不方便,这里就不重复复制了。

上班偷偷写的, 用了两次回溯,第一个get_str利用回溯找到所有单个问题的答案可能的选项,第二个回溯get_answer直接找出所有答案。写的不好多担待。

li = ['a', 'b', 'c', 'd']


def get_str(str_list, length, index):
    ans = []
    if len(str_list) == length:
        return ''.join(str_list)

    for i in range(index, 4):
        str_list.append(li[i])
        temp = get_str(str_list, length, i+1)
        str_list.pop(-1)
        if isinstance(temp, str):
            ans.append(temp)
        else:
            ans.extend(temp)
    return ans


def get_answer(all_str, ans_list, length):
    # ans = []
    if len(ans_list) == length:
        print(ans_list)
        return

    for str_ in all_str:
        ans_list.append(str_)
        get_answer(all_str, ans_list, length)
        ans_list.pop(-1)


all_str = []
for i in range(1, 5):
    all_str.extend(get_str([], i, 0))


get_answer(all_str, [], 5)

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题