Let G=(V,E) be an undirected signed graph whose edge is marked a sign: either positive sign '+' or negative sign '-'. A signed graph is balanced if every cycle has even number of negative edges. In this paper, we study the maximum balanced subgraph problem, whose goal is to find a maximum subset F of edges such that the subgraph induced by F is balanced. We present polynomial-time algorithms for graphs with a special constraint and for planar graphs, a 2-approximation algorithm, and a branch-and-bound algorithm for general graphs. By experiments on random graphs, we show that our branch-and-bound algorithm is much faster than a trivial one.