吸血鬼数字算法—Java
2015-04-28 20:15
375 查看
有关吸血鬼数字算法的问题我找了很多, 发现大概有三种思路,当然不是具体的实现, 如下:
1. "笨方法1:“
代码如下:
这里用的的是穷举法, 比较次数很多。。。。。
2.”笨方法2“
这次可以带过来写,代码如下:
3.我目前已知的最好的方法
代码如下:
这里的比较次数最少。。。可以参考:
点击打开链接
点击打开链接
1. "笨方法1:“
代码如下:
public class getBloodGostNumber { public static void printBloodGostNumber() { int a, b, c, d; for (int i = 1001; i < 10000; i++) { a = i / 1000; b = i % 1000 / 100; c = i % 100 / 10; d = i % 10; if (i == (a * 10 + b) * (c * 10 + d)) { System.out.println("" + i + " = " + (a * 10 + b) + " * " + (c * 10 + d)); } else if (i == (a * 10 + b) * (d * 10 + c)) { System.out.println("" + i + " = " + (a * 10 + b) + " * " + (d * 10 + c)); } else if (i == (b * 10 + a) * (c * 10 + d)) { System.out.println("" + i + " = " + (b * 10 + a) + " * " + (c * 10 + d)); } else if (i == (b * 10 + a) * (d * 10 + c)) { System.out.println("" + i + " = " + (b * 10 + a) + " * " + (d * 10 + c)); } else if (i == (a * 10 + c) * (b * 10 + d)) { System.out.println("" + i + " = " + (a * 10 + c) + " * " + (b * 10 + d)); } else if (i == (a * 10 + c) * (d * 10 + b)) { System.out.println("" + i + " = " + (a * 10 + c) + " * " + (d * 10 + b)); } else if (i == (c * 10 + a) * (b * 10 + d)) { System.out.println("" + i + " = " + (c * 10 + a) + " * " + (b * 10 + d)); } else if (i == (c * 10 + a) * (d * 10 + b)) { System.out.println("" + i + " = " + (c * 10 + a) + " * " + (d * 10 + b)); } else if (i == (a * 10 + c) * (b * 10 + d)) { System.out.println("" + i + " = " + (a * 10 + c) + " * " + (b * 10 + d)); } else if (i == (a * 10 + d) * (b * 10 + c)) { System.out.println("" + i + " = " + (a * 10 + d) + " * " + (b * 10 + c)); } else if (i == (a * 10 + d) * (c * 10 + b)) { System.out.println("" + i + " = " + (a * 10 + d) + " * " + (c * 10 + b)); } else if (i == (d * 10 + a) * (b * 10 + c)) { System.out.println("" + i + " = " + (d * 10 + a) + " * " + (b * 10 + c)); } else if (i == (d * 10 + a) * (c * 10 + b)) { System.out.println("" + i + " = " + (d * 10 + a) + " * " + (c * 10 + b)); } } } public static void main(String[] args) { printBloodGostNumber(); } }
这里用的的是穷举法, 比较次数很多。。。。。
2.”笨方法2“
这次可以带过来写,代码如下:
import java.util.Arrays; public class getBloodGostNumberAno { public static void printBloodGostNumber() { int ret; int[] a = new int[4]; int[] b = new int[4]; for (int i = 10; i < 100; i++) { for (int j = 10; j < 100; j++) { ret = i * j; if (ret > 9999) continue; a[0] = ret / 1000; a[1] = ret % 1000 / 100; a[2] = ret % 100 / 10; a[3] = ret % 10; b[0] = i / 10; b[1] = i % 10; b[2] = j / 10; b[3] = j % 10; if (b[1] == 0 && b[3] == 0) continue; Arrays.sort(a); Arrays.sort(b); //System.out.println(Arrays.equals(a, b)); if (Arrays.equals(a, b)) { System.out.println("" + ret + " = " + i + " * " + j); } } } } public static void main(String[] args) { printBloodGostNumber(); } }当然,具体实现时还可以用容器之类的。。。
3.我目前已知的最好的方法
代码如下:
import java.util.Arrays; public class getBloodGostNumberAno2 { public static void printBloodGostNumber() { int ret; int from, to; int count = 0; int[] a = new int[4]; int[] b = new int[4]; for (int i = 10; i < 100; i++) { from = Math.max(1000 / i, i + 1); to = Math.min(9999 / i, 99); for (int j = from; j <= to; j++) { ret = i * j; if (ret % 100 == 0 || (ret -i - j) % 9 != 0) { continue; } a[0] = ret / 1000; a[1] = ret % 1000 / 100; a[2] = ret % 100 / 10; a[3] = ret % 10; b[0] = i / 10; b[1] = i % 10; b[2] = j / 10; b[3] = j % 10; count++; Arrays.sort(a); Arrays.sort(b); //System.out.println(Arrays.equals(a, b)); if (Arrays.equals(a, b)) { System.out.println("" + ret + " = " + i + " * " + j); } } } System.out.println(count); } public static void main(String[] args) { printBloodGostNumber(); } }
这里的比较次数最少。。。可以参考:
点击打开链接
点击打开链接
相关文章推荐
- java求吸血鬼数字算法 。。。
- java求吸血鬼数字算法 。。。
- Think in java中关于吸血鬼数字问题的算法
- JAVA实现的吸血鬼数字算法,高效率版本(已有网友给出算法说明)
- thnk in java上有趣的算法题1 吸血鬼数字
- JAVA实现的吸血鬼数字算法,高效率版本(已有网友给出算法说明)
- java实现 阿拉伯数字转换为汉字数字 算法
- 吸血鬼数字的java编程&nbsp;java编程思…
- Java 找出四位数的所有吸血鬼数字 基础代码实例
- 《Thinking in Java》习题——吸血鬼数字
- JAVA找出4位数的所有吸血鬼数字
- 【java】吸血鬼数字
- 两种Java数字交换算法哪个快。
- 一道算法题目 java中的数字字符串和数组的算法
- Java 找出四位数的所有吸血鬼数字 基础代码实例
- java实现吸血鬼数字的三个想法(附官方答案)
- java经典算法_008求s=a+aa+aaa+aaaa+aa...a的值,其中a是一个数字
- Java 吸血鬼数字
- Java 简单算法--打印回文数字
- 吸血鬼数字算法