编程请教,可追加200分!
来源:百度知道 编辑:UC知道 时间:2024/04/28 05:39:39
题目如上,现在要编程求解,问用什么算法,时间和空间的复杂度如何计算?
重要的是算法,和算法的优劣分析!
望大家指点!
楼上的程序是错误的。主要是约束条件不对。我简单地采用分支限界法,并加上一个栈来存储已经得到的答案。
因为不想写栈结构,所以使用java语言。一共有3个类Test、Pos和Max。代码如下:
public class Pos {
int row;
int col;
int val;
Pos (int row, int col) {
this (row, col, -1);
}
Pos (int row, int col, int val) {
this.row = row;
this.col = col;
this.val = val;
}
}
********************************************************
import java.lang.*;
import java.util.Stack;
public class Max {
int m[][];
Stack stack;
Max (int max[][]) {
this.m = new int[max.length][max[0].length];
for (int i=0; i<max[0].length; i++)
for (int j=0; j<max[i].length; j++)
this.m[i][j] = max[i][j];
this.stack = new Stack();
}
public void fill () {
boolean has_zero = is_find_zero();
while (has_zero) {
Pos p = (Pos)this.stack.pop();
while (p.val < 10) {
if (