数学上的组合计算法- public class Zuhe2
- {
- public static void main(String[] args)
- {
- String s = "12345";
- //这里是要用到的所有数组成的一个字符串,其它字符同样适用
- char[] c = s.toCharArray();
- zuhe(c,c.length,0);
- System.out.println("可能的组合数:"+kk);
- }
- static int kk=0;
- private static void zuhe(char[] array, int n, int k)
- {
- if (n == k)
- {
- if(array[1]!='5')
- {
- //5不在千位上
- String str = new String(array);
- if(str.indexOf("23")<0&&str.indexOf("32")<0)
- {
- //2,3不能连续出现
- System.out.println(str);
- ++kk;
- }
- }
- }
- else
- {
- for (int i = k; i < n; i++)
- {
- swap(array, k, i);
- zuhe(array, n, k + 1);
- swap(array, i, k);
- }
- }
- }
- private static void swap(char[] a, int n, int k)
- {
- char temp = a[n];
- a[n] = a[k];
- a[k] = temp;
- }
- }
复制代码 老实说,组合算法我也看不懂 |