算法java描述
导航
BlogJava
首页
新随笔
联系
聚合
管理
<
2009年7月
>
日
一
二
三
四
五
六
28
29
30
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
7
8
统计
随笔 - 3
文章 - 0
评论 - 4
引用 - 0
常用链接
我的随笔
我的评论
我的参与
最新评论
留言簿
给我留言
查看公开留言
查看私人留言
随笔分类
(3)
算法(3)
(rss)
随笔档案
(3)
2009年7月 (3)
文章分类
算法
(rss)
搜索
最新评论
1. re: 文本中找最长的回文字符串
评论内容较长,点击标题查看
--lanxiazhi
2. re: 文本中找最长的回文字符串
描述下算法,写个伪代码就可以了。
--sunnycare
3. re: 文本中找最长的回文字符串
没看懂,要实现什么效果。
写个输入和输出来看看
--john locke
4. re: 文本中找最长的回文字符串
学习了!
--99读书人
阅读排行榜
1. 文本中找最长的回文字符串(1884)
2. java基数转换(1233)
3. 一个有限制的排列题(367)
评论排行榜
1. 文本中找最长的回文字符串(4)
2. 一个有限制的排列题(0)
3. java基数转换(0)
一个有限制的排列题
看到
http://www.blogjava.net/nokiaguy/archive/2008/05/10/199647.html
出了一道java算法题,给出一个解法如下:
1
/**/
/*
摘要: 原题如下:用1、2、2、3、4、5这六个数字,用java写一个程序,打印出所有不同的排列,如:512234、412345等,要求:"4"不能在第三位,"3"与"5"不能相连。
*/
2
class
javatest
3
{
4
public
static
void
main(String[] args)
5
{
6
StringBuilder sb
=
new
StringBuilder(
6
);
7
sb.append(
"
22
"
);
//
初始化为两个2,以后的字符都是往空里插,不会重复
8
int
count
=
0
;
9
for
(
int
i
=
0
;i
<
sb.length()
+
1
;i
++
)
10
{
11
sb.insert(i,
"
1
"
);
//
插入1
12
for
(
int
j
=
0
;j
<
sb.length()
+
1
;j
++
)
//
注意有lenght()+1个空
13
{
14
sb.insert(j,
"
3
"
);
15
for
(
int
k
=
0
;k
<
sb.length()
+
1
;k
++
)
16
{
17
sb.insert(k,
"
4
"
);
18
for
(
int
m
=
0
;m
<
sb.length()
+
1
;m
++
)
19
{
20
sb.insert(m,
"
5
"
);
21
if
(valid(sb))
22
{
23
System.out.println(sb);
24
count
++
;
25
}
26
sb.deleteCharAt(m);
27
}
28
sb.deleteCharAt(k);
29
}
30
sb.deleteCharAt(j);
31
}
32
sb.deleteCharAt(i);
//
删除当前位置,等下一个位置插入
33
}
34
System.out.println(count);
35
}
36
static
boolean
valid(StringBuilder sb)
37
{
38
if
(sb.charAt(
2
)
==
'
4
'
||
sb.indexOf(
"
35
"
)
>=
0
||
sb.indexOf(
"
53
"
)
>=
0
)
39
return
false
;
40
return
true
;
41
}
42
43
}
44
posted on 2009-07-27 20:02
lanxiazhi
阅读(367)
评论(0)
编辑
收藏
所属分类:
算法
新用户注册
刷新评论列表
只有注册用户
登录
后才能发表评论。
网站导航:
博客园
IT新闻
知识库
C++博客
博问
管理
相关文章:
一个有限制的排列题
java基数转换
文本中找最长的回文字符串