Go の順列: 詳細ガイド
この記事では、Go の要素のリストの可能なすべての順列を生成するさまざまな方法について説明します。
一般的な方法の 1 つは、前の順列から各順列を生成するヒープのアルゴリズムです。要素のペアを交換することによって。次の Go 関数は、このアルゴリズムを実装しています。
func permutations(arr []int)[][]int{ var helper func([]int, int) res := [][]int{} helper = func(arr []int, n int){ if n == 1{ tmp := make([]int, len(arr)) copy(tmp, arr) res = append(res, tmp) } else { for i := 0; i < n; i++{ helper(arr, n - 1) if n % 2 == 1{ tmp := arr[i] arr[i] = arr[n - 1] arr[n - 1] = tmp } else { tmp := arr[0] arr[0] = arr[n - 1] arr[n - 1] = tmp } } } } helper(arr, len(arr)) return res }
この関数を使用するには、整数のスライスを渡すだけで、入力リストのすべての順列のスライスが返されます。例:
arr := []int{1, 2, 3} fmt.Println(permutations(arr))
順列を生成する別の方法は、階乗数体系を使用することです。この方法により、n 番目の辞書順列を迅速に生成できます。このメソッドの詳細については、上記の記事の「順列」セクションを参照してください。
これらのメソッドを実装すると、さまざまなアプリケーションで使用するために Go で簡単に順列を生成できます。
以上がGoでリストのすべての順列を生成するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。