#include<bits/stdc++.h>
using namespace std;
char s[1000];
long long int ans;
void dfs(int a,int b,int j,int sum,int x){
//a-店 b-花 j-酒 sum-步数 x-店花总数
if(!j&&s[x-1]=='b'&&!a&&!b){ //最后一次遇到花店,并且没有酒了
ans++;return;
}
if(a>0){
s[sum]='a';
dfs(a-1,b,j*2,sum+1,x);
}
if(b>0&&j>0){
s[sum]='b';
dfs(a,b-1,j-1,sum+1,x);
}
}
int main(){
int n,m;
cin>>n>>m;
dfs(n,m,2,0,n+m);
cout<<(ans%1000000007);
return 0;
}
第13届蓝桥杯I题李白打酒加强版(C++,dfs)
于 2022-04-14 17:04:54 首次发布