(dfs)A -暴力模个拟(我是第一吗?我好像是第一个捏~)(原题目为Serval 的元素周期表)

简介: (dfs)A -暴力模个拟(我是第一吗?我好像是第一个捏~)(原题目为Serval 的元素周期表)

题目链接

清算时刻 - Virtual Judge (csgrandeur.cn)

Serval 的元素周期表 - Gym 103478B - Virtual Judge (csgrandeur.cn)

一些话

dfs积累的东西太少了,这种题特征很明显的,有积累的话纯粹是签到

因为这道题和A. Chat room(双指针)_栞那Kanna的博客-CSDN博客很像,都是问元素是否能组成字符串,所以我只能往双指针的方向想了,但是对于“CAL“这类的字符串,先”C“ 后 ”AL“ 还是 先 ”CA“得到的结果是完全不同的,用双指针的话很难写,所以平时多积累些套路才行。

流程

题目给了20个元素,问是否能组成输入的字符串,因为这些元素长短不一,且先后的顺序会对结果造成影响,所以直接把所有可能走一遍,对应的算法是dp和dfs,dp适合用于求最优解,此题没有最优解,所以用dfs

套路

题目有很多选择,可能性很多,且不存在最优解:


       用dfs(树状回溯)


       在每一步都试验所有的可能,当发现已经找到一种方式或者目前这种方式不可能是结果的时候,退回上一步继续尝试其他可能。很多时候每一步的处理都是一致的,这时候用递归来实现就很自然。


题目有很多选择,可能性很多,且存在最优解:


       dp

ac代码

#include <iostream>
using namespace std;
string f[30] = {"H","HE","LI","BE","B","C","N","O","F","NE", "NA","MG","AL","SI","P","S","CL","AR","K","CA"};
string s;
bool flag;
void dfs(int depth){
    if(depth == s.size()) {
        flag = true;
        return;
    }   
    if(depth != s.size()-1){
        string s1 = s.substr(depth,2);
        for(int j = 0;j < 20;j++){
            if(s1 == f[j]) {
                dfs(depth+2);
                break;
            }
        }
    }
        string s2 = s.substr(depth,1);
        for(int j = 0;j < 20;j++){
            if(s2 == f[j]) {
                dfs(depth+1);
                break;
            }
        }
}
int main(){
    cin >> s;
    dfs(0);
    if(flag) cout << "YES" << endl;
    else cout << "NO" << endl;
    return 0;
}
目录
相关文章
|
前端开发
【css】常用css媒体查询
【css】常用css媒体查询
391 0
|
搜索推荐 算法 大数据
VR导航的实现原理、技术优势和应用场景
VR导航结合虚拟现实和室内定位,提供沉浸式精准导航服务,已在商场、机场、停车场、展馆和景区等领域应用,展现巨大潜力。通过模拟真实环境、精准定位和交互控制,提升用户体验。未来,VR导航将与AR、大数据融合,优化交互方式,并在更多场所普及。
595 1
VR导航的实现原理、技术优势和应用场景
|
存储 索引 Python
Python教程:深入了解 Python 中 Dict、List、Tuple、Set 的高级用法
Python 中的 Dict(字典)、List(列表)、Tuple(元组)和 Set(集合)是常用的数据结构,它们各自有着不同的特性和用途。在本文中,我们将深入了解这些数据结构的高级用法,并提供详细的说明和代码示例。
1139 2
|
负载均衡 网络虚拟化
【专栏】生成树协议(STP),用于消除网络环路并确保单向通信路径,提高可靠性和避免循环是至关重要的
【4月更文挑战第28天】本文详细介绍了生成树协议(STP),用于消除网络环路并确保单向通信路径。STP基于IEEE 802.1D,涉及根桥选举、端口角色分配及构建无环路径。高级特性包括快速STP(RSTP)的快速收敛、多实例STP(MSTP)的负载均衡和容错,以及各种保护机制。文章还讨论了实际案例和故障排除,为网络工程师提供STP的全面理解与应用指南。
987 1
|
算法
数据结构和算法学习记录——认识二叉搜索树及二叉搜索树的查找操作(递归以及迭代实现-查找操作、查找最大和最小元素)
数据结构和算法学习记录——认识二叉搜索树及二叉搜索树的查找操作(递归以及迭代实现-查找操作、查找最大和最小元素)
323 0
|
Prometheus Kubernetes Cloud Native
Prometheus Operator创建告警规则文件
Prometheus Operator创建告警规则文件
312 0
|
缓存 网络协议 算法
ServerSocket与Socket入门详解
ServerSocket与Socket入门详解
895 0
|
编解码 负载均衡 网络协议
两万字详解!Netty经典32连问! 2
两万字详解!Netty经典32连问! 2
|
存储 C语言 iOS开发
【C++】标准库 - 文件的读写 i/ofstream
本文章介绍 C++ 标准库中处理文件读写的 fstream ,以及其中的一些使用
520 0
|
Java
SpringBoot 彩色动态验证码使用!
SpringBoot 彩色动态验证码使用!
264 0
SpringBoot 彩色动态验证码使用!

热门文章

最新文章