golang 组合算法

前端之家收集整理的这篇文章主要介绍了golang 组合算法前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
<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
}
原文链接:https://www.f2er.com/go/190769.html

猜你在找的Go相关文章