问题内容 我想编写一个函数,将给定的处理程序应用于所有输入排列,而不返回整个排列。 代码 (在 Go 中) 查找排列: // apply given handler on eac
我想编写一个函数,将给定的处理程序应用于所有输入排列,而不返回整个排列。
(在 Go
中)
查找排列:
// apply given handler on each combination, and return count only,
func findallpermutationapplyhandler[t any](ts []t, handler func([]t)) int {
n := 0
comblist := [][]t{{}} // when empty input, has 1 empty combination, not 0 combination,
for i := len(ts) - 1; i >= 0; i-- {
islastlevel := false
if i == 0 {
islastlevel = true
}
// prefix := ts[0:i]
mover := ts[i]
// fmt.printf("\nprefix = %v, mover = %v:\n", prefix, mover)
var comblist2 [][]t // combinations with an extra item added,
for _, comb := range comblist {
for j := 0; j <= len(comb); j++ { // insert mover at index j of comb,
comb2 := append(append(append([]t{}, comb[0:j]...), mover), comb[j:]...) // new_empty + left + mover + right
if islastlevel {
n++
handler(comb2)
} else {
comblist2 = append(comblist2, comb2)
}
}
}
comblist = comblist2
}
return n
}
测试用例(简单):
func TestFindAllPermutationApplyHandler(t *testing.T) {
assert.Equal(t, FindAllPermutationApplyHandler([]int{1, 2, 3}, func(comb []int) {
fmt.Printf("\t%v\n", comb)
}), 6)
}
findallpermutationapplyhandler()
可以查找排列,并将给定的处理程序应用于每个组合。n-1
级别(同时最近的 2 个级别)。
(又名,使空间复杂度为 o(1)
或 o(n)
,甚至我猜 o(n^2)
更好)。。
i
是基于级别 i-1
的,对吧?听起来您正在寻找Pandita 算法
这是一种按字典顺序迭代生成数组所有排列的简单方法。
但是,它要求您可以对数组的元素进行排序。如果不能(因为它们是泛型类型),那么您可以创建所有数组索引的辅助数组,并生成其排列。
以上就是在排列上应用处理程序,而不需要级别缓存?的详细内容,更多请关注编程网其它相关文章!
--结束END--
本文标题: 在排列上应用处理程序,而不需要级别缓存?
本文链接: https://www.lsjlt.com/news/561382.html(转载时请注明来源链接)
有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341
下载Word文档到电脑,方便收藏和打印~
2024-05-24
2024-05-24
2024-05-24
2024-05-24
2024-05-24
2024-05-24
2024-05-24
2024-05-24
2024-05-24
2024-05-24
回答
回答
回答
回答
回答
回答
回答
回答
回答
回答
一口价域名售卖能注册吗?域名是网站的标识,简短且易于记忆,为在线用户提供了访问我们网站的简单路径。一口价是在域名交易中一种常见的模式,而这种通常是针对已经被注册的域名转售给其他人的一种方式。
一口价域名买卖的过程通常包括以下几个步骤:
1.寻找:买家需要在域名售卖平台上找到心仪的一口价域名。平台通常会为每个可售的域名提供详细的描述,包括价格、年龄、流
443px" 443px) https://www.west.cn/docs/wp-content/uploads/2024/04/SEO图片294.jpg https://www.west.cn/docs/wp-content/uploads/2024/04/SEO图片294-768x413.jpg 域名售卖 域名一口价售卖 游戏音频 赋值/切片 框架优势 评估指南 项目规模
0