站内搜索: 请输入搜索关键词

当前页面: 开发资料首页J2SE 专题这个递归算法是什么意思呢

这个递归算法是什么意思呢

摘要: 这个递归算法是什么意思呢


用1、2、2、3、4、5这六个数字,用java写一个main函数,打印出所有不同的排列,如:512234、412345等,要求:"4"不能在第三位,"3"与"5"不能相连。

import java.util.Vector;

public class Assemble {

public void getAssemble(String result, Vector source) {
if ((result.length() == 3) && (result.charAt(2) == '4'))
return;

if (result.endsWith("35") || result.endsWith("53"))
return;

if (result.length() == 6) {
System.out.println(result);
return;
}

for (int i = 0; i < source.size(); i++) {
Vector t = (Vector) source.clone();
t.remove(i);
getAssemble(result + source.get(i), t);
}
}

public static void main(String[] args) {

Assemble as = new Assemble();
Vector v = new Vector();
v.add('1');
v.add('2');
v.add('2');
v.add('3');
v.add('4');
v.add('5');
as.getAssemble("", v);

System.out.println("Done");
}

}
这个程序写的很短,但看不懂, 能不能解释一下


上面这个程序用的是BFS(bread first search)广度优先搜索,lz可以随便找一本数据结构的书来看,应该都有的,也可以到网上找到资料看看,相信看懂应该不成问题的.
至于上面这个程序,按照题意严格来说应该是不对的,因为BFS是需要判重的,上面这个程序没有判重,导致有多个相同的排序出现.


这个问题怎么又出来了?前几天写过,你搜索下了


↑返回目录
前一篇: 如何用java监听Modem读取来电显示号码!!
后一篇: 逆波兰式求值.请求高手帮助!!!!!!!!!!!!!!!!