HooLee
If you believe, you can!
C++博客
首页
新随笔
新文章
联系
管理
poj1057FILE MAPPING
题意:按照指定格式输出目录树。要求同一层下的file要按文件名排序。
解题步骤:
1.用deep记录当前目录深度,遇到dir,deep++,遇到] deep--
2.用strlist记录所有未输出的file,用栈stack记录当前目录下的file表的开始下标。遇到]或者*则输出当前目录下的所有file,并从strlist中删除,相应的下标出栈(stack).
代码
1
import
java.io.
*
;
2
import
java.util.
*
;
3
class
Main
4
{
5
public
static
ArrayList
<
Integer
>
stack
=
new
ArrayList
<
Integer
>
();
6
public
static
ArrayList
<
String
>
strlist
=
new
ArrayList
<
String
>
();
7
public
static
void
main(String[] args)
8
{
9
10
Scanner sc
=
new
Scanner(System.in);
11
String strt
=
sc.nextLine();
12
13
int
deep
=
0
;
14
int
seq
=
1
;
15
boolean
newdataset
=
true
;
16
while
(
!
strt.equals(
"
#
"
))
17
{
18
if
(newdataset)
19
{
20
if
(seq
!=
1
)
21
System.out.println();
22
System.out.println(
"
DATA SET
"
+
seq
++
+
"
:
"
);
23
System.out.println(
"
ROOT
"
);
24
25
push(
0
);
//
push()
26
newdataset
=
false
;
27
}
28
if
(strt.equals(
"
*
"
))
29
{
30
outFileStrs(deep);
31
deep
=
0
;
32
strlist.clear();
33
stack.clear();
34
newdataset
=
true
;
35
36
}
37
else
if
(strt.startsWith(
"
d
"
))
38
{
39
40
deep
++
;
41
push(strlist.size());
//
push()
42
43
outSpace(deep);
44
System.out.println(strt);
45
46
}
47
else
if
(strt.startsWith(
"
f
"
))
48
{
49
strlist.add(strt);
50
}
51
else
if
(strt.equals(
"
]
"
))
52
{
53
outFileStrs(deep);
54
deep
--
;
55
}
56
57
strt
=
sc.nextLine();
58
}
59
}
60
public
static
void
outSpace(
int
deep)
61
{
62
if
(deep
==
0
)
63
return
;
64
for
(
int
i
=
0
; i
<
deep; i
++
)
65
{
66
System.out.print(
"
|
"
);
67
}
68
}
69
public
static
void
outFileStrs(
int
deep)
70
{
71
TreeSet
<
String
>
tset
=
new
TreeSet
<
String
>
();
72
int
p
=
pop();
73
int
size
=
strlist.size();
74
for
(
int
i
=
p; i
<
strlist.size(); i
++
)
75
{
76
tset.add(strlist.get(i));
77
78
}
79
for
(
int
i
=
size
-
1
; i
>=
p; i
--
)
80
{
81
strlist.remove(i);
82
}
83
for
(String str : tset)
84
{
85
outSpace(deep);
86
System.out.println(str);
87
}
88
89
}
90
public
static
void
push(Integer n)
91
{
92
stack.add(n);
93
}
94
public
static
Integer pop()
95
{
96
int
size
=
stack.size();
97
Integer n
=
stack.get(size
-
1
);
98
stack.remove(size
-
1
);
99
return
n;
100
}
101
}
102
posted on 2013-04-14 22:30
小鼠标
阅读(304)
评论(0)
编辑
收藏
引用
所属分类:
Java基础练习
只有注册用户
登录
后才能发表评论。
【推荐】100%开源!大型工业跨平台软件C++源码提供,建模,组态!
相关文章:
编辑距离
闰年判断
正则表达式简单笔记
Excel格式地址转换
一道模拟题——机器人行走距离计算
排列练习2
素数筛法
排列组合练习
排列组合
poj1068Parencodings
网站导航:
博客园
IT新闻
BlogJava
知识库
博问
管理
<
2013年3月
>
日
一
二
三
四
五
六
24
25
26
27
28
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
1
2
3
4
5
6
常用链接
我的随笔
我的评论
我参与的随笔
随笔分类
(111)
C语言(3)
DP(9)
Java笔记(1)
Java基础练习(25)
安卓(1)
本科毕设(1)
博弈(1)
大数(7)
回溯(2)
排序(10)
暑期培训周赛(3)
数据结构(7)
数论(1)
水题(8)
图论(24)
网选训练(8)
随笔档案
(127)
2014年3月 (1)
2013年7月 (10)
2013年5月 (1)
2013年4月 (11)
2013年3月 (8)
2012年10月 (1)
2012年9月 (12)
2012年8月 (38)
2012年7月 (14)
2012年6月 (2)
2012年5月 (8)
2012年4月 (6)
2012年3月 (6)
2012年2月 (4)
2011年8月 (5)
friends
陈钢
大鹏
党姐
焦林枫
汪涛
小白学长
媛姐
媛姐csdn
最新评论
1. re: 线段树
是这个样子的,所以在OJ有时候“卡住”了也不要太灰心,没准真的不是自己的原因呢。
加油,祝你好运啦!
--小鼠标
2. re: 线段树
对于编程竞赛来说,Java所需时间一般为C/C++的两倍。合理的竞赛给Java的时间限制是给C/C++的两倍。
--伤心的笔
3. re: poj1273--网络流
过来看看你。
--achiberx
4. re: (转)ubuntu11.10无法启动无线网络的解决方法
膜拜大神。。查了一个下午资料终于在这里解决了问题。。神牛说的区域赛难道是ACM区域赛。。?
--Hang
5. re: 快速排序、线性时间选择
博主,谢谢你的文章。你的方法可以很好的处理分区基准在数组中重复的情况,书上的方法遇到这种输入会堆栈溢出。书上给出了解释但给的方法貌似不简洁。
--lsxqw2004
阅读排行榜
1. 单调队列(5480)
2. Linux select()函数使用(3954)
3. 快速排序、线性时间选择(3619)
4. poj3468--绝对经典的线段树题(3611)
5. 优先队列--堆实现(3291)