title: C# ordered combinations algorithm
body: <p>I'm trying to develop a c# application that will generate a list of all possible permutations, within a limit, and cost.  For example, I have a list of 80 jobs.  Each job has a value (1-5) (typically 3) and each engineer has a limit of how much they can do, typically a value of 20.</p>
  
  <p>At the moment I've started by producing a list of all possible combinations (n! / (k! * (n-k)! where n is the total number of jobs and k is 2).  The link between each job should be weighted with the distance between each job.</p>
  
  <p>From here I would like to pick an initial start job and produce a list of all possible combinations of jobs (from the start job) up to the limit of 20 and then ordered on the sum of the weight.  The lowest weight route would win and be allocated to the engineer.  My problem is that I don't know how to approach this - what data structure would be best?</p>
  
  <p>Typically there are approx 6-8 engineers (depending on workload), I had planned on routing each engineer one at a time - once a route had been allocated to another engineer, those jobs would be removed from the list and a new start job selected with a new set of combinations generated.  Does this sound like an acceptable approach?</p>
  
  <p>Any assistance would be welcome.</p>