【发布时间】:2020-04-10 08:55:00
【问题描述】:
我目前正在使用 C 语言编写一个程序,在该程序中我输入矩阵维数和矩阵元素,这些矩阵在内存中表示为动态二维数组。程序稍后找到每行的最大值。然后它在所有行的最大值中找到最小的最大值。
例如,
如果我们有 3x3 矩阵:
1 2 3
7 8 9
4 5 6
最大值为 3、9、6,最小最大值为 3。如果最小最大值为正,程序应继续重新排列行的顺序,使其遵循最大值的升序,因此最终输出应为:
1 2 3
4 5 6
7 8 9
我创建了一个动态数组,其中包含最大值的值,然后是找到它们的行,例如:3 0 6 1 9 2。但我不知道下一步该怎么做。如果我以某种方式找到一种方法来使用这个数组和我制作的索引,我就会想到如果我在不同的行中具有相同的最大值,我就会遇到问题,例如,如果矩阵是:
1 2 3
4 5 6
7 8 9
1 1 6
我的数组将是 3 0 6 1 9 2 6 3。然后我需要额外的数组来存储位置,这就像一个开始。也许我可以使用一些标志来查看我是否已经遇到过相同的数字,但我通常像算法一样,不知道该怎么做。我想到了创建一个数组并将值传递给它,但它会浪费额外的空间......如果我找到一种方法来找到我想打印行的顺序,我需要一个不同于我的地址函数吗?已经有? (也就是说,在双 for 循环中,对于当前元素 - *(matrix+i * numOfCols+currentCol) )如果有人告诉我我是否正确地考虑了问题解决方案并就这个问题给我一些建议,我将不胜感激。提前致谢!
【问题讨论】:
标签: c matrix dynamic-arrays