zoukankan      html  css  js  c++  java
  • golang 实现笛卡尔积

    package main
    
    import (
    	"fmt"
    )
    
    var a = map[string][]string{
    	"1" : []string{"a","b","c"},
    	"2": []string{"d", "f", "g"},
    	"3":[]string{"k","v","s"},
    }
    
    func main() {
    	fmt.Println(Print("123"))
    }
    
    func Print(str string)(res []string){
    	baseSlices := [][]string{}
    	for i := 0; i< len(str); i++{
    		baseSlices = append(baseSlices, a[string(str[i])])
    	}
    	res = baseSlices[0]
    
    	for _,v := range baseSlices[1:]{
    		res = MakeData(res, v)
    	}
    
    	return
    }
    
    func MakeData(base []string, makeData []string) (str []string) {
    	for _,v := range base{
    		for _,makeDataValue :=  range makeData {
    			str = append(str, v+makeDataValue)
    		}
    	}
    	return
    }
    

     这道题思考了很久 一开始 思路就错了  现在分享一下思路

           a               b                 c

      d   f   g       d   f   g      d   f   g

     k v s   k v s  k v s             k v s   k v s  k v s              k v s   k v s  k v s

    第一步 a  b  c  三个

    第二步  ad  af   ag    bd  bf bg   cd cf cg

    第三步  adk adv ads afk afv afs agk agv ags bdk bdv bds bfk bfv bfs bgk bgv bgs cdk cdv cds cfk cfv cfs cgk cgv cgs

    其实不难理解

    1.第一次先拿出第一组数据 和第二组数据组合组合成新的数组 也就是组合成第二步

    2.组合成的第二步数据 继续和下一组数据继续组合

  • 相关阅读:
    Linux下安装Readis
    windows下的Redis安装:
    解决@ResponseBody不能和 <mvc:annotation-driven>同时使用的问题
    dom4j操作XML
    Ajax优缺点
    来一打前端博客压压惊
    tinypng upload一键压缩上传工具,告别人肉
    手把手教你撸一个简易的 webpack
    前端路由简介以及vue-router实现原理
    JS 数据类型、赋值、深拷贝和浅拷贝
  • 原文地址:https://www.cnblogs.com/zhaoxueru/p/15343026.html
Copyright © 2011-2022 走看看