原题目:点我

模拟即可,字符串处理麻烦点。如果没有找到子文件夹就新建文件夹,如果有就进入该文件夹。

提示:高能,指针+动态内存,用数组太low(在noip中用数组才是王道!)

#include <iostream>
#include <vector>
#include <string>
using namespace std;
int foldercnt=-1;//根目录已经算了一个了,所以要把自己去除掉
bool isleaf(string s)//判断这个字符串有没有斜杠
{
for(string::iterator it=s.begin();it!=s.end();++it)
if(*it=='/')return false;
return true;
}
string getname(string s)//得到这个字符串的第一个斜杠和第二个斜杠之间的字串
{
string ans;
int cnt=0;
for(string::iterator it=s.begin();it!=s.end();++it)
{
if(*it=='/')cnt++;
if(cnt==1&&*it!='/')ans.push_back(*it);
if(cnt==2)break;
}
return ans;
}
string getmy(string s)//得到这个字符串开始到第一个斜杠之间的字串
{
string ans;
bool have=0;
for(string::iterator it=s.begin();it!=s.end();++it)
{
if(*it=='/')have=1;
if(!have)ans.push_back(*it);
}
return ans;
}
string getrest(string s)//得到第一个斜杠之后的字串
{
string ans;
bool have=0;
for(string::iterator it=s.begin();it!=s.end();++it)
{
if(have)ans.push_back(*it);
if(*it=='/')have=1;
}
return ans;
}
struct folder//文件夹结构体
{
/***constructor***/
folder(string name)//构造函数
{
this->name=name;
this->son.clear();
foldercnt++;//文件数量++
}
~folder()//析构函数
{
for(vector<folder*>::iterator it=this->son.begin();it!=this->son.end();++it)//析构自己所有的子文件夹
if(*it!=NULL)
{
delete *it;
*it=NULL;
}
}
void make(string x)//制作函数
{
if(isleaf(x))return;//如果到这里是叶子了,返回
if(getmy(x)!=this->name)return;//这句话帮了我大忙
string nm=getname(x);//得到儿子的名称
for(vector<folder*>::iterator it=this->son.begin();it!=this->son.end();++it)//找一找有没有
{
if((*it)->name==nm)//如果有
{
(*it)->make(getrest(x));//切割字符串,进入子文件夹
return;//直接返回
}
}
folder* fp=new folder(nm);//没有的情况,新建文件夹
this->son.push_back(fp);//把文件夹放到儿子表列
fp->make(getrest(x));//make文件夹
return;
}
string name;//自己的名称
vector<folder*>son;//儿子表列
};
int main()
{
folder *root=new folder("");//根节点名字为空
int n;//数量
string tmp;//输入
cin >> n;//输入
for(int i=1;i<=n;i++)//循环输入
{
cin >> tmp;
root->make(tmp);//制作文件夹
cout << foldercnt << endl; //输出总数
}
delete root;//删除根文件夹,释放内存(你想想你平时删除文件夹了文件夹里面的东西全没了嘛)
root=NULL;//野指针
return 0;
}

洛谷P1738 洛谷的文件夹的更多相关文章

  1. Java实现 洛谷 P1738 洛谷的文件夹

    题目描述 kkksc03是个非凡的空想家!在短时间内他设想了大量网页,然后总是交给可怜的lzn去实现. 洛谷的网页端,有很多文件夹,文件夹还套着文件夹. 例如:/luogu/application/c ...

  2. 2021.08.05 P1738 洛谷的文件夹(树形结构)

    2021.08.05 P1738 洛谷的文件夹(树形结构) P1738 洛谷的文件夹 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 重点: 1.树!! 题意: 给出n个网页路径,求 ...

  3. Luogu P1738 洛谷的文件夹

    P1738 Luogu 发一个链表题解! 仅有24ms,排名第一哦~ 圆圈代表点,每个店有两个指针,一个指向自己兄弟(同级文件夹),另一个指向自己孩子(子文件夹),还有一个保存当前名字. 有点像二叉树 ...

  4. Luogu1738 | 洛谷的文件夹 (Trie+STL)

    题目描述 kkksc03是个非凡的空想家!在短时间内他设想了大量网页,然后总是交给可怜的lzn去实现. 洛谷的网页端,有很多文件夹,文件夹还套着文件夹. 例如:\(/luogu/application ...

  5. android多国语言文件夹文件汇总

    android多国语言文件夹文件汇总如下: 中文(中国):values-zh-rCN 中文(台湾):values-zh-rTW 中文(香港):values-zh-rHK 英语(美国):values-e ...

  6. Android 文件夹命名规范 国际化资源

    Android 文件夹命名规范 国际化资源 android多国语言文件夹文件汇总如下: 中文(中国):values-zh-rCN 中文(台湾):values-zh-rTW 中文(香港):values- ...

  7. android多国语言文件夹

    android多国语言文件夹文件汇总如下:(有些语言的书写顺序可能跟中文是相反的) 中文(中国):values-zh-rCN 中文(台湾):values-zh-rTW 中文(香港):values-zh ...

  8. Android各国语言Values文件夹命名规则

    android多国语言文件夹文件汇总如下: 中文(中国):values-zh-rCN 中文(台湾):values-zh-rTW 中文(香港):values-zh-rHK 英语(美国):values-e ...

  9. vscode搜索所有文件夹中所有文件的方法

    最近在看opencv相关的内容,看到画图这一部分时,提示我  这些代码都来自OpenCV代码的sample文件夹. 按照他的提示,我打开了相应的文件夹,却发现,so many 文件 and 文件夹,这 ...

随机推荐

  1. [Spring] - 动态设置properties

    Spring的jar包用来做动态properties的getter/setter赋值方法: 1:需要的jar包: spring-beans-3.2.0.RC2.jar commons-logging- ...

  2. WCF: 没有终结点在侦听可以接受消息的 这通常是由于不正确的地址或者 SOAP 操作导致的。

    问题:     由于我这里的wcf服务是采用“BasicHttpBinding”的方式,即安全绑定模式,客户端在引用这个服务后所生成的终结点配置(endpoint )就变成了<endpoint ...

  3. 正常月报表年初未分配利润修改backup

    原来:GLQC('3132',K('年')-1,'12',,,'本币','N','','本币','0001')+GLQC('314115',K('年')-1,'01',,,'本币','N','','本 ...

  4. 【uTenux实验】消息缓冲区

    uTenux的消息缓冲区是一个通过传递大小可变的消息来实现同步和通信的对象. 消息缓冲区由三部分组成:1.待发消息队列  2.等接收消息的任务队列  3.用来保存缓冲消息的空间. 和信号相比,消息队列 ...

  5. [转]理解android.intent.category.LAUNCHER 具体作用

    转自:http://blog.csdn.net/jackrex/article/details/9189657 android.intent.category.LAUNCHER 具体有什么作用?我做一 ...

  6. java gui 下拉框中项删除按钮

    http://www.cnblogs.com/kangls/archive/2013/03/21/2972943.html http://m.blog.csdn.net/blog/ycb1689/74 ...

  7. SESSION和COOKIE的作用和区别,SESSION信息的存储方式,如何进行遍历?

    二者的定义:当你在浏览网站的时候,WEB 服务器会先送一小小资料放在你的计算机上,Cookie 会帮你在网站上所打的文字或是一些选择,都纪录下来.当下次你再光临同一个网站,WEB 服务器会先看看有没有 ...

  8. (转)原始图像数据和PDF中的图像数据

    比较原始图像数据和PDF中的图像数据,结果见表1.1.表1.1中各种“解码器”的解释见本文后续的“PDF支持的图像格式”部分,“PDF中的图像数据”各栏中的数据来自开源的PdfView.如果您有兴趣查 ...

  9. ArcGIS 10.1 中的style和serverstyle及制作方法

    图层的符号都是随机的,动态变化的,所以不利于图层的美观.还有一点就是符号有增加电子地图可读性的功能. Desktop的符号文件 把要用的符号用desktop的style manage制作相应符号,并把 ...

  10. 20. Candy && Gas Station

    Candy There are N children standing in a line. Each child is assigned a rating value. You are giving ...