Whilst waiting in a queue at a cash point earlier I saw some drunk guys berating a tramp for begging and being lowlife scum and not getting off his arse to get a job etc. Then the tramp started crying and some girls went up to him and hugged him and bought him food, they discussed giving him money but decided it might be a bad idea as he'd spend it on drugs.
I normally just say "sorry mate" and walk on when they ask me for money, but what's the most altruistic thing to do? Give them money? Buy them food? Donate to a homeless charity? Shout at them and make them cry? What do you do?