首页 > 试题广场 >

员工考勤记录

[编程题]员工考勤记录
  • 热度指数:8821 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32M,其他语言64M
  • 算法知识视频讲解

给定一个字符串来代表一个员工的考勤纪录,这个纪录仅包含以下两个字符:
'A' : Absent,缺勤
'P' : Present,到场
如果一个员工的考勤纪录中不超过两个'A'(缺勤),那么这个员工会被奖赏。

如果你作为一个员工,想在连续N天的考勤周期中获得奖赏,请问有多少种考勤的组合能够满足要求

输入描述:
考勤周期的天数N(正整数)


输出描述:
这N天里能获得奖赏的考勤组合数
示例1

输入

3

输出

7
package main

import (
    "fmt"
)

func main() {
    var n int
    fmt.Scan(&n)
    ans:=0
    var dfs func(int,int)
    dfs=func(tot int,idx int){
        if tot<=1{
            ans++
        }
        if tot>=2{
            if tot==2{
                ans++
            }
            return
        }
        for i:=idx;i<n;i++{
            tot++
            dfs(tot,i+1)
            tot--
        }
    }
    dfs(0,0)
    fmt.Print(ans)
}

发表于 2023-03-20 23:43:04 回复(0)