Flooding is a natural process, an annually recurring player in the shaping and re-shaping of Earth’s surface.
Floods are really only a problem when they intersect human activity, so the most effective flood prevention program is one that removes humans from the path of potential floods and bans activities that exacerbate flooding.
It would seem obvious that no one should live in the path of potential flooding, on a river flood plain or a coast vulnerable to storm surge, but flood plains and coastal beaches are desirable real estate.
Engineering solutions like dikes and levees may help stem flooding in the short term, but geologists view coasts and rivers as parts of dynamic systems, and time has shown that alterations to one part of the system will cause a response in another part of the system, often unanticipated and unintended.
The Watershed protection and flood prevention Act, originally enacted in 1954 was designed to address these issues: http://www.nrcs.usda.gov/Programs/watershed/pl56631705.pdf