蓝桥杯-三羊献瑞

xiaoxiao2021-02-28  102

观察下面的加法算式:

祥 瑞 生 辉

+ 三 羊 献 瑞

三 羊 生 瑞 气

其中,相同的汉字代表相同的数字,不同的汉字代表不同的数字。

采用回溯法: 代码如下

public class Main1 { public static void main(String[] args) { int n = 8; visited = new boolean[10]; data = new int[10]; dfs(n, 0); } /* * 祥 瑞 生 辉 * 三 羊 献 瑞 * ------------------- * 三 羊 生 瑞 气 */ static boolean[] visited; static int[] data; private static boolean check(int[] data) { if(data[0]!=0 && data[4]!=0){ //因为祥和三是开头,因此数值不能为0 int sum1=data[0]*1000+data[1]*100+data[2]*10+data[3]; int sum2=data[4]*1000+data[5]*100+data[6]*10+data[1]; int sum3=data[4]*10000+data[5]*1000+data[2]*100+data[1]*10+data[7]; if(sum1+sum2==sum3){ return true; } } return false; } public static void dfs(int n, int k) { if(n==k && check(data)){ System.out.println(data[4]+""+data[5]+""+data[6]+""+data[1]); } // for(int i:data){ // System.out.print(i); // } // System.out.println(); for(int x=0;x<=9;x++){ if(!visited[x]){ visited[x]=true; data[k]=x; dfs(n,k+1); visited[x]=false; } } } } 结果: 10652
转载请注明原文地址: https://www.6miu.com/read-67111.html

最新回复(0)