问题描述
给出一个邻接矩阵
//@version=4
study("My Script")
f_sec() => security(syminfo.ticker,"D",[high,low,close],lookahead = barmerge.lookahead_on)
bar_date_ts = timestamp(year(time),month(time),dayofmonth(time),0)
is_new_date = change(bar_date_ts)
var float h = na
var float l = na
var float c = na
if (is_new_date)
[x,y,z] = f_sec()
h := x
l := y
c := z
plot(h)
plot(l)
plot(c)
递归地,DFS顺序应该是
int[][] grid = new int[5][5];
反复地,DFS订单将是
//y = Row
//x = Column
//Down
grid[y + 1][x];
//Up
grid[y - 1][x];
//Right
grid[y][x + 1];
//Left
grid[y][x - 1];
解决方法
BFS从某个节点开始,然后遍历所有邻居。
如果我们有一个邻接矩阵,则意味着它将从某行开始并遍历该行的所有列。
遍历该行时,它将在BFS队列中放置更多节点,并且由于我们遍历该行的列,因此队列中的第一个节点将成为第一列中的第一个节点。
所以总的来说,我们可以说我们从某个节点N开始,然后遍历所有其他节点n_1,...,n_n 然后转到n_1并遍历该行中的所有其他节点,并将它们添加到队列中。然后,我们继续到之前添加到队列中的节点的另一行。
总共M个节点,假设我们从grid[0][0]
的节点开始
grid[0][0],...,grid[0][M-1]
//Added to the queue grid[0][1],grid[0][2]
grid[1,0],grid[1][M-1]
//Added to the queue grid[1][3],grid[1][4]
grid[2,grid[2][M-1]
以此类推...