欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 科技 > IT业 > 第十四届蓝桥杯 2023 C/C++组 有奖问答

第十四届蓝桥杯 2023 C/C++组 有奖问答

2025/4/22 12:57:01 来源:https://blog.csdn.net/2301_80558092/article/details/147404372  浏览:    关键词:第十四届蓝桥杯 2023 C/C++组 有奖问答

目录

题目:

题目描述:

题目链接:

思路:

核心思路:

思路详解:

代码:

代码详解:


题目:

题目描述:

题目链接:

蓝桥云课 有奖问答

思路:

核心思路:

DFS

思路详解:

看题解这题可以用DFS和DP做,因为我DP学的不是很好,看见填空题不用考虑超时我第一思路就是暴力DFS,所以暂时就不补充DP的做法了

DFS传入的两个参数是现在在做第几道题和已经得到的分数,DFS递归就两种情况,这题答对或者这题答错。如果不进行任何剪枝跑出结果可能会要一点时间但是也不会特别久,建议还是把能够想到的剪枝条件加上提高运行效率

代码:

代码详解:

#include<bits/stdc++.h> //看题解这题可以用dfs或dp做 
using namespace std;    //因为是填空题不用考虑超时,首先考虑暴力做法dfs来做 int ans;void dfs(int k,int score) //k表示第几道题,score表示得到的分数 
{if(score==100||k>=31) //由题一共30道题,只要拿到100分或答完就停止 {return;}if(score>=80&&k>=25)  //这两个if是两种绝对不可能有70分的情况,dfs剪枝优化时间 {return;}if(score==0&&k>=25)   //没有这两个剪枝运行时间大概在12s出答案,优化后运行时间只需要2s {return;}if(score==70) //如果得到70分就记录一次,但是不能退出,因为可能继续作答 {ans++;}dfs(k+1,score+10); //答对的情况,递归到下一题 dfs(k+1,0);        //答错的情况,递归到下一题 
}int main()
{dfs(0,0);cout<<ans<<endl;return 0;
}

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词