您好,
我想在我的项目得到2个号码之间的所有组合,例如,如果我有2个数组的第一个商店的最小约束和最大的约束,所以第二个商店arr1的[3] = {1,1,2} arr2 = {2,2,3},所以我应该建立一个二维数组存储的所有组合,这是
112,212,122,222,113,...,223。
首先,我计算的二维数组的行数和以来的最小和最大的元素的数量有所不同,10和20之间的某个时候,它给我大量需要建立一个庞大的阵列,我的代码是:
unsigned long long row =0; // to count the number of row
unsigned long long rh1 = 1;
for(int i=0; i<col;++i) {
rh1 *= t_end[i] - t_s[i] + 1;// t_end is max bound array, t_s is the min bound arr
row += rh1;
cout << "Row= "<< row <<endl;
}
数(行),所以有一段时间变得如此之大,无法处理这个值,例如,如果我有以下的最小值和最大值的约束:
t_s = {3 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2}
t_end = {2 3 4 6 10 3 11 11 13 4 15 8 9 19 19 20 23 27 10}
然后行会如下:
{C}
和某个行值成为负数,因此,如何解决这个问题,我当然不能建立一个数组,这个数量庞大的行,我想分裂,但我不能得到的行号让我来计算的子数组的数目,我应该有。
其他问题是什么,我能有如何知道数组的最大尺寸。