程序一:
import java.util.Date;
import java.util.HashSet;
import java.util.Set;
public class WhatAShow {
/**
* @param args
*/
public static void main(String[] args) {
int count = 0;
Set nums = null;
long start = new Date().getTime();
for(int w=1; w<=9; w++) {
for(int h=0; h<=9; h++) {
if(h != w) {
for(int a=0; a<=9; a++) {
if(a != w && a != h) {
for(int t=0; t<=9; t++) {
if(t != w && t != h && t != a) {
for(int s=0; s<=9; s++) {
if(s != w && s != h && s != a && s != t) {
for(int o=0; o<=9; o++) {
if(o != w && o != h && o != a && o != t && o != s) {
nums = new HashSet();
if(!nums.contains(w) && w != 0) {
nums.add(w);
if(!nums.contains(h)) {
nums.add(h);
if(!nums.contains(a)) {
nums.add(a);
if(!nums.contains(t)) {
nums.add(t);
if(!nums.contains(s)) {
nums.add(s);
if(!nums.contains(o)) {
nums.add(o);
if((1000*w + 100*h + 10*a + t) * a == (1000*s + 100*h + 10*o + w)) {
System.out.println("WHAT = " + w + h + a + t);
System.out.println("x A = " + a);
System.out.println("---------------");
System.out.println("SHOW = " + s + h + o + w);
System.out.println("W代表:" + w);
count++;
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
long end = new Date().getTime();
System.out.println("运行时间:" + (end - start)); //for循环的运行时间
System.out.println("总数:" + count);
}
}
运行结果:
WHAT = 4027
x A = 2
---------------
SHOW = 8054
W代表:4
运行时间:94
总数:1
程序二(不用set做排重):
import java.util.Date;
public class WhatAShow {
/**
* @param args
*/
public static void main(String[] args) {
int count = 0;
long start = new Date().getTime();
for(int w=1; w<=9; w++) {
for(int h=0; h<=9; h++) {
if(h != w) {
for(int a=0; a<=9; a++) {
if(a != w && a != h) {
for(int t=0; t<=9; t++) {
if(t != w && t != h && t != a) {
for(int s=0; s<=9; s++) {
if(s != w && s != h && s != a && s != t) {
for(int o=0; o<=9; o++) {
if(o != w && o != h && o != a && o != t && o != s) {
if((1000*w + 100*h + 10*a + t) * a == (1000*s + 100*h + 10*o + w)) {
System.out.println("WHAT = " + w + h + a + t);
System.out.println("x A = " + a);
System.out.println("---------------");
System.out.println("SHOW = " + s + h + o + w);
System.out.println("W代表:" + w);
count++;
}
}
}
}
}
}
}
}
}
}
}
}
long end = new Date().getTime();
System.out.println("运行时间:" + (end - start)); //for循环的运行时间
System.out.println("总数:" + count);
}
}
运行结果:
WHAT = 4027
x A = 2
---------------
SHOW = 8054
W代表:4
运行时间:6
总数:1
速度快好几倍,期待更优化的算法!