5147. 数量

news/2024/7/20 20:41:34 标签: 深度优先, 算法

题目:

样例1:

输入
4

输出
1

 样例2:

输入
7

输出
2

 样例3:

输入
77

输出
6

思路:

        根据题意,如果直接 for 循环暴力,肯定会超时,但是我们换个思路想,只要包含 4 和 7的数字,所以我们可以 DFS 暴搜小于 n 的就可以了。

代码详解如下:

#include <iostream>
#include <cstring>
#include <algorithm>
#include <queue>
#include <unordered_map>
#define endl '\n'
#define YES puts("YES")
#define NO puts("NO")
#define umap unordered_map
#pragma GCC optimize(3,"Ofast","inline")
#define ___G std::ios::sync_with_stdio(false),cin.tie(0), cout.tie(0)
using namespace std;
const int N = 2e6 + 10;
int n,ans;

string v = "47";	// 包含的数字

string tree = "";	// 选取的数字

inline void DFS()
{
	// 递归边界,如果选取合并的数字大于了 n 退出递归
	if(tree.size() && stoll(tree) > n) return ;	
	
	// 如果 有选取的数字了,并符合 < n 累加该结果
	if(tree.size()) ++ans;
	
	for(int i = 0;i < 2;++i)
	{
		// 先存储好当前的状态
		string tem = tree;
		// 选取字数
		tree += v[i];
		DFS();
		
		// 恢复之前状态
		tree = tem;
	}
	return ;
}

inline void solve()
{
	cin >> n;
	DFS();
	cout << ans << endl;
}


int main()
{
//	freopen("a.txt", "r", stdin);
	___G;
	int _t = 1;
// 	cin >> _t;
	while (_t--)
	{
		solve();
	}

	return 0;
}

 最后提交:


http://www.niftyadmin.cn/n/5015003.html

相关文章

小程序点击复制功能制作

在wxml文件中添加一个按钮或需要点击的元素&#xff0c;并绑定点击事件监听器2 <button bindtap"copyText">点击复制</button> 2 在对应的js文件中定义点击事件处理函数&#xff0c;并在函数中调用小程序的API进行复制操作&#xff0c; copyText(e){co…

微软D365 入门文章汇总以及各项认证介绍(持续跟新.....)

介绍 希望入门D365的同学们&#xff0c;需要具备的知识点&#xff0c;涉及C#&#xff0c;WebApi&#xff0c;前端知识&#xff0c;Power Platform等知识&#xff0c;以及Azure的知识点等&#xff0c;需要有了解。 实施Microsoft Dynamics 365 CE &#xff08;12章&#xff09;…

Angular组件间传值有哪几种方法?

在Angular中&#xff0c;有多种方法可以在组件之间传递数据。以下是一些常用的方法&#xff1a; 1、通过Input属性传递数据&#xff1a; 这是最常见的方式&#xff0c;它允许您在一个组件中通过Input属性将数据传递给另一个组件。在父组件中使用子组件的标签时&#xff0c;可以…

Spring与Docker:如何容器化你的Spring应用

&#x1f337;&#x1f341; 博主猫头虎&#xff08;&#x1f405;&#x1f43e;&#xff09;带您 Go to New World✨&#x1f341; &#x1f984; 博客首页——&#x1f405;&#x1f43e;猫头虎的博客&#x1f390; &#x1f433; 《面试题大全专栏》 &#x1f995; 文章图文…

android注解之APT和javapoet

前言 前面我们已经讲过注解的基本知识&#xff0c;对于注解还不太了解的&#xff0c;可以去看一下之前的文章&#xff0c; android 注解详解_袁震的博客-CSDN博客。 之前我们在讲注解的时候&#xff0c;提到过APT和JavaPoet&#xff0c;那么什么是APT和JavaPoet呢&#xff1…

精讲算法的时间复杂度

目录 一、算法效率 1.算法效率 1.1如何衡量一个算法的好坏 1.2算法的复杂度 二、时间复杂度 1.时间复杂度的概念 2.大O的渐进表示法 3.常见时间复杂度的计算举例 三、空间复杂度 一、算法效率 1.算法效率 1.1如何衡量一个算法的好坏 long long Fib(int N) {if(N <…

Bash常见快捷键

生活在 Bash Shell 中&#xff0c;熟记以下快捷键&#xff0c;将极大的提高你的命令行操作效率。 编辑命令 Ctrl a &#xff1a;移到命令行首Ctrl e &#xff1a;移到命令行尾Ctrl f &#xff1a;按字符前移&#xff08;右向&#xff09;Ctrl b &#xff1a;按字符后移&a…

英语单词(二)

1.int:整形 2.char:字符型 3.scanner:接受输入,扫描器 4.integer:整数,整形 5.type:类型 6.string:字符串类型 7.double:双精度浮点型