天梯赛L2-40
题目详情:
思路:
先来一张我自己的手写解析图:
(字比较丑,不过呢没有对样例推到完整,这种东西最好自己推一遍哈)
我感觉想清楚这三个问题就很有思路啦:
1、开始地址是什么?
2、如何存放剧情点?如何存档?
3、游戏操作0,1,2三步都是要干什么?
详细代码如下
/*L2中简单题目*/
#include<bits/stdc++.h>
using 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判断操作就可以了。