> 文档中心 > 【无标题】天梯赛L2系列

【无标题】天梯赛L2系列


天梯赛L2-40

题目详情:

在这里插入图片描述
【无标题】天梯赛L2系列
在这里插入图片描述

思路:

在这里插入图片描述
先来一张我自己的手写解析图:
在这里插入图片描述
(字比较丑,不过呢没有对样例推到完整,这种东西最好自己推一遍哈)
我感觉想清楚这三个问题就很有思路啦:
1、开始地址是什么?
2、如何存放剧情点?如何存档?
3、游戏操作0,1,2三步都是要干什么?

详细代码如下

/*L2中简单题目*/#includeusing namespace std;const int maxn = 1e5 + 5;vector<int>v[maxn];//存剧情点int dang[105];//存档int n,m,k;int main(){    cin>>n>>m;    for(int i=1; i<=n; i++)    { cin>>k; for(int j=0; j<k; j++) {     int x;     cin>>x;     v[i].push_back(x); }    }    int a,b;//判断游戏操作    int address = 1;//默认情节点是1    for(int i=0; i<m; i++)    { cin>>a>>b; if(a == 0) {     address = v[address][b-1];//为什么是b-1呢?因为是从0开始存放的 } else if(a == 1) {     dang[b] = address;     cout<<address<<endl; } else if(a == 2) {     address = dang[b]; }    }    cout<<address<<endl;}

总结知识点:

这里用到了vector容器存放剧情点,相当于一个二维数组存放各个地点:这里v[maxn]是从1开始的。
因为还有存档,所以再找一个数组存档就可以了。
最后if else判断操作就可以了。

中评网简体版