#define max(a,b) ((a)>(b))?(a):(b) int integerBreak(int n){ int dp[58]={0}, i, j; dp[1]=1; for(i=2; i<=n; i++){ for (j=1; j<=i/2; j++){ dp[i]= max( dp[i], ( max(dp[j],j) ) * ( max(dp[i-j],i-j) ) ); } } return dp[n]; }