我如何才能自动生成这个动态规划图?

我如何才能自动生成这个动态规划图?

我想绘制以下动态规划图。我相信使用foreach语法可以加快速度。

在此处输入图片描述

我已经开始写的代码是

\documentclass[tikz, convert = false]{standalone}
\begin{document}
\begin{tikzpicture}
  \foreach \x/\y/\lab in {0/0/5, 1/1/6, 2/2/10, 3/3/7, 4/2/8, 5/1/10, 6/0/11,
    5/-1/9, 4/-2/7, 3/-3/6, 2/-2/9, 1/-1/7, 0/0/}{
    \draw (\x, \y) -- ??
\end{tikzpicture}
\end{document}

问题是我需要索引下一个点,这样它就可以了,(x_1, y_1) -- (x_1, y_2) node[font = \small, pos = .5, fill = white, inner sep = .01] {\lab}; 如何做到这一点?

然后我必须创建其他foreach循环来跨越。有没有办法在一个循环中完成整个过程?如果可以,怎么做,因为我不知道该怎么做。

答案1

这是一种可能的\foreach方法,可让您按行指定权重,然后按列指定权重。

在此处输入图片描述

\documentclass{article}

\usepackage{tikz}

\newcounter{rowcount}
\newcounter{columncount}

\begin{document}
\begin{tikzpicture}[scale=2]
\begin{scope}[rotate=-45]
  % rows
  \foreach[count=\y from 0] \W in {% row-wise weights
    {7,8,6},
    {8,8,12},
    {6,9,7},
    {7,8,10}%
  }{
    \stepcounter{rowcount}
    \foreach \w [count=\x, remember=\x as \lastx (initially 0)] in \W
      \draw (\lastx,\y) -- (\x,\y)
        node[above,pos=0.5] {\w};
  }
  % columns
  \foreach[count=\x from 0] \W in {% column-wise weights
    {5,6,10},
    {7,10,5},
    {10,5,6},
    {7,9,11}%
  }{
    \stepcounter{columncount}
    \foreach \w [count=\y, remember=\y as \lasty (initially 0)] in \W
      \draw (\x,\lasty) -- (\x,\y)
        node[above,pos=0.5] {\w};
  }
  \fill (0,0) circle (0.1em) node[below left] {A};
  \fill ({\value{columncount}-1},{\value{rowcount}-1}) circle (0.1em) node[below right] {B};
\end{scope}
\end{tikzpicture}
\end{document}

相关内容