7-3 凑算式Java

/*凑算式
    B     DEF
A+ --- + ------- = 10
    C     GHI   	 
这个算式中A~I代表1~9的数字,不同的字母代表不同的数字。
比如:
6+8/3+952/714 就是一种解法,
5+3/1+972/486 是另一种解法。
这个算式一共有多少种解法?29*/
//1-9不同数字,则立马全排列
//全排列加check
//注意一点是有一个测试用例不能整除,check条件中要加通分之后能整除,
public class Main {
	static int ans=0;
	public static void main(String[] args) {
		int arr[]= {1,2,3,4,5,6,7,8,9};
		f(arr,0);
		System.out.println(ans);
	}

	private static void f(int[] arr, int k) {
		if(k==9) {
			if(check(arr))
			ans++;
		}
		for(int i=k;i<9;i++) {
				{
				int t=arr[i];
				arr[i]=arr[k];
				arr[k]=t;
				}
				f(arr,k+1);
				{
				int t=arr[i];
				arr[i]=arr[k];
				arr[k]=t;
				}
			}
		}

	private static boolean check(int[] arr) {
		int x=arr[3]*100+arr[4]*10+arr[5];
		int y=arr[6]*100+arr[7]*10+arr[8];
		//通分之后能整除并且最后相加之和等于10
		if((arr[1]*y+arr[2]*x)%(y*arr[2])==0&&arr[0]+(arr[1]*y+arr[2]*x)/(y*arr[2])==10)
		return true;
		return false;
	}
}

猜你喜欢

转载自blog.csdn.net/qq_41629684/article/details/88662205
7-3