福哥答案2021-02-05:
舉例:
N=6
[1 0 1 0 1 0]
[1 0 1 0 1 1]
[1 0 1 1 0 1]
[1 0 1 1 1 0]
[1 0 1 1 1 1]
[1 1 0 1 0 1]
[1 1 0 1 1 0]
[1 1 0 1 1 1]
[1 1 1 0 1 0]
[1 1 1 0 1 1]
[1 1 1 1 0 1]
[1 1 1 1 1 0]
[1 1 1 1 1 1]
總共13種。java
這道題是斐波那契數列。代碼不用斐波那契數列,用遞歸最直觀。git
代碼用golang編寫,代碼以下:github
package main import "fmt" func main() { for i := 1; i <= 10; i++ { ret := ff(i) fmt.Println(i, ret) } } //一個一個試,最直觀思惟 func ff(n int) int { ansval := 0 ans := &ansval arr := make([]int, n) //第0個位置,確定是1 arr[0] = 1 process(arr, 1, ans) return *ans } //遞歸 func process(arr []int, start int, ans *int) { if start == len(arr) { *ans++ return } if arr[start-1] == 1 { arr[start] = 0 process(arr, start+1, ans) } arr[start] = 1 process(arr, start+1, ans) }
代碼結果以下:golang