件名の説明:
方法の一つ:動的計画
クラスソリューション: DEF maximalSquare(自己、行列:リスト[リスト[STR]]) - > INT: なら ないマトリックス: リターン0 行 = LEN(行列) COL = LEN(行列[0]) DP = [0 用 _ 中範囲(COL + 1)] のための _ 中範囲(行+ 1 )] RES = 0 のための私に:範囲(行) のために、J における範囲(COL): もし行列[I] [J] == ' 1 ' : DP [I +1] [J + 1] =分(DP [I + 1] [j]は、DP [I]、[J]、DP [I] [ J + 1])+ 1つの RES = MAX(RES、DP [I + 1] [J + 1] ** 2 ) リターン RES
クラスソリューション: DEF maximalSquare(自己、行列:リスト[リスト[STR]]) - > INT: RES = 0 のための I における範囲(LEN(行列)) のために、J における範囲(LEN(行列[0])): 行列[I] [J] = INT(行列[I] [J]) 場合 iは== 0 または J == 0: RES = MAX(RES、行列[I] [J]) 続ける 場合行列[I] [ J] == 0:継続 行列[I] [J]=分(行列[I-1] [j]は、行列[I]、[J-1]、行列[I-1] [J-1])+ 1つの RES = MAX(RES、行列[I] [J] ) 戻り RES ** 2