当前位置: 技术问答>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个元素,要求列出所有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.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。
站内导航:
特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!