A pull request from cx (#164)
* The original code did not consider the exit condition when the stations cannot perfectly cover the states_needed. * The code in 09_dynamic_programming/python/01_longest_common_subsequence.py is completed. And the 02_longest_common_substring.py is added.
This commit is contained in:
@@ -10,16 +10,23 @@ stations["kfive"] = set(["ca", "az"])
|
|||||||
|
|
||||||
final_stations = set()
|
final_stations = set()
|
||||||
|
|
||||||
while states_needed:
|
def my_set_covering(states_needed, stations):
|
||||||
best_station = None
|
final_stations = set()
|
||||||
states_covered = set()
|
#while states_needed is not None: 这个不对,Set()而不是None
|
||||||
for station, states_for_station in stations.items():
|
while states_needed:
|
||||||
covered = states_needed & states_for_station
|
best_station = None
|
||||||
if len(covered) > len(states_covered):
|
states_covered = set()
|
||||||
best_station = station
|
for station, states_for_station in stations.items():
|
||||||
states_covered = covered
|
covered = states_needed & states_for_station
|
||||||
|
if len(covered) > len(states_covered) and station not in final_stations:
|
||||||
|
best_station = station
|
||||||
|
states_covered = covered
|
||||||
|
if best_station is not None:
|
||||||
|
states_needed -= states_covered
|
||||||
|
final_stations.add(best_station)
|
||||||
|
stations.pop(best_station)
|
||||||
|
else:
|
||||||
|
return None
|
||||||
|
return final_stations
|
||||||
|
|
||||||
states_needed -= states_covered
|
print(my_set_covering(states_needed, stations))
|
||||||
final_stations.add(best_station)
|
|
||||||
|
|
||||||
print(final_stations)
|
|
||||||
|
|||||||
@@ -1,6 +1,13 @@
|
|||||||
if word_a[i] == word_b[j]:
|
dp_table_blue = ["b", "l", "u", "e"]
|
||||||
# The letters match.
|
dp_table_clues = ["c", "l", "u", "e", "s"]
|
||||||
cell[i][j] = cell[i-1][j-1] + 1
|
dp_table = [[0 for i in range(len(dp_table_blue))] for i in range(len(dp_table_clues))] # (5,4)
|
||||||
else:
|
print(dp_table)
|
||||||
# The letters don't match.
|
|
||||||
cell[i][j] = max(cell[i-1][j], cell[i][j-1])
|
for i in range(0, len(dp_table_blue)):
|
||||||
|
for j in range(0, len(dp_table_clues)):
|
||||||
|
if dp_table_clues[j] == dp_table_blue[i]:
|
||||||
|
dp_table[j][i] = dp_table[j-1][i-1] + 1
|
||||||
|
else:
|
||||||
|
dp_table[j][i] = max(dp_table[j-1][i], dp_table[j][i-1])
|
||||||
|
|
||||||
|
print(dp_table)
|
||||||
|
|||||||
11
09_dynamic_programming/python/02_longest_common_substring.py
Normal file
11
09_dynamic_programming/python/02_longest_common_substring.py
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
dp_table_blue = ["b", "l", "u", "e"]
|
||||||
|
dp_table_clues = ["c", "l", "u", "e", "s"]
|
||||||
|
dp_table = [[0 for i in range(len(dp_table_blue))] for i in range(len(dp_table_clues))] # (5,4)
|
||||||
|
print(dp_table)
|
||||||
|
|
||||||
|
for i in range(0, len(dp_table_blue)):
|
||||||
|
for j in range(0, len(dp_table_clues)):
|
||||||
|
if dp_table_clues[j] == dp_table_blue[i]:
|
||||||
|
dp_table[i][j] = dp_table[i-1][i-1] + 1
|
||||||
|
|
||||||
|
print(dp_table)
|
||||||
Reference in New Issue
Block a user