Swift多数组组合算法

需求背景:
在购物的过程中,挑选商品时,通常都要选择某个商品的规格,例如买衣服,需要从颜色、尺寸当中分别选中对应的规格才能确定买哪件衣服,这就需要用到多数组组合算法。

    var combinationArray = [[String]]()

    override func viewDidLoad() {
        super.viewDidLoad()
        let array1 = ["黑色", "白色", "红色"]
        let array2 = ["S", "M", "L", "XL", "XXL"]
        let array3 = ["A", "B", "C"]
        getCombination(kid: 0, inputArray: [array1, array2, array3], addArray: [String]())
        print(combinationArray)
    }
    
    func getCombination(kid: Int,
                        inputArray: [[String]],
                        addArray: [String]) {
        if kid < inputArray.count {
            let dataArr = inputArray[kid]
            if dataArr.count == 0 {
                return
            }
            for i in 0 ..< dataArr.count {
                var newArr = addArray
                newArr.append(dataArr[i])
                getCombination(kid: kid + 1, inputArray: inputArray, addArray: newArr)
            }
        } else {
            var dataArr = [String]()
            for i in 0 ..< addArray.count {
                dataArr.append(addArray[i])
            }
            combinationArray.append(dataArr)
        }
    }

打印结果:
 

[["黑色", "S", "A"], ["黑色", "S", "B"], ["黑色", "S", "C"], ["黑色", "M", "A"], ["黑色", "M", "B"], ["黑色", "M", "C"], ["黑色", "L", "A"], ["黑色", "L", "B"], ["黑色", "L", "C"], ["黑色", "XL", "A"], ["黑色", "XL", "B"], ["黑色", "XL", "C"], ["黑色", "XXL", "A"], ["黑色", "XXL", "B"], ["黑色", "XXL", "C"], ["白色", "S", "A"], ["白色", "S", "B"], ["白色", "S", "C"], ["白色", "M", "A"], ["白色", "M", "B"], ["白色", "M", "C"], ["白色", "L", "A"], ["白色", "L", "B"], ["白色", "L", "C"], ["白色", "XL", "A"], ["白色", "XL", "B"], ["白色", "XL", "C"], ["白色", "XXL", "A"], ["白色", "XXL", "B"], ["白色", "XXL", "C"], ["红色", "S", "A"], ["红色", "S", "B"], ["红色", "S", "C"], ["红色", "M", "A"], ["红色", "M", "B"], ["红色", "M", "C"], ["红色", "L", "A"], ["红色", "L", "B"], ["红色", "L", "C"], ["红色", "XL", "A"], ["红色", "XL", "B"], ["红色", "XL", "C"], ["红色", "XXL", "A"], ["红色", "XXL", "B"], ["红色", "XXL", "C"]]

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值