[牛客网]快饿死的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 using namespace std; int n, ans = 0; char d[2] = {'0', '1'}; char s[25];

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

posted @ 2019-10-11 13:01  gdgzliu  阅读(338)  评论(0编辑  收藏  举报