当前位置:  技术问答>linux和unix

没事散点分

    来源: 互联网  发布时间:2016-09-03

    本文导语:  前两天一个QA的朋友让帮着写这个程序,看看大家的想法和我的是不是一致——当时要的很急,几分钟,但是后来想,也没什么特别好的别的解法。 给定一个数组,N个元素,要求列出所有N元组(我估计是用来测试所...

前两天一个QA的朋友让帮着写这个程序,看看大家的想法和我的是不是一致——当时要的很急,几分钟,但是后来想,也没什么特别好的别的解法。

给定一个数组,N个元素,要求列出所有N元组(我估计是用来测试所有组合的)。简单的例子:

原始数据(1,2),结果是(1,1), (1,2), (2,1), (2,2)
原始数据是(1,2,3),结果是(1,1,1), (1,1,2), (1,1,3), (1,2,1), (1,2,2), (1,2,3), ... (3,3,3)

抱歉我对算法和排列组合不熟,不知道是不是有更好的描述问题的方法,有什么不清楚的尽管问。

拿C/C++写吧,放在这个论坛下面是因为这里让我能给200分。

|
对于一个N个元素的集合A(集合中元素不重复)。求笛卡尔直集A×A×...×A(共N个A)。
#include
#include

char* set[]={"1","2","3","4"};

void print(const int* element,int card)
{
int i;
for(i=0;i=0)
{
        element[n]++;
if(element[n]>=card)
{
n--;
}
else
{
if(n==card-1)
{
print(element,size);
}
else
{
n++;
element[n]=-1;
}
}
}
    free(element);
}

int main()
{
iteration();
return 0;
}

|

#include 
typedef std::vector DescartesTupple;
typedef std::vector DescartesSet;
void Descartes(DescartesSet& oset, DescartesSet& iset, int *arr, int nsz)
{
for(int i = 0; i begin(); tit!=it->end(); tit++)
{
printf("%d ", *tit);
}
printf("n");
}
}
void NTuppleDSet(DescartesSet& oset, int *arr, int nsz)
{
DescartesSet iset;
for (int i = 0; i 

    
 
 

您可能感兴趣的文章:

 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 没事进来看看!来者不一定有分!
  • 散分!散分!没事儿的来看看!
  • Java初学,在线等待,高分相送,也许简单,HelloWold为何运行不起来?没事也可来看看啊*^o^*
  • 给大家推广一个学习Linux的好网站,没事去逛逛吧,同时散分200,up给分
  • (来就给分)HP下的怪问题:编译链接都没事,运行时报错 Unresolved symbol: g_slice_alloc
  • 奇怪了,第一次gdb调试完都没事,第二次就成这样了


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3