当前位置: 首页 > news >正文

[pta]L2-040 哲哲打游戏 c++

L2-040 哲哲打游戏

分数 25

作者 DAI, Longao

单位 杭州百腾教育科技有限公司

哲哲是一位硬核游戏玩家。最近一款名叫《达诺达诺》的新游戏刚刚上市,哲哲自然要快速攻略游戏,守护硬核游戏玩家的一切!

为简化模型,我们不妨假设游戏有 N 个剧情点,通过游戏里不同的操作或选择可以从某个剧情点去往另外一个剧情点。此外,游戏还设置了一些存档,在某个剧情点可以将玩家的游戏进度保存在一个档位上,读取存档后可以回到剧情点,重新进行操作或者选择,到达不同的剧情点。

为了追踪硬核游戏玩家哲哲的攻略进度,你打算写一个程序来完成这个工作。假设你已经知道了游戏的全部剧情点和流程,以及哲哲的游戏操作,请你输出哲哲的游戏进度。

输入格式:

输入第一行是两个正整数 N 和 M (1≤N,M≤105),表示总共有 N 个剧情点,哲哲有 M 个游戏操作。

接下来的 N 行,每行对应一个剧情点的发展设定。第 i 行的第一个数字是 Ki​,表示剧情点 i 通过一些操作或选择能去往下面 Ki​ 个剧情点;接下来有 Ki​ 个数字,第 k 个数字表示做第 k 个操作或选择可以去往的剧情点编号。

最后有 M 行,每行第一个数字是 0、1 或 2,分别表示:

  • 0 表示哲哲做出了某个操作或选择,后面紧接着一个数字 j,表示哲哲在当前剧情点做出了第 j 个选择。我们保证哲哲的选择永远是合法的。
  • 1 表示哲哲进行了一次存档,后面紧接着是一个数字 j,表示存档放在了第 j 个档位上。
  • 2 表示哲哲进行了一次读取存档的操作,后面紧接着是一个数字 j,表示读取了放在第 j 个位置的存档。

约定:所有操作或选择以及剧情点编号都从 1 号开始。存档的档位不超过 100 个,编号也从 1 开始。游戏默认从 1 号剧情点开始。总的选项数(即 ∑Ki​)不超过 106。

输出格式:

对于每个 1(即存档)操作,在一行中输出存档的剧情点编号。

最后一行输出哲哲最后到达的剧情点编号。

输入样例:

10 11

3 2 3 4

1 6

3 4 7 5

1 3

1 9

2 3 5

3 1 8 5

1 9

2 8 10

0

1 1

0 3

0 1

1 2

0 2

0 2

2 2

0 3

0 1

1 1

0 2

输出样例:

1

3

9

10

样例解释:

简单给出样例中经过的剧情点顺序:

1 -> 4 -> 3 -> 7 -> 8 -> 3 -> 5 -> 9 -> 10。

档位 1 开始存的是 1 号剧情点;档位 2 存的是 3 号剧情点;档位 1 后来又存了 9 号剧情点。

思路:

其实这道题我感觉最难得点就是理解题目的规则,分清楚剧情点和剧情点里面的剧情编号,看懂0、1、2操作的意思,比方说前三个剧情点的意思是

3 2 3 4

1 6

3 4 7 5

剧情点plot[1][]={0,2,3,4}

plot[2][]={0,6}

plot[3][]={4,7,5}

定义一个now变量,用语记录当前的剧情,一个save数组,用于记录存档,解释前五个操作

1 1 ,一开始now=1,在1处存档,放在save[1]的位置,还要输出存档的编号1

0 3,现在now=1,选在了剧情点1的第三个元素,记plot[1][3]=4,更新now=4

0 1,现在now=4,选在剧情点4的第一个元素,更新now=plot[4][1]=3

1 2,now=3,存档save[2]=now=3,输出3

0 2,now=3,选在剧情点3的第二个元素,更新now=plot[3][2]=7

.......

代码实现:

#include <bits/stdc++.h> using namespace std; int main() { int n,m;cin>>n>>m; vector<vector<int>>plot(n+1); for(int i=1;i<=n;i++){ plot[i].push_back(0);//下标从1开始,先填充一个元素占位 int k=0;cin>>k; while(k--){ int x;cin>>x; plot[i].push_back(x); } } int now=1; vector<int>save(n+1); while(m--){ int op,j;cin>>op>>j; if(!op){ now=plot[now][j]; }else if(op==1){ cout<<now<<endl; save[j]=now; }else{ now=save[j]; } } cout<<now<<endl; return 0; }
http://www.jsqmd.com/news/393113/

相关文章:

  • 2024年徐州全屋定制装修设计团队综合盘点与选型指南 - 2026年企业推荐榜
  • Java Web 无人超市管理系统系统源码-SpringBoot2+Vue3+MyBatis-Plus+MySQL8.0【含文档】
  • 深度解析:2026年襄城区值得信赖的装修平台 - 2026年企业推荐榜
  • 精品水果线上销售网站信息管理系统源码-SpringBoot后端+Vue前端+MySQL【可直接运行】
  • 2026年风干鸭供货商综合评估与选择指南 - 2026年企业推荐榜
  • SpringBoot+Vue 安康学院新型冠状病毒肺炎疫情防控专题网站管理平台源码【适合毕设/课设/学习】Java+MySQL
  • SpringBoot+Vue 无人超市管理系统平台完整项目源码+SQL脚本+接口文档【Java Web毕设】
  • 2026年广东艺术漆品牌综合实力TOP5盘点 - 2026年企业推荐榜
  • 2026年临沂干洗店铺选择指南:五大品牌综合实力解析 - 2026年企业推荐榜
  • 2026年广东专业艺术漆服务商综合实力TOP5深度解析 - 2026年企业推荐榜
  • 2026年精选:六家顶尖外墙仿石漆团队深度解析 - 2026年企业推荐榜
  • 2026年Q1临泉地区统艺仿石漆专业团队综合评测与推荐 - 2026年企业推荐榜
  • 2026年荆门风干鸡优质厂家深度评估与精选推荐 - 2026年企业推荐榜
  • 临泉县外墙喷砂施工方综合评测:2026年专业指南 - 2026年企业推荐榜
  • Elasticsearch 9.3.0 日志分类功能完整指南
  • 企业级Web教师个人成果管理系统管理系统源码|SpringBoot+Vue+MyBatis架构+MySQL数据库【完整版】
  • 企业级小区物业智能卡管理设计与实现管理系统源码|SpringBoot+Vue+MyBatis架构+MySQL数据库【完整版】
  • 【毕业设计】SpringBoot+Vue+MySQL 精品水果线上销售网站平台源码+数据库+论文+部署文档
  • SpringBoot+Vue Web手工艺品销售系统平台完整项目源码+SQL脚本+接口文档【Java Web毕设】
  • Java Web 精品水果线上销售网站系统源码-SpringBoot2+Vue3+MyBatis-Plus+MySQL8.0【含文档】
  • Java SpringBoot+Vue3+MyBatis Web手工艺品销售系统系统源码|前后端分离+MySQL数据库
  • web汽车销售系统信息管理系统源码-SpringBoot后端+Vue前端+MySQL【可直接运行】
  • Java SpringBoot+Vue3+MyBatis MES生产制造执行系统系统源码|前后端分离+MySQL数据库
  • 【毕业设计】SpringBoot+Vue+MySQL 企业信息管理系统平台源码+数据库+论文+部署文档
  • 前后端分离小区物业智能卡管理设计与实现系统|SpringBoot+Vue+MyBatis+MySQL完整源码+部署教程
  • MES生产制造执行系统信息管理系统源码-SpringBoot后端+Vue前端+MySQL【可直接运行】
  • 【C++深学日志】C++“类”的完全--从基础到实践(二)深度解析:原理、实战与踩坑记录
  • 合并区间问题
  • 2026年温州婚宴新风尚:自助餐与主题酒店融合趋势解析 - 2026年企业推荐榜
  • 网络层:IP 多播和 IGMP 协议