Chinaunix首页 | 论坛 | 博客
  • 博客访问: 6624563
  • 博文数量: 227
  • 博客积分: 10047
  • 博客等级: 上将
  • 技术积分: 6678
  • 用 户 组: 普通用户
  • 注册时间: 2006-07-11 10:33
个人简介

网上的蜘蛛

文章分类

全部博文(227)

文章存档

2010年(19)

2009年(29)

2008年(179)

分类:

2009-04-17 21:07:34

呵呵,项目的第一个阶段今天终于可以结束了。奋斗了好几个月,终于可以让自己喘口气。


先不说太多,能比较顺利的结束,还要说说一个算法,我们在比对的结果中得到了很 多数值,可是我们要在这些数值中找到与正确解相邻的数值,然后去平均来作为下一步算法的输入参数。所以这个平均值对后面的计算结果尤其重要。之前我们尝试 过一些方法。比如全部先取平均,然后去除离平均值最大的数值,这样重复几次之后,留下的应该是比较理想的结果。可是事与愿违。在找同学商量之后,发现一下 的算法还不错。比如:你要在这些数值中,找到三个最相近的数,那么先把这些数值排序,然后每隔一个做减法取绝对值,然后在这些绝对值中取其最小值,那么这 个最小值对应的三个数就是最后的答案。

我测试了下:

package test;

public class FindCloseNumbers {
public static void main(String[] args){
    double nums[]= new double[10];
    //product numbers randomly

    for(int i=0;i<10;i++){
        nums[i] = Math.random()*32;
        System.out.println("):"+nums[i]);
    }
    //sort the array

    for(int j=0;j<nums.length;j++){
        for(int i=j+1;i<nums.length;i++){
            if(nums[j]>nums[i]){
                double temp = nums[i];
                nums[i]= nums[j];
                nums[j]=temp;
            }
        }
    }
    for(int i=0;i<10;i++){    
        System.out.println(")--(:"+nums[i]);
    }
    //check which three ones are close to each other

    int count = 0;
    double minerror = Math.abs(nums[0] -nums[3]);
    for(int k=1;k<nums.length-3;k++){
        double temperror = Math.abs(nums[k]-nums[k+3]);
        if(temperror < minerror){
            count = k;
        }
    }
    System.out.println("count(:"+count);
    //print four close numbers

    for(int p=count;p<count+3;p++){
        System.out.println("||:"+nums[p]);
    }
}
}

 结果还可以,用在项目上也比以前的效果好。虽然不能全部的问题,但是正确率提高了很多。在使用概率的算法之前,这个算是比较理想的了。多谢Day 。

 

突然觉得,我们之前写了那些程序,其实还有许多需要优化的,只不过老师要求从 Java转到C++,才没有去认真的考虑。首先,项目是分工的,我们两个人一起写,命名方式都五花八门,更不用说一看变量名,就知道作具体用途啦。所以一 旦在代码整合之后,发现很难调试。中间尝尽了不少苦头。所以在写C++之前,我们需要把需要的那些数据结构先定义好。避免后面又乱了。


还有就是,就是碰到不知道是程序代码问题,还是算法本身问题的时候。请不要想苍 蝇那样到处乱撞。要学会用某种方法来辅助调试,打印中间运行结果,如果需要的话,可以人工计算与电脑计算相结合,比较中间可能出现的问题。有时候这一招很 管用,至少可以让你知道是代码的错误还是算法本身的缺陷,因为如果比较复杂,事先可能考虑不周到,经验有限,所以只能使用这个比较笨的方法。

 

呵呵,又是周末,这学期课程增多,而且还是一些比较偏的课程,智能信息系统和计算机组成结构。够我折腾的。谁会SysemC的,可以帮忙指导下啊。还有很多琐碎的事情,哦,对了忘记了把TA作业带回来批改了,算了,也好,休息下先
阅读(6166) | 评论(0) | 转发(0) |
0

上一篇:关于程序测试小记

下一篇:煮面心得

给主人留下些什么吧!~~