Finding a series of numbers that maximise $\ \sum f_i(x_i) $
Following is a trivial Dynamic Programming algorithm for your problem:
Let $T$ denote a table of size $(m+1)$ x $(m+1)$.
Here, $T[i][j]$ stores the maximum value of $\sum_{t = 1}^{i}f_{t}(x_{t})$ such that $\sum_{t = 1}^{i}x_{t} \leq j$.
Induction Case: Since there are $m+1$ possible choices for $x_{i}$, check each one of them.
$$T[i][j] = \max_{p \in \{0,\dotsc,m\} \textrm{ and } p \leq j} \Big\{T[i-1][j-p] + f_{i}(p)\Big\}$$
Base Case: For $i = 0$ means there is no function. Therefore, the value is $0$.
$$T[0][j] = 0 \quad \forall j \in \{0,\dotsc,m\}$$
Output: The algorithm will output $T[m][m]$ which is simply the maximum value of $\sum_{t = 1}^{m}f_{t}(x_{t})$ such that $\sum_{t =1}^{m} x_{t} \leq m$
Running Time Analysis: Since the size of the table is $O(m^{2})$ and computing each entry takes $O(m)$ time. The overall running time is $O(m^{3})$.