In algorithm analysis (essentially a branch of computer programming), a program is analyzed to see roughly how well it performs with a given input size. An example of this is an algorithm that sorts a list, and in the worst case needs to make ~100 comparisons on a list with 10 elements (or ~10,000 on a list with 100 elements, etc). Such an algorithm is said to have an O(n^2) (“O of n squared”) running time, where n represents the input size (in this example, the number of elements in the list). An NP problem is a problem that requires a higher-order expression (such as an exponential expression like e^n or a factorial expression like n!) to run with any known implementation, but can still be verified in polynomial time. Whether or not NP problems can be solved in polynomial time remains to be seen; and it’s entirely possible that they can be.
It should be noted that NP doesn’t stand for “non-polynomial”, but rather “non-deterministic polynomial”, meaning that a non-deterministic computer (essentially one that can spawn infinite processors and run them all in parallel) could solve any NP problem in polynomial time. This is important since NP problems aren’t necessarily not solvable in polynomial time by a normal computer.
Lastly, as for the fox-chicken-grain problem, it’s probably NP (more specifically, I believe, NP-complete) only in the general case (i.e. allowing for any number of parties with predator-prey relationships). In the 3-case (which humans usually solve), there’s no input, so it’ll always be run in a constant amount of time.