【无标题】天梯赛L2系列
天梯赛L2-40
题目详情:
思路:
先来一张我自己的手写解析图:
(字比较丑,不过呢没有对样例推到完整,这种东西最好自己推一遍哈)
我感觉想清楚这三个问题就很有思路啦:
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判断操作就可以了。