加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

golang 组合算法

发布时间:2020-12-16 18:49:37 所属栏目:大数据 来源:网络整理
导读:span style="color:#009900;"//递归输出组合内容/span func combineloop(arr [] string , r [] string , i int , n int , output chan - [] string ) { if n = 0 { return } rlen := len (r) - n alen := len (arr) for j := i; j alen; j++ { r[rlen] = arr
<span style="color:#009900;">//递归输出组合内容</span>
func combineloop(arr []string, r []string, i int, n int, output chan<- []string) {
if n <= 0 {
return
}
rlen := len(r) - n
alen := len(arr)
for j := i; j < alen; j++ {
r[rlen] = arr[j]
if n == 1 {
or := make([]string, len(r))
copy(or, r)
output <- or
} else {
combineloop(arr, r, j+1, n-1, output)
}
}
}
//对数组进行组合
func GetCombineMatch(arr []string, n int) []string {
var matchArr []string
output := make(chan []string)
r := make([]string, n)
go func() {
combineloop(arr, 0, n, output)
close(output)
}()
for arr := range output {
var str string
for i, each := range arr {
if i == 0 {
str = each
} else {
str = fmt.Sprintf("%v,%v", str, each)
}
}
matchArr = append(matchArr, str)
fmt.Println(arr)
}
return matchArr
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读