Skip to content

Commit 06a890c

Browse files
authored
A pull request from cx (egonSchiele#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.
1 parent c029201 commit 06a890c

File tree

3 files changed

+43
-18
lines changed

3 files changed

+43
-18
lines changed

08_greedy_algorithms/python/01_set_covering.py

Lines changed: 19 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -10,16 +10,23 @@
1010

1111
final_stations = set()
1212

13-
while states_needed:
14-
best_station = None
15-
states_covered = set()
16-
for station, states_for_station in stations.items():
17-
covered = states_needed & states_for_station
18-
if len(covered) > len(states_covered):
19-
best_station = station
20-
states_covered = covered
13+
def my_set_covering(states_needed, stations):
14+
final_stations = set()
15+
#while states_needed is not None: 这个不对,Set()而不是None
16+
while states_needed:
17+
best_station = None
18+
states_covered = set()
19+
for station, states_for_station in stations.items():
20+
covered = states_needed & states_for_station
21+
if len(covered) > len(states_covered) and station not in final_stations:
22+
best_station = station
23+
states_covered = covered
24+
if best_station is not None:
25+
states_needed -= states_covered
26+
final_stations.add(best_station)
27+
stations.pop(best_station)
28+
else:
29+
return None
30+
return final_stations
2131

22-
states_needed -= states_covered
23-
final_stations.add(best_station)
24-
25-
print(final_stations)
32+
print(my_set_covering(states_needed, stations))
Lines changed: 13 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,13 @@
1-
if word_a[i] == word_b[j]:
2-
# The letters match.
3-
cell[i][j] = cell[i-1][j-1] + 1
4-
else:
5-
# The letters don't match.
6-
cell[i][j] = max(cell[i-1][j], cell[i][j-1])
1+
dp_table_blue = ["b", "l", "u", "e"]
2+
dp_table_clues = ["c", "l", "u", "e", "s"]
3+
dp_table = [[0 for i in range(len(dp_table_blue))] for i in range(len(dp_table_clues))] # (5,4)
4+
print(dp_table)
5+
6+
for i in range(0, len(dp_table_blue)):
7+
for j in range(0, len(dp_table_clues)):
8+
if dp_table_clues[j] == dp_table_blue[i]:
9+
dp_table[j][i] = dp_table[j-1][i-1] + 1
10+
else:
11+
dp_table[j][i] = max(dp_table[j-1][i], dp_table[j][i-1])
12+
13+
print(dp_table)
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
dp_table_blue = ["b", "l", "u", "e"]
2+
dp_table_clues = ["c", "l", "u", "e", "s"]
3+
dp_table = [[0 for i in range(len(dp_table_blue))] for i in range(len(dp_table_clues))] # (5,4)
4+
print(dp_table)
5+
6+
for i in range(0, len(dp_table_blue)):
7+
for j in range(0, len(dp_table_clues)):
8+
if dp_table_clues[j] == dp_table_blue[i]:
9+
dp_table[i][j] = dp_table[i-1][i-1] + 1
10+
11+
print(dp_table)

0 commit comments

Comments
 (0)