一、哲哲打游戏

这是一个关于C++编程的题目,涉及数组、向量和游戏进度存储。程序接收N个剧情点及M个游戏操作,操作包括根据剧情点选择、存档和读档。输入数据定义了剧情点之间的转移,并按指定的游戏操作更新剧情点路径。程序最终输出哲哲最后到达的剧情点编号。
摘要由CSDN通过智能技术生成

2021年天梯赛LV2的最后一道题

题目的理解尤为关键

#include<bits/stdc++.h>
using namespace std;
int n,m;
int book[101010];
vector<int>a[1010100];
int main()
{
	int i,j,k,x,y;
	cin>>n>>m;
    //保证从1开始记录,提前向数组中存入一个数
	for(i=1;i<=n;i++)
	{
		a[i].push_back(0);
	}
	for(i=1;i<=n;i++)
	{
		cin>>k;
		for(j=0;j<k;j++)
		{
			cin>>x;
            a[i].push_back(x);
		}
		
	}
    //k表示当前所在位置,由题意得开始位置是1
	k=1;
	while(m--)
	{
		scanf("%d%d",&x,&y);
		
		if(x==0)
		{
            //当前剧情点(k)做出了第 j (y)个选择
			k=a[k][y];
		}
		if(x==1)
		{
            //存档放在了第 j 个档位上
			book[y]=k;
			printf("%d\n",k);    //在一行中输出存档的剧情点编号
		}
		if(x==2)
		{
            //读取了放在第 j 个位置的存档
			k=book[y];
		}
	}
	cout<<k;   //最终位置
}

 

 

 

 题目简介

输入:N个剧情点,有M个游戏操作

接下来N行,每行第一个数字是Ki,表示剧情点i通过一些操作能去往下面Ki个剧情点,接下来有Ki个数字

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

0:后面紧接着一个数字j,表示在当前剧情点做出了第j个选择

1:表示存档,j表示存档放在了第j个档位上

2:读取存档,读取了放在第j个位置的存档

输出:对于每个存档操作,在一行中输出存档的剧情点编号

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

题目理解:

前N行的输入,表示行走的路线,类似于迷宫的初始化

最后M行的输入:

有两个疑问点

1. 题意理解

0、1 、2分别代表什么意思

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

再仔细审题:都从1号开始;进行M个游戏操作;存档:在某个剧情点可以将玩家的游戏进度保存在一个档位上,读取存档后可以回到剧情点,重新进行操作或者选择,到达不同的剧情点

2.dfs还是bfs,存档的剧情点编号,和最后到达的剧情点编号 

 

 

 

 

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值