2021-02-05:給定一個數N,想象只由0和1兩種字符,組成的所有長度為N的字符串。如果某個字符串,任何0字符的左邊都有1緊挨着,認為這個字符串達標。請問有多少達標的字符串?


2021-02-05:給定一個數N,想象只由0和1兩種字符,組成的所有長度為N的字符串。如果某個字符串,任何0字符的左邊都有1緊挨着,認為這個字符串達標。請問有多少達標的字符串?

福哥答案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種。

這道題是斐波那契數列。代碼不用斐波那契數列,用遞歸最直觀。

代碼用golang編寫,代碼如下:

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)
}

  

代碼結果如下:

 

 

[左神java代碼](https://github.com/algorithmzuo/algorithmbasic2020/blob/master/src/class26/Code02_FibonacciProblem.java)
[評論](https://user.qzone.qq.com/3182319461/blog/1612479635)


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM