[ARC001B] リモコン

题目传送门:[ARC001B] リモコン


求最小步,是dfs的例题。首先,偏移量不能少:

int d[6]={1,-1,5,-5,10,-10};

然后开始写搜索:

void dfs(int tem, int step) {  // 定义深度优先搜索函数dfs,参数tem表示当前温度,step表示已经走过的步数  
    if(tem > 40 || tem < 0 || flag[tem] == 1) return;  // 如果当前温度超出范围或者已经被访问过,直接返回  
    if(step > ans) return;  // 如果已经走过的步数大于当前的最小步数ans,直接返回  
    if(tem == b) {  // 如果当前状态等于目标状态b  
        ans = min(ans, step);  // 更新最小步数  
    }  
    flag[tem] = 1;  // 标记当前状态为已访问  
    for(int i = 0; i < 6; i++) {  // 遍历6种可能的增量  
        dfs(tem + d[i], step + 1);  // 递归调用dfs函数,进入下一个状态  
    }  
    flag[tem] = 0;
}  

起始温度就是a。

好的,我们来写完整代码:

#include<bits/stdc++.h>  // 包含大多数标准库  
using namespace std;     // 使用标准命名空间  
  
int a, b, ans = 1e9, flag[105];  // 定义全局变量a, b, ans, 和flag数组。ans初始化为10^9,flag数组用于标记某个状态是否已经被访问过  
  
int d[6] = {1, -1, 5, -5, 10, -10};  // 定义了一个数组d,用于存储6种可能的偏移量 
  
void dfs(int tem, int step) {  // 定义深度优先搜索函数dfs,参数tem表示当前温度,step表示已经走过的步数  
    if(tem > 40 || tem < 0 || flag[tem] == 1) return;  // 如果当前状态超出范围或者已经被访问过,直接返回  
    if(step > ans) return;  // 如果已经走过的步数大于当前的最小步数ans,直接返回  
    if(tem == b) {  // 如果当前温度等于目标状态b  
        ans = min(ans, step);  // 更新最小步数  
    }  
    flag[tem] = 1;  // 标记当前状态为已访问  
    for(int i = 0; i < 6; i++) {  // 遍历6种可能的增量  
        dfs(tem + d[i], step + 1);  // 递归调用dfs函数,进入下一个状态  
    }  
    flag[tem] = 0;  // 回溯,将当前状态标记为未访问  
}  
  
int main() {  // 主函数  
    cin >> a >> b;  // 输入起始状态a和目标状态b  
    dfs(a, 0);  // 从起始状态开始深度优先搜索  
    cout << ans;  // 输出最小步数  
    return 0;  // 程序结束  
}

相关推荐

  1. [ARC001B]

    2024-02-23 06:36:01       61 阅读
  2. AT_abc039_b[ABC039B] エージェト高橋君

    2024-02-23 06:36:01       54 阅读
  3. ARM_01

    2024-02-23 06:36:01       41 阅读
  4. atcoder ABC 358-B题详解

    2024-02-23 06:36:01       34 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-02-23 06:36:01       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-02-23 06:36:01       101 阅读
  3. 在Django里面运行非项目文件

    2024-02-23 06:36:01       82 阅读
  4. Python语言-面向对象

    2024-02-23 06:36:01       91 阅读

热门阅读

  1. 设计模式-工厂方法模式

    2024-02-23 06:36:01       43 阅读
  2. 一次学习引发我对于 synchronized 的再理解

    2024-02-23 06:36:01       46 阅读
  3. 设计模式--原型模式和建造者模式

    2024-02-23 06:36:01       49 阅读
  4. Json简介与基本使用

    2024-02-23 06:36:01       50 阅读
  5. Sora - 探索AI视频模型的无限可能

    2024-02-23 06:36:01       50 阅读
  6. 20240222作业

    2024-02-23 06:36:01       43 阅读
  7. IOS总体框架介绍和说明

    2024-02-23 06:36:01       51 阅读
  8. vue3 之 数据格式化函数

    2024-02-23 06:36:01       45 阅读
  9. 【shell】shell判断的几种方式

    2024-02-23 06:36:01       49 阅读