今日在书上看到了这个题目觉得挺有意思,算法很巧妙,拿来和大家分享。
- public class Vampire {
- public static void main(String[] arg){
- String[] ar_str1,ar_str2;
- int sum=0;
- //双重循环穷举
- for(int i=10;i <100;i++){
- //j=i+1避免重复
- for(int j=i+1;j <100;j++){
- int i_val=i*j;
- if(i_val <1000 ¦ ¦i_val>9999)continue;//积小于1000或大于9999排除,继续下一轮环
- ar_str1=String.valueOf(i_val).split("");
- ar_str2=(String.valueOf(i)+String.valueOf(j)).split("");
- java.util.Arrays.sort(ar_str1);
- java.util.Arrays.sort(ar_str2);
- if(java.util.Arrays.equals(ar_str1, ar_str2)){//排序后比较,为真则找到一组
- sum++;
- System.out.println("第"+sum+"组: "+i+"*"+j+"="+i_val);
- }
- }
- }
- System.out.println("共找到"+sum+"组吸血鬼数");
- }
- }
- 运行结果:
- C:/work>java Vampire
- 第1组: 15*93=1395
- 第2组: 21*60=1260
- 第3组: 21*87=1827
- 第4组: 27*81=2187
- 第5组: 30*51=1530
- 第6组: 35*41=1435
- 第7组: 80*86=6880
- 共找到7组吸血鬼数