求助帖:
为什么用深搜不能做呢??
感觉思路上也没什么问题
代码:
#include<iostream>
using namespace std;
int ans=0;
void dfs(int step,int s) //当前是第几题,分数
{
if(s==7){
ans++;
return;
}
if(s==10) return ;
if(step==30) return;
for(int i=0;i<2;i++){
dfs(step+1,s+i);
//dfs(step+1,s);
}
//step--;
}
int main(){
dfs(0,0);
cout<<ans;
}
————————————
上面的题解有两个错误:
1.得到70分之后不能回溯,因为他可能选择了继续答题,之后清零过又达到了70分。所以s==7只是ans++,而不返回;
2.糊涂了,答错题目需要分数清零。
修改:
#include<iostream>
using namespace std;
int ans=0;
void dfs(int step,int s) //当前是第几题,分数
{
if(s==7){
ans++;
//return;
}
if(s==10) return ;
if(step==30) return;
dfs(step+1,s+1);
dfs(step+1,0);
}
int main(){
dfs(0,0);
cout<<ans;
}