Tilemap is the easiest way to go. You can make a tile specific collision or physics behaviour. This map should cover most if not all sprites and problem about calculating how to hit floor. This is how most of Mario games are done.

Dynamic spritemap is much more complicated thing to code even though it would allow tile/sprite placing anywhere. Most modern rpg/mmorpg games use something like this.