#include<iostream>
#include<vector>
#include<math.h>
using namespace std;
int max(int i ,int j){return i > j ? i: j;
}
int min(int i,int j){return i < j ? i: j;
}
int dfs(int m,int c,int i,vector<vector<int>>graph){//和 if(i > 2 * graph.size()) return 0;// 老鼠躲进洞了 if(m == 0) return -1;// 猫抓到老鼠了 if(c == m) return 1; int res = i % 2 == 0 ? 1:-1 ;if (i % 2 == 0) {for(int nxt:graph[m]){//对于老鼠来说,想要得分尽可能小 res = min(res,dfs(nxt,c,i+1,graph));cout << "老鼠在"  << nxt << endl; //老鼠躲进洞了 if(res == -1) break;}}else{for(int nxt:graph[c]){if(nxt != 0) {//对于猫来说,想要得分尽可能大res = max(res,dfs(m,nxt,i+1,graph));cout << "猫在"  << nxt << endl; }//猫抓到老鼠了 if(res == 1) break;}}return res;
}
int catMouseGame(vector<vector<int>>graph){int ans = dfs(1,2,0,graph);if(ans == 1){return 2;}else if(ans == -1){return 1;}else{return 0;}
}
int main(){vector<vector<int>>graph1 = {{2,5},{3},{0,4,5},{1,4,5},{2,3},{0,2,3}};vector<vector<int>>graph2 = {{1,3},{0},{3},{0,2}};cout << catMouseGame(graph1) << endl; cout << catMouseGame(graph2) << endl;return 0;} 

参考题解

leetcode 猫和老鼠相关推荐

  1. LeetCode 1185. 一周中的第几天 / 913. 猫和老鼠(博弈,动态规划) / 1576. 替换所有的问号

    1185. 一周中的第几天 2022.1.3 每日一题 题目描述 给你一个日期,请你设计一个算法来判断它是对应一周中的哪一天. 输入为三个整数:day.month 和 year,分别表示日.月.年. ...

  2. leetcode——【猫和老鼠】

    题目 思路 博弈问题 这道题是博弈问题,猫和老鼠都按照最优策略参与游戏. 在阐述具体解法之前,首先介绍博弈问题中的三个概念:必胜状态.必败状态与必和状态. 对于特定状态,如果游戏已经结束,则根据结束时 ...

  3. LeetCode题解(1728):猫和老鼠II(Python)

    题目:原题链接(困难) 标签:动态规划 解法 时间复杂度 空间复杂度 执行用时 Ans 1 (Python) – – 520ms (96.20%) Ans 2 (Python) Ans 3 (Pyth ...

  4. [leetcode 913] 猫和老鼠(博弈、dp)

    题目链接: https://leetcode-cn.com/problems/cat-and-mouse/ 题目大意: 在一张无向图中,老鼠开始处于1号点,猫开始处于2号点,0号点是洞(猫不能进入), ...

  5. Leetcode每日一题总目录(动态更新。。。)

    0. 概要 leecode每日一题(也可能多题)题解跟踪记录及总目录. 常用算法解题思路和技巧及数据结构: 预处理:数组排序(954),哈希表... 双指针法 682,125,905 单向链表 2 双 ...

  6. leetcode 转载

    转载: https://blog.csdn.net/love905661433/article/details/84980135 LeetCode 1- 100 1. 两数之和 : https://b ...

  7. leetcode 分tag

    leetcode 分tag 数组问题(复杂度先时间再空间,/表示或者) 两数之和✔ O(n), O(n) 三数之和 ✔ 排序+双指针 (O(n2), O(logn)/O(n)) 四数之和✔ 排序+双指 ...

  8. leetcode 5. Longest Palindromic Substring 字符串中的最长回文数 逐步从O(n^2)优化至线性时间

    题目 解析 思路一 暴力解法 思路二 指针+最大长度 思路3 由中间至两边找回数 思路4 Manacher's algorithm 线性时间 参考文档 题目 链接 给定一个字符串 s,找到 s 中最长 ...

  9. LeetCode 10. Regular Expression Matching python特性、动态规划、递归

    前言 本文主要提供三种不同的解法,分别是利用python的特性.动态规划.递归方法解决这个问题 使用python正则属性 import reclass Solution2:# @return a bo ...

最新文章

  1. Pjax是什么以及为什么推荐大家用
  2. 下列哪个可以选中矩形文字块_PPT很难?一个字母就可以搞定
  3. 谷歌发布TensorFlow 1.4与TensorFlow Lattice:利用先验知识提升模型准确度 搜狐科技 10-12 15:29 选自:Google Research Blog 参与:李泽南、
  4. Windows APC学习笔记(二)—— 挂入过程执行过程
  5. python编程标准_Python常见编程规范总结
  6. 我的Ubuntu体验
  7. spark大数据基本概念整理以及软件下载链接
  8. linux显示中文乱码
  9. 三角函数π/2转化_【高中数学说课】三角函数的诱导公式
  10. SpringMVC+uploadify文件上传
  11. 飞鸽传书2012发展触摸屏技术发展迅猛
  12. 【kafka】多图解Kafka中的数据采集和统计机制
  13. Linux文件权限的解析
  14. 如何在 Mac 上的“屏幕使用时间”中设置限定通信?
  15. 如何用 Python 爬取需要登录的网站
  16. 神经元模型hhmodel模型_基于HH模型神经元动作电位的模拟与实现
  17. mysql非常规的中文乱码问题
  18. FOP生成PDF中文乱码问题解决
  19. C语言程序设计精髓 第13周——原来内存也可以这么玩,我是指针我怕谁 练兵区——编程题
  20. 淘宝全自动下单——解放双手

热门文章

  1. lorenz映射的分岔图生成方法
  2. 找回童年乐趣,在线玩超级玛丽、冒险岛、魂斗罗、坦克大战等经典游戏
  3. 10MB/s 的网盘下载神器来了
  4. 【网络安全之——蜜罐】
  5. Linux系统如何安装oki打印机,oki打印机驱动安装图解
  6. zynq 7000 AMP模式 双裸核CPU同时运行
  7. Inner peace
  8. python制作的炫酷动画_用Python一键生成炫酷九宫格图片,火了朋友圈
  9. Python 实现弹球游戏
  10. 姗姗来迟的2022年终总结