如何用c语言实现下述程序设计

问问大佬们,刚开始学习c语言,
将N(N<300)个小于M(M<1000)的正整数分成G组,分组后每组中数据的和小于等于M。如何分组,使得组数G最小。应该怎样设计一个程序去解决这个问题

大概思路:N个数从大到小排好序,先将最大数加到新组,然后找小于等于且最接近于M-最大数,如果余数不为0,则继续按此规则找,知道找不到合适的数
然后再从剩下的数中找出最大数,按上述算法检索。
被用过的数从数组中删除,知道处理完所有数
===也不一定对