An Automatic Method for Solving Discrete Programming Problems