递归最大的整数

时间:2013-05-08 14:14:45

标签: c++ arrays pointers

int* m = new int [d1*d2];

这是我的阵列。

 for ( j = 0; j < d2; j++ )
{       for ( i = j; i < d1*d2; i +=d2){
         cout << *(m+i);
       }
  cout << endl;
}

通过使用我可以分组并打印每列中的最大整数,如果我认为它是一个多维数组。

很难解释我想做什么。我试着举个例子。

假设我的输入是1 4 2 5 2 1 0 3 4

输出

1 5 0

4 2 3

2 1 4

我只想要最大的整数并继续列出该整数后面的以下最大整数。

对于第一行,我只想要5,0

对于第二行,我想要4和3。

对于第三行,我只想要4。

输出将是:

  

5,0,4,3,4

2 个答案:

答案 0 :(得分:1)

如果a[]包含您的行,则看起来就像您想要的那样:

int i = column_count - 1;
deque<int> largests_list;
largests_list.push_front(a[i]);
int largest_found = a[i];

while (i-- > 0) {
    if (a[i] > largest_found) {
       largests_list.push_front(a[i]);
       largest_found = a[i];   
    }
}

答案 1 :(得分:0)

尝试两个内部循环(在第一个内部):

int largest = m[j];
for (i = j + 1; i < d1*d2; i+=d2)
{
   largest = max(largest, m[i]);
}
for (i = j; i < d1*d2; i+=d2)
{
   if (m[i] == largest)
   {
      cout << largest--;
   }
}