jophyyjh's blog

By jophyyjh, history, 3 years ago, In English

Hi guys, I'm quite new to programming. May I ask how the following problem could be solved?

The following is a problem I saw in a coding competition:

Problem Statement...

Given 2 positive integers N and M. Imagine that a stone manufacturer can make M different kinds of different stones, each with a positive integer weight. ("different" here means "with different weights") If we already know what these stones are, we can always find the largest positive integer K such that any weight between 1 and K (_inclusive_), we can form that weight with at most N stones (by selecting at most N stones so that the sum of these stones is that weight). We also know that each type of stones would have a sufficient amount of supplies. So when you are selecting those "at most N stones", you can choose whatever stones from that M types as long as the total number doesn't exceed N. Now, given N and M, your task is to find out (and output) the maximum possible value of K when you select those M types of stones optimally.

What I've tried

I've thought of dynamic programming, but this problem just seems too complicated. After a while of thinking without much results, I came to a thought that the intended solution is with some complete search or brute force method. But I haven't figured out how. Also, the problem constraints state that 1 <= N <= 8 and 1 <= M <= 6.

Test Cases (Just for Reference)

N = 2, M = 2 => 4

N = 3, M = 2 => 7

N = 5, M = 4 => 71

Thx a lot guys!!! I kindly appreciate any kind of help.

Full text and comments »

  • Vote: I like it
  • +8
  • Vote: I do not like it