思路
从左往右遍历,遇到数字不管,遇到字母分成大写和小写,遇到下个字母再分为大小写
#include<bits/stdc++.h>
using namespace std;
int ans=0;
void dfs(string str,int len)
{
if(len==str.length()){ //到最后一个字母时退出循环
ans++;
return;
}
dfs(str,len+1);//直接跑到最后
if(str[len]>='a'&&str[len]<='z'){ //改变大小写后再循环
//分出一支
str[len]-=32;
dfs(str,len+1);
}
else if(str[len]>='A'&&str[len]<='Z'){
str[len]+=32;
dfs(str,len+1);
}
}
int main()
{
string str;
while(cin>>str){
ans=0;
dfs(str,0);
cout<<ans<<endl;
}
return 0;
}