栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

poj 2023 Choose Your Own Adve...

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

poj 2023 Choose Your Own Adve...

#include <iostream>#include <stdlib.h>#include <stdio.h>using namespace std;//定义页,存放输入的行数信息typedef struct{    int next1,next2;    char type;    string text;    string end;}Page;Page page[101];//标记这个页数是否读过,0表示未读过,1表示已读过int mark[101];//存放路径,值0时表示到尾部int path[101];void init(){    for(int i = 0;i < 101; i++)    {        page[i].end = "";        page[i].text = "";        page[i].next1 = 0;        page[i].next2 = 0;        mark[i] = 0;        path[i] = 0;    }}//深度搜索,p表示下一页要读的页码索引,k表示路径长度,读到了第几页,每加一页k+1bool dfs(int p,int k){    //如果读过,就直接返回上级    if(mark[p]==1)    return false;    //记录路径,第k路径是第P页    path[k] = p;    //标记这一页读过    mark[p] = 1;    //读到故事结尾了,返回true    if(page[p].type=='E'&&page[p].end.compare("HAPPY")==0)    return true;    if(page[p].type == 'C')    {        //此条路径成功返回true,因为每组数据只有一个结局,所以找到后即返回,不用再搜索了。        if(dfs(page[p].next1,k+1))        return true;        if(dfs(page[p].next2,k+1))        return true;    }    //这条路径没有成功的完美故事结局,这条路径返回初始值,标记为未读,路径复位0    path[k] = 0;    mark[p] = 0;    return false;}//打印void print(){    int i = 1;    while(path[i]!=0)    {        cout<<page[path[i]].text<<endl;        i++;    }}int main(){     int n;     int x;     int page1,page2;     string text,end;     string line;    cin>>n;    for(int m = 1; m <= n; m++)    {        cin>>x;         getchar();         init();        for(int i = 1; i <= x; i++)        { //一次读一行 getline(cin,line); //如果是C则按照C行格式初始化,先截取字符串,放在一个结构体中 if(line[0] == 'C') {     page1 = atoi(line.substr(line.find_last_of(""")+2,1).c_str());     page2 = atoi(line.substr(line.find_last_of(""")+4,1).c_str());     text = line.substr(line.find_first_of(""")+1,line.find_last_of(""")-line.find_first_of(""")-1);     page[i].next1 = page1;     page[i].next2 = page2;     page[i].text = text;     page[i].type = 'C'; }else if(line[0] == 'E') {     //如果是E则按照E行格式初始化,先截取字符串,放在一个结构体中     text = line.substr(line.find_first_of(""")+1,line.find_last_of(""")-line.find_first_of(""")-1);     end = line.substr(line.find_last_of(""")+2,line.length()-line.find_last_of("""));     page[i].end = end;     page[i].text = text;     page[i].type = 'E'; } //把流和内容清空,注意,不然下次读完之后,内容有重复 line = ""; cin.clear();        }        //从书的第一页开始搜索        mark[1] = 1;        path[1] = 1;        cout<<"STORY "<<m<<endl;        if(dfs(page[1].next1,2))        print();        else        { if(dfs(page[1].next2,2)) print();        }    }    return 0;}
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/380580.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号