蓝桥杯模拟赛:奇怪的捐赠(dfs)

简介: 地产大亨Q先生临终的遗愿是:拿出100万元给X社区的居民抽奖,以稍慰藉心中愧疚。 麻烦的是,他有个很奇怪的要求:100万元必须被正好分成若干份(不能剩余)。

地产大亨Q先生临终的遗愿是:拿出100万元给X社区的居民抽奖,以稍慰藉心中愧疚。
麻烦的是,他有个很奇怪的要求:

  1. 100万元必须被正好分成若干份(不能剩余)。每份必须是7的若干次方元。
    比如:1元, 7元,49元,343元,…

  2. 相同金额的份数不能超过5份。

  3. 在满足上述要求的情况下,分成的份数越多越好!

  4. 请你帮忙计算一下,最多可以分为多少份?

注意:只需要填写一个整数,就是分成的份数,不要填写任何多余的内容。比如说明文字。

分析:
dfs
因为相同金额可以有5份 所以递归的时候有两种情况
1.当前次方元+1 visit[step]+1
2.下一次方元+1 visit[step+1]+1
通过份数不能超过5份和金额不能大于100万条件退出递归

#include <iostream>
#include <cmath>
using namespace std;
int count = 0;
int visit[10] = {0};
int num;
void dfs(int step,int count) {  //step代表7的几次方 
    if(visit[step] > 5) {   //相同金额的份数不能超过5份
        return;
    }
    if(count > 1000000) {
        return;
    } else if(count == 1000000){
        num = 0;
        for(int i = 0; i < 10; i++) {
            num += visit[i];
        }
        cout<< num;
        exit(0);
    }        
    count += pow(7,step);
    visit[step]++;
    dfs(step, count);    //两种路 visit[step]+1
    dfs(step+1, count);   //visit[step+1]+1
    visit[step]--;
    count -= pow(7,step);
} 
int main()
{   
    dfs(0,0);
    return 0;
}
目录
相关文章
|
5月前
|
算法 Python
蓝桥杯-搜索BFS+DFS
蓝桥杯-搜索BFS+DFS
41 2
|
6月前
|
算法 安全 定位技术
【刷题】备战蓝桥杯 — dfs 算法
dfs算法在数据较小的情况下可以使用。 一定一定要确定好终止条件,避免栈溢出。 相应做好回溯,保证每次的遍历都是不一样的选择,避免少结果。 针对题目进行对应细节处理,有能力的话可以进行剪枝优化!!!
68 0
|
算法 定位技术
【洛谷刷题】蓝桥杯专题突破-深度优先搜索-dfs(7)
【洛谷刷题】蓝桥杯专题突破-深度优先搜索-dfs(7)
102 0
|
程序员 定位技术 C++
[蓝桥杯] 双指针、BFS和DFS与图论问题
本篇文章针对蓝桥杯比赛的考点,列出双指针、BFS和DFS与图论的相关习题以及知识点的解释。希望本篇文章会对你有所帮助。
87 0
《蓝桥杯每日一题》dfs·AcWing3502. 不同路径数
《蓝桥杯每日一题》dfs·AcWing3502. 不同路径数
69 0
|
算法
【洛谷刷题】蓝桥杯专题突破-深度优先搜索-dfs(10)
【洛谷刷题】蓝桥杯专题突破-深度优先搜索-dfs(10)
118 0
|
算法
【洛谷刷题】蓝桥杯专题突破-深度优先搜索-dfs(9)
【洛谷刷题】蓝桥杯专题突破-深度优先搜索-dfs(9)
87 0
|
机器学习/深度学习 算法
【AcWing刷题】蓝桥杯专题突破-深度优先搜索-dfs(8)
【AcWing刷题】蓝桥杯专题突破-深度优先搜索-dfs(8)
96 0
|
安全 算法
【洛谷刷题】蓝桥杯专题突破-深度优先搜索-dfs(6)
【洛谷刷题】蓝桥杯专题突破-深度优先搜索-dfs(6)
102 0
|
机器学习/深度学习
【AcWing】蓝桥杯备赛-深度优先搜索-dfs(3)
【AcWing】蓝桥杯备赛-深度优先搜索-dfs(3)
94 0
下一篇
无影云桌面