本文主要是介绍12.蓝桥杯之填算式,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
看这个算式:
☆☆☆ + ☆☆☆ = ☆☆☆
如果每个五角星代表 1 ~ 9 的不同的数字。
这个算式有多少种可能的正确填写方法?
173 + 286 = 459
295 + 173 = 468
173 + 295 = 468
183 + 492 = 675
以上都是正确的填写法!
注意:
111 + 222 = 333 是错误的填写法!
因为每个数字必须是不同的!
也就是说:1~9中的所有数字,每个必须出现且仅出现一次!
注意:
不包括数字“0”!
注意:
满足加法交换率的式子算两种不同的答案。
所以答案肯定是个偶数!
注意:
只要求计算不同的填法的数目
不要求列出所有填写法
package exe11_15;public class Exe12 {static int count = 0;public static void main(String[] args) {int number[] = new int[9];for (int i = 0; i < number.length; i++) {number[i] = i+1;}dfs(number,0);System.out.println(count);}private static void dfs(int[] number, int begin) {if (begin>=number.length) {check(number);return ;}for (int i = begin; i < number.length; i++) {swap(number,begin,i);dfs(number, begin+1);swap(number, begin, i);}}private static void swap(int[] number, int begin, int i) {int temp = number[begin];number[begin] = number[i];number[i] = temp;}private static void check(int[] number) {int left = multiply(number,0,2);int center = multiply(number,3,5);int right = multiply(number,6,8);if (left+center==right) {System.out.println(left+"+"+center+"="+right);count++;}}private static int multiply(int[] number, int begin, int end) {int sum = 0;for (int i = begin; i <= end; i++) {sum = sum*10+number[i];}return sum;}}
支付宝扫红包,让我能够买杯咖啡,继续创作,谢谢大家!
这篇关于12.蓝桥杯之填算式的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!