Java 动态规划-图论

Java 动态规划-图论,java,c++,algorithm,graph,dynamic-programming,Java,C++,Algorithm,Graph,Dynamic Programming,你在一个大的NxN网格中,有(2这可以通过修改宽度优先的图形搜索来解决。首先,点亮当前房间中所有可能的房间是有意义的。要点亮最大数量的房间,我们必须找到所有可以从(1,1)(这意味着有一条路径从(1,1)穿过照亮的房间),然后照亮的房间是所有可以从每个“可到达”房间照亮的房间的联合。我们逐个探索可到达的房间,找到可以照亮的房间。这可能会给我们提供更多可到达的房间 完整的伪代码是: queue Q Q.push (1,1) // room (1,1) reachable set litupRoom

你在一个大的NxN网格中,有(2这可以通过修改宽度优先的图形搜索来解决。首先,点亮当前房间中所有可能的房间是有意义的。要点亮最大数量的房间,我们必须找到所有可以从
(1,1)
(这意味着有一条路径从(1,1)穿过照亮的房间),然后照亮的房间是所有可以从每个“可到达”房间照亮的房间的联合。我们逐个探索可到达的房间,找到可以照亮的房间。这可能会给我们提供更多可到达的房间

完整的
伪代码是:

queue Q
Q.push (1,1) // room (1,1) reachable
set litupRooms
litupRooms.push(1,1) // room (1,1) is lit up
set visitedRooms
while (Q is not empty)
  room r = Q.pop ()
  if r is in visitedRooms
    continue
  add r to visitedRooms
  for every room that can be lit up from r
    if it is already lit up
      continue
    add it to litupRooms 
    push it to Q if it is adjacent to a room already visited
  for every adjacent room of r
    push it to Q if it is lit up and not visited
return the size of litupRooms
queue Q
Q.push (1,1) // room (1,1) reachable
set litupRooms
litupRooms.push(1,1) // room (1,1) is lit up
set visitedRooms
while (Q is not empty)
  room r = Q.pop ()
  if r is in visitedRooms
    continue
  add r to visitedRooms
  for every room that can be lit up from r
    if it is already lit up
      continue
    add it to litupRooms 
    push it to Q if it is adjacent to a room already visited
  for every adjacent room of r
    push it to Q if it is lit up and not visited
return the size of litupRooms