(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;
}
目录
相关文章
|
搜索推荐 算法 大数据
VR导航的实现原理、技术优势和应用场景
VR导航结合虚拟现实和室内定位,提供沉浸式精准导航服务,已在商场、机场、停车场、展馆和景区等领域应用,展现巨大潜力。通过模拟真实环境、精准定位和交互控制,提升用户体验。未来,VR导航将与AR、大数据融合,优化交互方式,并在更多场所普及。
430 1
VR导航的实现原理、技术优势和应用场景
|
关系型数据库 MySQL 分布式数据库
PolarDB产品使用问题之从MySQL迁移数据到PolarDB-X时,自定义函数不会自动迁移,该怎么办
PolarDB产品使用合集涵盖了从创建与管理、数据管理、性能优化与诊断、安全与合规到生态与集成、运维与支持等全方位的功能和服务,旨在帮助企业轻松构建高可用、高性能且易于管理的数据库环境,满足不同业务场景的需求。用户可以通过阿里云控制台、API、SDK等方式便捷地使用这些功能,实现数据库的高效运维与持续优化。
250 1
|
存储 索引 Python
Python教程:深入了解 Python 中 Dict、List、Tuple、Set 的高级用法
Python 中的 Dict(字典)、List(列表)、Tuple(元组)和 Set(集合)是常用的数据结构,它们各自有着不同的特性和用途。在本文中,我们将深入了解这些数据结构的高级用法,并提供详细的说明和代码示例。
809 2
|
负载均衡 网络虚拟化
【专栏】生成树协议(STP),用于消除网络环路并确保单向通信路径,提高可靠性和避免循环是至关重要的
【4月更文挑战第28天】本文详细介绍了生成树协议(STP),用于消除网络环路并确保单向通信路径。STP基于IEEE 802.1D,涉及根桥选举、端口角色分配及构建无环路径。高级特性包括快速STP(RSTP)的快速收敛、多实例STP(MSTP)的负载均衡和容错,以及各种保护机制。文章还讨论了实际案例和故障排除,为网络工程师提供STP的全面理解与应用指南。
661 1
|
Prometheus Kubernetes Cloud Native
Prometheus Operator创建告警规则文件
Prometheus Operator创建告警规则文件
212 0
|
机器学习/深度学习 TensorFlow API
ModelScope部署到trt-llm
ModelScope部署到trt-llm
422 3
38Echarts - 柱状图(极坐标系下的堆叠柱状图)
38Echarts - 柱状图(极坐标系下的堆叠柱状图)
257 0
|
存储 Linux 虚拟化
|
IDE 物联网 开发工具
ESP8266-NodeMCU物联网开发之Arduino环境搭建
ESP8266-NodeMCU物联网开发之Arduino环境搭建
980 0

热门文章

最新文章