三位数算法------精度不足导致判断错误

来源:互联网 发布:如何在淘宝上买学分 编辑:程序博客网 时间:2024/04/27 09:11

三位数算法

问题:1-9分成三组,组成3个三位数,有多少个三位数符合1:2:3?

求解思路:穷举所有排列组合,做判断。

代码:

package 三位数排列组合成比例;public class ThreePai {public int[] tre = new int[9];public int count = 0;{for(int i = 0;i<tre.length;i++){tre[i] = i+1;}}public static void main(String[] args) {ThreePai tp = new ThreePai();tp.initMain();}public void initMain(){permutation(tre,0,tre.length);}public void permutation(int a[],int m,int n){if( m < n - 1 ){permutation(a,m+1,n);for(int i = m + 1;i < n;i++){int t = a[m];a[m] = a[i];a[i] = t;permutation(a,m+1,n);t = a[m];a[m] = a[i];a[i] = t;}}else{judge(a);}}public void judge(int[] a){double one = a[0]*100 + a[1]*10 + a[2];double two = a[3]*100 + a[4]*10 + a[5];double three = a[6]*100 + a[7]*10 + a[8];if( (two/one) == 2 && (three/one) == 3 ){System.out.println((int)one+" "+(int)two+" "+(int)three);}}}

第一次发生了判断错误,错误原因是int基本类型精度不足,错误如下:


后来换成了double基本数据类型,成功求解所有答案:


3 0
原创粉丝点击