Improved Combinations with the BigInteger Data Type: Listing 3.

Successor method to return next combination.

public Combination Successor()
{
  if (this.data.Length == 0 ||
    this.data[0] == this.n - this.k)
    return null;

  Combination result = new Combination(this.n, this.k);

  int i;
  for (i = 0; i < this.k; ++i)
    result.data[i] = this.data[i];

  i = this.k - 1;
  while (i > 0 && result.data[i] == this.n - this.k + i)
    --i;

  ++result.data[i];

  for (int j = i; j < this.k - 1; ++j)
    result.data[j + 1] = result.data[j] + 1;

  return result;
}

About the Author

Dr. James McCaffrey works for Microsoft Research in Redmond, Wash. He has worked on several Microsoft products including Azure and Bing. James can be reached at [email protected].

comments powered by Disqus

Featured

  • Entity Framework Core 6: What Developers Want

    Microsoft outlined its plan for Entity Framework Core 6, which in November will take its place as the data access component of the landmark .NET 6, a long-term support (LTS) release that will mark Microsoft's transition from the Windows-only .NET Framework to an open source, cross-platform umbrella offering of all things .NET.

  • AWS Open Sources .NET Porting Assistant GUI

    After previously open sourcing components of its Porting Assistant for .NET, Amazon Web Services open sourced the tool's GUI.

  • .NET Core Ranks High Among Frameworks in New Dev Survey

    .NET Core placed high in a web-dominated ranking of development frameworks published by CodinGame, which provides a tech hiring platform.

  • Here's a One-Stop Shop for .NET 5 Improvements

    Culled from reams of Microsoft documentation, here's a high-level summary of what's new for performance, networking, diagnostics and more, along with links to the nitty-gritty details for those wanting to dig in more.

Upcoming Events