简单dfs
C++ 代码
#include <iostream>
#include <unordered_map>
using namespace std;
int n, ans;
unordered_map<string, int> mp;
void dfs(string s, int idx)
{
if(s.size() == n)
{
if(mp[s] == 0) {
ans++;
mp[s] = 1;
}
return;
}
if(s[idx] == '0')
{
dfs(s + '1', idx + 1);
dfs(s + '0', idx + 1);
}
else if(s[idx] == '1')
{
dfs(s + '0', idx + 1);
}
}
int main()
{
cin >> n;
dfs("0", 0);
dfs("1", 0);
cout << ans << endl;
return 0;
}