Python 算法练习,编程练习题实例十

论坛 期权论坛 期权     
Python编程自学教程   2019-7-20 09:56   1761   0


题目:使用python3从N个数组中,进行排列组合,打印排列后的所有列表。要求:尝试使用笛卡尔算法
    1. #!/usr/bin/env python
    复制代码
    1. #coding:utf-8
    复制代码
    1. class Cartesian():
    复制代码
    1.     # 初始化
    复制代码
    1.     def __init__(self, datagroup):
    复制代码
    1.         self.datagroup = datagroup
    复制代码
    1.         # 二维数组从后往前下标值
    复制代码
    1.         self.counterIndex = len(datagroup)-1
    复制代码
    1.         # 每次输出数组数值的下标值数组(初始化为0)
    复制代码
    1.         self.counter = [0 for i in range(0, len(self.datagroup))]
    复制代码

    1.     # 计算数组长度
    复制代码
    1.     def countlength(self):
    复制代码
    1.         i = 0
    复制代码
    1.         length = 1
    复制代码
    1.         while(i = len(self.datagroup[self.counterIndex]):
    复制代码

    1.             # 重置末位下标
    复制代码
    1.             self.counter[self.counterIndex] = 0
    复制代码
    1.             # 标记counter中前一位
    复制代码
    1.             self.counterIndex -= 1
    复制代码
    1.             # 当标记位大于等于0,递归调用
    复制代码
    1.             if self.counterIndex >= 0:
    复制代码
    1.                 self.handle()
    复制代码
    1.             # 重置标记
    复制代码
    1.             self.counterIndex = len(self.datagroup)-1
    复制代码

    1.     # 排列组合输出
    复制代码
    1.     def assemble(self):
    复制代码
    1.         length = self.countlength()
    复制代码
    1.         i = 0
    复制代码
  • [code]        while(i
分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:10
帖子:2
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP