1、标题:分机号
X老板脾气古怪,他们公司的电话分机号都是3位数,老板规定,所有号码必须是降序排列,且不能有重复的数位。比如:
751,520,321 都满足要求,而,
766,918,201 就不符合要求。
现在请你计算一下,按照这样的规定,一共有多少个可用的3位分机号码?
请直接提交该数字,不要填写任何多余的内容。
-----------------------------
package lq2015_gs;
public class t1 {
	public static void main(String[] arg) {
		int ans = 0;	
		for(int i = 0; i <= 9; i++) {
			for(int j = 0; j < i; j++) {
				for(int k = 0; k < j; k++) {
					ans++;
					System.out.println(i + "" + j + "" + k);
				}
			}
		}
		System.out.println(ans);
	}
}
/*
ans = 120
*/
2、标题:五星填数
如【图1.png】的五星图案节点填上数字:1~12,除去7和11。
要求每条直线上数字和相等。
如图就是恰当的填法。
请你利用计算机搜索所有可能的填法有多少种。
注意:旋转或镜像后相同的算同一种填法。
请提交表示方案数目的整数,不要填写任何其它内容。

-----------------------------------------------
思路:全排列暴力
package lq2015_gs;
public class t2 {
	public static int[] data = {1,2,3,4,5,6,8,9,10,12};
	public static int[] data2 = {1,2,3,4,5,6,8,9,10,12};
	public static int[] vist = new int[10];
	public static int ans = 0;
	public static int N = 10;
	
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		 
		dfs(0);
		
		System.out.println("ans = " + ans);
		System.out.println("ans/10 = " + ans / 10);
	}
	public static void dfs(int ct) {
		if(ct == N) {
			int[] a = new int[5];
			a[0] = data2[0] + data2[2] + data2[5] + data2[7];
			a[1] = data2[0] + data2[3] + data2[6] + data2[9];
			a[2] = data2[1] + data2[2] + data2[3] + data2[4];
			a[3] = data2[1] + data2[5] + data2[8] + data2[9];
			a[4] = data2[4] + data2[6] + data2[8] + data2[7];
			int f = 1;
			for(int i = 1; i < 5; i++) {
				if(a[i] != a[i - 1]) {
					f = 0;
					break;
				}
			}
			if(f == 1) {
				ans++;
				for(int i = 0; i < N; i++) {
					System.out.print(data2[i]);
				}
				System.out.println( "--");
			}
			return ;
		}
		for(int i = 0; i < N; i++) {
			if(vist[i] == 0) {
				vist[i] = 1;
				data2[ct] = data[i]; 
				dfs(ct + 1);
				vist[i] = 0;
			}
		}
	}
}
/*
	ans = 12;
*/
原文:https://www.cnblogs.com/zhumengdexiaobai/p/10897411.html