専門学校1年のアルゴリズムで、本当に出た宿題(問題そのまま)です。
具体例は理解できるのですが、考え方がまったくわからないので
お願いします。

[1] 授業単元:アルゴリズム
[2] 問題文(含コード&リンク):
C言語を用いて次のプログラムを作成しなさい。

材料が、鉄:5000kg 3000kgの二種類あり、
製品が、鉄鋼:3100kg 1800kg 1400kg 1100,800kgの4種類ある。

ユーザは、ほしい製品の数量をコンソールからそれぞれ入力し、
どの材料からどのような組み合わせで作ればいいか
最適な組み合わせ(材料に無駄が少ないようにする)を出力する。
具体例:
3100kg*1がほしい→5000kgから3100*1の組み合わせで作ればよい。
1500kg*2がほしい→3000kgから1500*2の組み合わせで作ればよい。
3100*2,1800*2,1000*2がほしい
↓
4000kg*1から3100*1+1800+1
4000kg*1から3100*1+1800+1
3000kg*1から1000*2
の組み合わせで作ればよい。
[3] 環境
 [3.1] OS:Windows2000
 [3.2] コンパイラ(バージョン):Microsoft VisualC++6.0
 [3.3] 言語:C/C++/どちらでも可 のいずれか
[4] 期限:2004年12月14日
[5] その他の制限:ある程度最適ならよい