HJ77火车进站

2023-10-27

 

 思路:

重复的子问题:每一次车进站可以选择  出  还是  不出!

解决重复子问题:动规 or 深搜

此题 输出具体 方案,显然动规不符合

因此选择深搜

注意:除了维护数组,还需要维护一个栈结构!!!!

代码:

#include<iostream>
#include<vector>
#include<stack>
#include<algorithm>
using namespace std;
int N;//火车数量
vector<vector<int>>result;
vector<int>path;
stack<int>s;
void dfs(vector<int>&ans,int x){
    if(x==ans.size()&&s.empty()){
        result.push_back(path);
        return;
    }
     
    if(x<ans.size()){//放入栈中
            s.push(ans[x]);
            dfs(ans,x+1);
            s.pop();
        }
    if(!s.empty()){//弹出栈 ,输出到数组中
        int num=s.top();
        path.push_back(num);
        s.pop();
        dfs(ans,x);
        s.push(num);
        path.pop_back();
     }
    return;
}
int main(){
    cin>>N;
    vector<int>ans(N);
    for(int i=0;i<N;i++)
        cin>>ans[i];
    dfs(ans,0);
    sort(result.begin(),result.end());//结果按照字典序排序
    for(int i=0;i<result.size();i++){
        for(int j=0;j<result[i].size();j++){
            cout<<result[i][j]<<" ";
        }
        cout<<endl;
    }
    return 0;
}

深搜问题,直接把两种情况写出来,只要满足相应的条件即可。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

HJ77火车进站 的相关文章

  • shell中的for循环示例

    1 利用for循环打印 示例代码 bin bash for i 0 i lt 3 i do for j 0 j lt 5 j 每行打印5个 打印三行 do echo n done echo done 2 利用for循环计算1到100的和 示
  • python读取xlsx格式的excle

    python读取excle的xlsx和xls格式代码略有不同 import pandas as pd from pandas import DataFrame if name main 读取excle表中的数据 file path r D
  • 【华为OD机试】数字反转打印【2023 B卷

    华为OD机试 真题 点这里 华为OD机试 真题考点分类 点这里 题目描述 小华是个很有对数字很敏感的小朋友 他觉得数字的不同排列方式有特殊美感 某天 小华突发奇想 如果数字多行排列 第一行1个数 第二行2个 第三行3个 即第n行有n个数字

随机推荐

  • Java高级开发必知必会——反射

    title Java高级开发必知必会 反射 author rocklei123 tags Java 反射 categories Java date 2018 09 16 08 20 57 1 目标与意义 反射是Java开发中一个非常重要的概
  • Linux 之 shell 比较运算符

    运算符 描述 示例 文件比较运算符 e filename 如果 filename 存在 则为真 e var log syslog d filename 如果 filename 为目录 则为真 d tmp mydir f filename 如
  • 日期子组件

    日期子组件 如图
  • MySQL忘记密码的处理方法(MySQL重置密码)

    1 关闭正在运行的MySQL服务 在任务管理器中找到MySQL对应的服务 然后将其停止 2 打开CMD命令行窗口 转到mysql bin目录 3 输入mysqld skip grant tables 回车 mysqld skip grant
  • 《Collaborative Filtering for Implicit...》论文阅读

    论文题目 Collaborative Filtering for Implicit Feedback Datasets 链接 link 1 Introduction 随着电商的快速发展 为用户提供商品的排序很重要 推荐系统就是为用户提供符合
  • Spring Cloud微服务:Loadbalancer 实战

    nacos维护一个列表 但是我们请求服务不可能一个服务所有的都请求一遍 比如我做一笔转账 我找到其中一个做一次转账就够了 而不是看到有多个转账服务 都去转一次 那这个就需要 选择 选择这个靠谁来做呢 其实就是客户端负载均衡组件 Spring
  • git命令添加多个仓库,同步各分支代码,删除仓库、分支

    某些开发场景中 可能会遇到一套代码提交到2套git仓库 此时如何添加一个新仓库呢 假设已有仓库origin 想行添加一个仓库地址 命名为origin test与原仓库区分 1 查看现有仓库名及仓库地址 git remote v 2 添加新远
  • Pandsa时间序列采样频率滑窗及重采样

    目录 Pandas时间序列采样频率滑窗 1 滑窗函数rolling 获取近7天的销售总量 2 shift 及 diff 重采样 resample pandas时间戳及时间差 pandas日期处理DT对象 Pandas时间序列采样频率滑窗 1
  • 提高「程序员」的思维方式

    大家好 我是Tom哥 人和动物的最大区别就是 人具有思维能力 能将大脑里的东西实现出来 而动物则更多停留在模仿阶段 如 鹦鹉学舌 当然 这也是一种进化能力 这里着重提到了思维能力 人与人的思维能力也是有差异的 比如 一线程序员关心的这个项目
  • Oracle RAC failover 测试(连接时故障转移)

    Oracle RAC 集群最突出的表现就是高可用性 这些内容主要包括load balance以及failover 通过这些技术使得单点故障不影响客户端端应用程序对数据库的正常访问 以及通过创建service实现节点间负载均衡 本文主要描述O
  • Node.js 安装第三方模块

    所有的第三方模块包 下载安装的模块 使用的方式都是一样的 此文件以uuid举例 NPM的全称是Node Package Manager 是node的包管理器 是全球最大的开源生态系统 作用就是管理模块包 node模块包可以理解为工具 插件
  • Git常用命令cherry-pick

    Git常用命令cherry pick 将指定的提交应用于其他分支 可以用于恢复不小心撤销 revert reset 的提交 对于多分支的代码库 将代码从一个分支转移到另一个分支是常见需求 这时分两种情况 一种情况是 你需要另一个分支的所有代
  • 【知识点】Java的值传递——为什么对象在函数里修改了,返回后未修改

    问题背景 今天做题 遇到一个代码判断题 结果一直做错 题目如下 public class Point private int x private int y public Point int x int y this x x this y
  • 轻松易懂,一文告诉你什么是http协议?

    阅读本文之前 请详细阅读以下几篇文章 一文包你学会网络数据抓包 教你如何抓取网络中的数据包 黑客必备技能 一 什么是http Http协议即超文本传送协议 HTTP Hypertext transfer protocol 它定义了浏览器 即
  • matlab 10为底指数,matlab指数函数

    手机评站网今天精心准备的是 matlab指数函数 下面是详解 用matlab求指数函数 刚学这课不会经建模得y与t的关系为y a b exp c t 试确定a b c已知x 0 0 1 1 y 2 997 2 480 2 101 1 815
  • Android实现沉浸式状态栏实现在项目中的使用

    不得不说 Android实现沉浸式状态栏确实是一个不深不浅的坑 懂门路的人几分钟就能解决掉 不懂门路的人 网上找资料查资源估计也要个一两天 当然了 我也是苦于其中 不过到最后还是找出来了 ImmersionBar 一个star数超过5K的三
  • java实现xml文件读取和写入

    import java io File import java io FileInputStream import java io FileOutputStream import java io InputStream import jav
  • java中为什么MAX_ARRAY_SIZE的值为Integer.MAX_VALUE - 8

    数组对象的形状和结构 如int值数组 与标准Java对象类似 主要区别在于数组对象有一个额外的元数据 用于表示数组的大小 数组的最大尺寸为2 31 2147483648 但是需要8bytes的存储大小表示数组的长度等元数据 所以数组的大小定
  • dva 打包多个html,使用dva+umi+antd构建页面(一)

    使用dva umi antd构建页面 首先确保安装npm或者yarnhtml 建立新应用 首先建立应用目录node mkdir myapp cd myapp 推荐使用 yarn 建立应用 执行如下命令 react 若是你坚持用 npm 可执
  • HJ77火车进站

    思路 重复的子问题 每一次车进站可以选择 出 还是 不出 解决重复子问题 动规 or 深搜 此题 输出具体 方案 显然动规不符合 因此选择深搜 注意 除了维护数组 还需要维护一个栈结构 代码 include