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测试