#include<algorithm>
#include<iostream>
#include<stdio.h>
#include<vector>
using namespace std;
int s[16];
int number;
void dfs(int n,int m){
if(n==0){//退出条件
int sum1=0,sum2=0;//sum1记录经过了几次花,sum2记录经过了几次店
if(m==15){//是否走了15步
for(int i=0;i<15;i++){
if(s[i]==1) sum1++;
else if(s[i]==2) sum2++;
}
if(sum1==10 && sum2==5){//遇花10次,遇店5次,结果加一
number++;
}
}
return ;
}
if(m==15){
return ;
}
s[m]=1;;//遇花记为1
dfs(n-1,m+1);
s[m]=2;//遇店记为2
dfs(n*2,m+1);
}
int main(){
dfs(2,0);
cout<<number<<endl;
return 0;
}
蓝桥杯 李白打酒 dfs解法
最新推荐文章于 2022-03-27 10:45:17 发布