[牛客网]快饿死的XzzF(DFS)
题目来源:链接:https://ac.nowcoder.com/acm/problem/14714
题目描述
XzzF最近过着吃土的日子,饿的神魂颠倒!突然看到有人在做美食节宣传,有好多好吃的,但想吃到这些好吃的可以不容易!得答对主办方出的题。
现在XzzF拿到这样一道题:长度为N的01字符串,且满足以下条件的方案数有多少种?
1、串中不能有两个或多个连续的0。
例如,10、10101、11101是满足条件的,而00、10001、10010是不满足条件的。
XzzF已经饿的神志不清了!显然没有力气回答这道题了,所以,你一定要帮XzzF吃上那些好吃的,不然就莫得了!
输入描述:
一个整数N(1 <= N <= 20)。
输出描述:
满足题目所述条件的方案数。
示例1
输入
1
输出
2
示例2
输入
2
输出
3
说明
有01、10、11三种满足条件的方案。
基础搜索,用DFS即可,需要分情况讨论,当前是0的话,下一个必然是1,如果当前是1的话,下一个可以0也可以1,n<20,直接暴力搜索即可。 ``` #include
void dfs(int x){
if(x==n+1){
ans++;
return;
}
if(s[x-1]=='1')
for(int i=0; i<2; i++){
s[x] = d[i];
dfs(x+1);
}
else{
s[x] = '1';
dfs(x+1);
}
}
int main(){
cin >> n;
s[0] = '1';
dfs(1);
cout << ans;
return 0;
}