Homework-09 二维数组动态显示

思路

主要是把计算的函数由一次跑完全部改成一次一步

主要是把一个3重for循环改为能一步一次的实现

 

    public int nstep(int n){
        
        while((n--)!=0){    //n步长
//        for(int i=1; i<=row; i++)
//            for(int j=i;j<=row;j++){
//                for(int k=1; k<=line; k++)
        //上面for循环的 if实现
            lineD++;
            if(lineD > line){
                this.rowNumR++;
                if(this.rowNumR > row){
                    rowNumL++;
                    if(rowNumL > row){
                        System.out.println(columnsMax);
                        return -1;
                    }
                    rowNumR = 1;
                }
                lineD = 1;
                sum = -1;
            }
            oneStep( rowNumL, rowNumR, lineD);
        }
        System.out.println(rowNumL+" "+rowNumR+" "+lineD);
        return 0;
    }
    
    void oneStep(int i,int j, int k){    //实际算法的逻辑
        if(sum<0){
            prex1 = k;
            sum=pre[k][j] - pre[k][i-1];
        }
        else
            sum+=pre[k][j] - pre[k][i-1];
        if(columnsMax < sum){
            columnsMax = sum;
            x1=prex1;
            y1=i;
            x2=k;
            y2=j;
            
            for(i=1; i<=this.row; i++)     //标记数组清零
                for(j=1; j<=this.line; j++){
                    this.answer[i][j] = 0;
                }
            for(i=x1; i<=x2; i++)        //标记数组置位 
                for(j=y1; j<=y2; j++){
                    this.answer[i][j] = 1;
                }
        }

 

 

我是通过网页展现

由于不太会javascript

 

我的解决方法是

 

java Applet小程序      界面 和 算法

html 更少了,就是框架

 

运行截图,还是比较挫的。有待完善

 

 

 

单元测试

不太熟悉

junit测试

posted @ 2013-12-09 02:35  月月鸟在前进  阅读(246)  评论(0编辑  收藏  举报