题目
题目的意思就是给你一串目录名,让你查找一下该目录的上级,从根目录开始输出
思路
样例输入中,每个目录位于第几级前面会有对应的几个空格,我们输入的时候用字符串输入,遍历一下判断有几个空格,用一个数组a存放当前目录级数最近出现的目录。再设一个数组id用来存放每个目录名对应的上级目录是谁,最后查找的时候,深搜一下即可。
测试点1和2错误是因为,让查找的是0000的时候,当前是根目录没有上级,只输出0000即可
代码
#include <bits/stdc++.h>
using namespace std;
int n,id[10000],val,t=0,a[1000]={0},k;
string s;
void dfs(int z)//深搜
{
if(id[z]==-1)
return ;
dfs(id[z]);
printf("%04d->",id[z]);
}
int main()
{
for(int i=0;i<=9999;i++)
id[i]=-1;
cin>>n;
getchar();
getline(cin,s);
a[0]=0;//第0及
for(int i=2;i<=n;i++)
{
t=val=0;
getline(cin,s);
for(int j=0;j<s.size();j++)
{
if(s[j]==' ')
t++;
else
val=val*10+(s[j]-'0');
}
a[t]=val;//更新t最近出现的t级目录
id[val]=a[t-1];//存储当前目录的上一级是谁
}
cin>>t;
for(int i=1;i<=t;i++)
{
cin>>k;
if(k==0)//测试点1,2
{
cout<<"0000"<<endl;
continue;
}
if(id[k]!=-1)
{
dfs(k);//存在就深搜
printf("%04d",k);
}
else{
printf("Error: %04d is not found.",k);
}
cout<<endl;
}
return 0;
}