-1

我如何从系列的一维数组创建数组数组,例如:我有一个数组,如:

long int arr[20] = {23, 91, -71, -63, 22,  55, 51, 73, 17, -19,-65, 44, 95,  66, 82, 85, 97, 30, 54, -34};

我想按升序创建数组数组,例如:(在 C++ 中)

23, 91  
-71, -63, 22,  55  
51, 73  
17  
-19  
-65, 44, 95  
66, 82, 85, 97  
30, 54  
-34

已经尝试过现在有多少数组

int sum=0;
for(int i=0;i<n-1;i++)
    if(arr[i]>arr[i+1])sum++;
return sum;
4

3 回答 3

0

vector of vector创建而不是创建怎么样array of array?在数组中,您必须确定将导致您的大小,或者是index out of bound exception巨大的space lost。如果你使用向量,你不会确定向量的大小,它会在你填充向量的大小时分配更多的空间。

如果您的初始数组是降序排列,nx1那么1xn您的双精度数组大小nxn将为exceptionn > 10^4

的一些基本语法vector of vector如下:

vector<vector<int>> myvect; //initialization
myvect.at(i).at(j) = x;     //reaching i_th row, j_th col element
myvect.at(0).push_back(1);  //add element to the end of the row0.    

这个网站在解释向量方面看起来不错。

这是示例代码,我没有对其进行测试,因此可能存在小的语法错误,

vector<vector<int>> myvect; //initialization

int size = 20;
long int arr[size] = {23, 91, -71, -63, 22,  55, 51, 73, 17, -19,-65, 44, 95,  66, 82, 85, 97, 30, 54, -34};

int row = -1; int val = arr[0]+1;
for(int i = 0; i < size; i++){
    if(arr[i] < val){
        row++;
        myvect.push_back(vector<int> () );
    }
    myvect.at(row).push_back(arr[i]);
}

代码基本上是这样的。

于 2013-09-28T07:22:35.273 回答
0
int sum=0;
for(int i=0;i<n-1;i++)
    if(arr[i]>arr[i+1])sum++;
return sum;

应该

int sum = 0;
if (n > 0)
{
    for (int i = 0; i < n - 1; i++)
        if (arr[i] > arr[i+1])
            sum++;
    sum++;
}

您的版本不计算最后一个升序数字序列。

这是一个开始,你接下来要做的是为每一行的指针分配足够的内存。然后你再次遍历这些数字,计算每一行的长度,为该行分配内存,然后再次遍历该行,复制该行的数字。它只是循环(循环内)。如果遇到困难,请尝试发布代码。

于 2013-09-28T07:15:59.383 回答
-1

你可以做

array[9][4] = {
            { 23, 91 },  
            { -71, -63, 22,  55  },
            { 51, 73  },
            { 17  },
            { -19  },
            { -65, 44, 95  },
            { 66, 82, 85, 97  },
            { 30, 54  }
            { -34 }
          };
于 2013-09-28T08:10:33.270 回答