您的位置:首页 > 其它

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

2016-04-15 11:08 423 查看
三位数算法

问题: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基本数据类型,成功求解所有答案:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: