首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用于有序组合生成和排序的库?

用于有序组合生成和排序的库?
EN

Stack Overflow用户
提问于 2010-05-17 21:34:34
回答 2查看 772关注 0票数 3

我正在寻找一个可以对有序组合进行排名/取消排名的库,其中排名意味着从一个组合中给出它来自格雷码或字典或其他算法的第n个组合,取消排名是相反的过程。

我正在寻找一个可以做很多算法的库,比如Gray code、字典序、修订字典序、enup等等。

如果它只生成,如果它也有很多算法也没问题。

我发现了FXT库,但它不使用有序组合;它做组合,但它似乎不像我需要的那样做排名算法,它可以与排名/无序组合相媲美。

EN

回答 2

Stack Overflow用户

发布于 2010-08-10 01:56:08

这并不能完全回答你的问题,但是有一本关于这个主题的很好的书,叫做。

它在算法/数学方面和实际实现之间取得了很好的平衡。大多数示例都足够简单,可以在很短的时间内用像C这样的过程性语言编写。

票数 2
EN

Stack Overflow用户

发布于 2010-09-23 15:00:18

你需要这样的东西吗:

代码语言:javascript
复制
// get a combination of a rank
// n number k choices N rank

void unrankComb(int* &K, int n, int k, int N)
{
 int e, N2, t, m, p;

 e = nCr(n,k);
 N2 = e-1-N;
 e = ((n - k)*e)/n;
 t = n - k + 1;
 m = k;
 p = n -1;
 do
 {
  if(e <= N2)
  {
   K[k-m] = n - t - m + 2;
   if(e > 0)
   {
    N2 = N2 -e;
    e = (e * m) / p;
   }
   m = m -1;
   p = p -1;
  }
  else
  {
   e = ((p - m)*e) / p;
   t = t - 1;
   p = p - 1;
  }

 }while(m != 0);
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2849427

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档