public class PermutationSelfInvoke {
public static String[] text = { "a", "b","C","D"}; public static void main(String[] args) {
permutation(text, 0, text.length);
System.exit(0);
} public static void permutation(String[] a, int m, int n) {
int i;
String t;
if (m < n - 1) {
permutation(a, m + 1, n);
for (i = m + 1; i < n; i++) {
t = a[m];
a[m] = a[i];
a[i] = t;
permutation(a, m + 1, n);
t = a[m];
a[m] = a[i];
a[i] = t;
}
} else {
printResult(a);
}
} public static void printResult(String[] text) {
for (int i = 0; i < text.length; i++) {
System.out.print(text[i]);
}
System.out.println();
}
}
//这段程序,看不懂,求高手进行注释,,或者举出例子 告诉我排列怎么去?还望各位大释多多帮忙
解决方案 »
- fedora 10 下rxtx 无法打开moxa卡cp-168u串口/dev/ttyM0 跪求救命!!
- 这段代码的作用是什么呢?
- 自己写的interface应该怎么保存才能被调用到呢?
- 为什么我的Timer不能停止呢?
- java 连接oracle中的问题
- 路过的牛人踩一脚!!!
- 在JAVA中如何将一个网页文件读到一个String变量中?
- help: 我安装jubilder7后,tool-》..->display改变字体,结果是?????
- Java里面怎么调用Com程序,望高手指教
- 哪儿有JNI的资料?
- 关于 repaint(),thread.sleep 的问题
- 程序加入SQL数据库包后,打包无法运行。
程序流程怎样的,可以在程序里面设置断点,设置a,m,n的初始值,一步一步得走着看
//表示将m到n的字符进行全排序
public static void permutation(String[] a, int m, int n) {
int i;
String t;
if (m < n - 1) {
//表示将m+1到n的字符进行全排序
permutation(a, m + 1, n);
for (i = m + 1; i < n; i++) {
//把第m个字符与后边的字符进行交换
t = a[m];
a[m] = a[i];
a[i] = t;
//交换以后,把m+1与后边的到n的字符进行全排序
permutation(a, m + 1, n);
//换回来
t = a[m];
a[m] = a[i];
a[i] = t;
}
} else {
//输出整个交换后的结果
printResult(a);
}
}
/**
* 假设是ab
* 由于m<n-1
* 那么对b进行全排序
* 参数字符串为b,在递归中,由于m=n-1,所以输出ab,返回
* 然后把ab进行交换,参数中字符串为a,在递归中,由于m=n-1,所以输出ba,返回
*/