每組測試資料的輸出結果間需要輸出一行空行。注意大小寫敏感。
以封裝的思想來實現每個小功能,由於有undo的操作,因此對於mkdir、rm、cd三種操作需要記錄每一次操作的過程;
建立乙個目錄相關的結構體,其中包括檔名,當前檔案的子目錄的map,父節點以及當前檔案下子樹(目錄)的規模,當前目錄下先序遍歷、後序遍歷的幾個檔名稱以及乙個標記當前目錄是否被更新過的標識量;
對每個命令挨個實現:
#include
#include
#include
#include
#include
using
namespace std;
struct dict
;dict node[
500010];
mapint> opr;
//將操作的字元形式轉為數值形式
int cnt,now;
//cnt是當前已有的目錄節點個數,now是當前目錄節點
vector
int,
int>
>
> v;
//用於記錄已經實現的mkdir、re、cd操作名和操作目錄節點
void
update
(int id,
int num)
}void
mkdir
(string s)
cnt++
; node[now]
.mp.
insert
(pair
int>
(s,cnt));
node[cnt]
.name=s;
node[cnt]
.fa=now;
node[cnt]
.sz=1;
node[cnt]
.mp.
clear()
; node[cnt]
.pre.
clear()
; node[cnt]
.bck.
clear()
; node[cnt]
.tag=
false
;update
(now,1)
; v.
push_back
(make_pair
("mkdir"
,make_pair
(now,cnt)))
; cout<<
"ok"
<
}void
rm(string s)
int d=node[now]
.mp[s]
; node[now]
.mp.
erase
(s);
update
(now,(-
1)*node[d]
.sz)
; v.
push_back
(make_pair
("rm"
,make_pair
(now,d)))
; cout<<
"ok"
<
}void
cd(string s)
v.push_back
(make_pair
("cd"
,make_pair
(now,node[now]
.fa)))
; now=node[now]
.fa;
}else
v.push_back
(make_pair
("cd"
,make_pair
(now,node[now]
.mp[s]))
);now=node[now]
.mp[s];}
cout<<
"ok"
<
}voidsz(
)voidls(
) map
int>
::iterator iter=node[now]
.mp.
begin()
;if(node[now]
.mp.
size()
<=10)
else}}
void
undo()
pair
int,
int>
> e=v[v.
size()
-1];
v.pop_back()
;int tmp=now;
if(e.first==
"mkdir"
)else
if(e.first==
"rm"
)else
now=e.second.first;
cout<<
"ok"
<
}void
pushdown
(int id)
;//宣告
void
pretrack
(int id)
return;}
int t=1;
for(
;iter!=node[id]
.mp.
end();
++iter)
if(t>=5)
break;}
}void
bcktrack
(int id)}if
(t>=5)
break;if
(iter==node[id]
.mp.
begin()
)break;}
}void
pushdown
(int id)
void
tree()
else
}void
opr_init()
void
init()
intmain()
if(opr[o]==1
)if(opr[o]==2
)if(opr[o]==3
)if(opr[o]==4
)if(opr[o]==5
)if(opr[o]==6
)}}return0;
}
這道題的難點,我認為有以下幾點:
這道題對我而言難度還是很大的,更多都是照著助教學長給的**來寫,而其中tree的處理辦法還是沒能完全掌握,只能說是看懂了**所寫,但自己來寫估計還是無法完成,總而言之,這道題還是一道值得多多回顧反思的一道題。
WEEK9 A 咕咕東的目錄管理器
咕咕東的雪梨電腦的作業系統在上個月受到宇宙射線的影響,時不時發生故障,他受不了了,想要寫乙個高效易用零bug的作業系統 這工程量太大了,所以他定了乙個小目標,從實現乙個目錄管理器開始。前些日子,東東的電腦終於因為過度收到宇宙射線的影響而宕機,無法寫 他的好友tt正忙著在b站看貓片,另一位好友瑞神正忙...
week9 作業A 咕咕東的目錄管理器
咕咕東的雪梨電腦的作業系統在上個月受到宇宙射線的影響,時不時發生故障,他受不了了,想要寫乙個高效易用零bug的作業系統 這工程量太大了,所以他定了乙個小目標,從實現乙個目錄管理器開始。前些日子,東東的電腦終於因為過度收到宇宙射線的影響而宕機,無法寫 他的好友tt正忙著在b站看貓片,另一位好友瑞神正忙...
Week9 A 目錄管理器
咕咕東的雪梨電腦的作業系統在上個月受到宇宙射線的影響,時不時發生故障,他受不了了,想要寫乙個高效易用零bug的作業系統 這工程量太大了,所以他定了乙個小目標,從實現乙個目錄管理器開始。前些日子,東東的電腦終於因為過度收到宇宙射線的影響而宕機,無法寫 他的好友tt正忙著在b站看貓片,另一位好友瑞神正忙...