Отримання знань

дистанційна підтримка освіти школярів


Картография файла
http://acm.pku.edu.cn/JudgeOnline/problem?id=1057

   Входные данные

   Выходные данные

   Пример входных данных

   Пример выходных данных

   Анализ условия и обсуждение идеи решения

   Пример решения на C++:

#include "iostream" 
#include "algorithm"
#include "vector"
#include "string"
using namespace std;
string s;
struct Directory
{
string name;
vector < Directory > menu;
vector < string > files;
};
void build(Directory& t, string s)
{
if(s == "*" || s == "]")
return;
if(s[0] == 'f')
{
t.files.push_back(s);
cin >> s;
build(t, s);
}
else
{
Directory d;
d.name = s;
cin >> s;
build(d, s);
t.menu.push_back(d);

cin >> s;
build(t, s);
}
}
void printLayer(int layer)
{
for(int i = 0; i < layer; ++i)
cout << "| ";
}
void print(Directory& t, int layer)
{
printLayer(layer);
cout << t.name << endl;
for(unsigned int i = 0; i < t.menu.size(); ++i)
print(t.menu[i], layer+1);
sort(t.files.begin(), t.files.end());
for(unsigned int i = 0; i < t.files.size(); ++i)
{
printLayer(layer);
cout << t.files[i] << endl;
}
}
int main()
{
string s;
int cnt = 0;
while(1)
{
cin >> s;
if(s == "#")
break;
Directory d;
d.name = "ROOT";
printf("DATA SET %d:\n", ++cnt);
build(d, s);
print(d, 0);
cout << endl;
}
return 0;
}

 

Попередня Зміст Наступна
В системі: гості - (); користувачі - (0)