I am dealing with an optimization problem with a separable objective functions, as following $$ \max\limits_{{\bf x}}\sum_{i=1}^{N}H_i(x_i)\\ \text{s.t. } 0\le x_1\le x_2 \le ...\le x_N \\ x_i\in\{0,1,2,...,D\}$$
where $H_i(x)$ is not always concave.
Even though the problem is not a convex optimization problem, considering the special structure, is there any possible algorithm or method to solve is? Dynamic programming?
You can solve it via dynamic programming, and you can also turn it into a shortest path problem. Let $K_i$ be the maximum value that $H_i()$ attains on $\{0,1,\dots,D\}$. Maximizing $\sum_{i=1}^N H_i(x_i)$ is then equivalent to minimizing $\sum_{i=1}^N \left(K_i - H_i(x_i)\right)$.
Now consider a layered (directed) graph with $N+2$ layers, index $0,\dots,N+1$ and $(D+1)$ nodes in each layer except layers $0$ and $N+1$, which have one node each. For $1\le i\le N$, node $k$ in layer $i$ represents setting $x_i=k$. For $1\le i\le N$, an arc with cost $K_i - H_i(k)$ exists from node $k$ in layer $i$ to node $j$ in layer $i+1$ if and only if $j\ge k$. Every node $k$ in layer $N$ has an arc to the lone node (the sink) in layer $N+1$, with cost $K_N - H_N(k)$. An arc with cost 0 exists from the lone node in layer 0 (the source) to every node $k$ in layer 1.
The shortest path from the source to the sink yields the optimal solution to the original problem.