⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 1211.cpp

📁 ZOJ 动态规划算法题目入门与提高 源代码
💻 CPP
字号:
#include<iostream>
#include<fstream>
#include<sstream>
#include<algorithm>
#include<string>
#include<vector>
using namespace std;
//ofstream cout("out.txt");
class item{
public:
	string name;
	int father;
	item(){}
	item(string a,int b){name=a;father=b;}
};
int findfind(vector<item> & vec,string s){
    for(int i=0;i<vec.size();i++){
        if(s==vec[i].name) return i;
	}
	return -1;
}
void outputtitle(vector<vector<item> > & vec,int i,int j){
   cout<<"Directory of ";
   vector<string> temp;
   do{
      temp.push_back(vec[i][j].name);
	  j=vec[i][j].father;
	  i-=1;
   }while(j!=-1);
   for(i=temp.size()-1;i>=0;i--){
      cout<<temp[i];
	  if(i!=0) cout<<"\\";
	  else cout<<":\n";
   }
}
void deal(vector<string> & vec){
	for(int i=0;i<vec.size();i++){
        while(vec[i].length()<8) vec[i].insert(vec[i].end(),' ');
	}
}
int main(){
   //ifstream cin("in.txt");
   string input,s1,s2;
   cout<<"Problem 5 by team x\n";
   vector<vector<item> > vec(5010);
   vec[0].push_back(item("root",-1));
   int i,j,deep=0,pz=0;
   while(getline(cin,input)){
      cout<<"Command: "<<input<<endl;
      istringstream is(input);
	  is>>s1;
	  if(s1=="up"){
		  if(deep==0) cout<<"Cannot move up from root directory\n";
		  else {pz=vec[deep][pz].father;deep-=1;}
	  }
	  else if(s1=="cd"){
          is>>s2;
		  i=findfind(vec[deep+1],s2);
		  if(i==-1) cout<<"Subdirectory does not exist\n";
		  else {pz=i;deep+=1;}
	  }
	  else if(s1=="mkdir"){
          is>>s2;
		  i=findfind(vec[deep+1],s2);
		  if(i!=-1) cout<<"Subdirectory already exists\n";
		  else {vec[deep+1].push_back(item(s2,pz));}
	  }
	  else if(s1=="dir"){
          outputtitle(vec,deep,pz);
		  vector<string> temp;
		  for(j=0;j<vec[deep+1].size();j++){
              if(vec[deep+1][j].father==pz)
				  temp.push_back(vec[deep+1][j].name);
		  }
		  if(temp.size()==0) cout<<"No subdirectories\n";
		  else {
              sort(temp.begin(),temp.end());
			  deal(temp);
			  for(j=0;j<temp.size();j++){
				  if(j%10==9||j==temp.size()-1){
					  while(temp[j][temp[j].length()-1]==' ') temp[j].erase(temp[j].end()-1);
					  cout<<temp[j]<<endl;
				  }
				  else cout<<temp[j];
			  }
		  }
	  }
   }
   cout<<"End of problem 5 by team x\n";
   return 0;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -