| ||||||||||
| Online Judge | Problem Set | Authors | Online Contests | User | ||||||
|---|---|---|---|---|---|---|---|---|---|---|
| Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest | |||||||||
大废题。#include <iostream>
#include <string>
#include <vector>
#include <stack>
using namespace std;
int partion(vector<string>& array, int p, int r) {
string x = array[r];
int i = p - 1;
int j;
for (j = p; j < r; j++) {
if (array[j] < x) {
i++;
string temp = array[j];
array[j] = array[i];
array[i] = temp;
}
}
string temp = array[j];
array[j] = array[i + 1];
array[i + 1] = temp;
return i+1;
}
void quickSort(vector<string>& array, int p, int r) {
if (p < r) {
int q = partion(array, p, r);
quickSort(array, p, q - 1);
quickSort(array, q + 1, r);
}
}
void quickSort(vector<string>& array){
if(array.empty()) return;
quickSort(array, 0, array.size()-1);
}
bool isFile(string s){
return s[0] == 'f';
}
bool isDir(string s){
return s == "ROOT" || s[0] == 'd';
}
class dir{
public:
string name;
vector<string> files;
dir(string n){
name = n;
}
dir(){}
};
int main() {
string indent = "| ";
int cases = 0;
while(1){
cases ++;
stack<dir> dirs;
dir root("ROOT");
dirs.push(root);
//cout << "ROOT" << endl;
string s;
bool printed = false;
while(cin >> s){
if(s == "#") return 0;
//if(s == "*") break;
if(!printed){
cout << "DATA SET " << cases << ":" << endl;
cout << "ROOT" << endl;
printed = true;
}
if(isDir(s)){
dir newDir(s);
int depth = dirs.size();
for(int i = 0; i < depth; i++) cout << indent;
cout << newDir.name << endl;
dirs.push(newDir);
}
if(isFile(s)){
dirs.top().files.push_back(s);
}
if(s == "]" || s == "*"){
quickSort(dirs.top().files);
int filegs = dirs.top().files.size();
int depth = dirs.size() - 1;
for(int i = 0; i < filegs; i++){
for(int j = 0; j < depth; j++) cout << indent;
cout << dirs.top().files[i] << endl;
}
dirs.pop();
}
if(s == "*") break;
}
cout << endl;
}
return 0;
}
Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator