We define a formal model of dynamic programming algorithms which we call Prioritized Branching Programs (pBP). Our model is a generalization of the BT model of Alechmovich et al (AlekhnovichBBIMP05), which is in turn a generalization of the priority algorithms model of Borodin, Nielson and Rackoff. One of the distinguishing features of these models is that they not only capture large classes of algorithms generally considered to be greedy, backtracking or dynamic programming algorithms, but they also allow characterizations of their limitations. Hence they give meaning to the statement that a given problem can or cannot be solved by dynamic programming. After defining the model, we prove three main results: (i) that certain types of natural restrictions of our seemingly more powerful model can be simulated by the BT model; (ii) that while the pBP model is capable of implementing the classic Bellman-Ford algorithm for finding the shortest path in a graph without negative cycles, the pBT model is incapable of solving the promise version of this problem efficiently (that is, every such algorithm must have high complexity on some instance, although it may be an instance that does not satisfy the promise of no negative cycles); (iii) that our model has very real limitations, namely that maximum unweighted bipartite matching cannot be efficiently computed in it without high-precision numbers. Since using subproblems of numeric complexity well beyond that of the input problem seems unnatural for dynamic programming, this suggests that there are problems that can be solved efficiently by network flow algorithms and by simple linear programming that cannot be solved by natural dynamic programming approaches.