我想这会有所帮助。
“算法”应该计算新矩阵的每个新元素。
顺便一提...
您有一个输入矩阵,例如firstMatrix.
第一步:从:的第一行和第一个 col 的第一个元素中获取第一个firstMatrix元素firstMatrixfirstMatrix[0][0]firstMatrix[0][0]
第二步:对每一行和每列重复“第一步” firstMatrix:
/* row */
temp_array_1[i] = firstMatrix[i][j]
和
/* col */
temp_array_2[i] = firstMatrix[j][i]
第三步:
for (i = 0; i < 4; i++)
{
if (temp_array_1[i] <= temp_array_2[i])
{ min_array[i] = temp_array_1[i]; }
else
{ min_array[i] = temp_array_2[i]; }
}
第四步:取最大值min_array[i]。
下面是我的源代码...
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char **argv)
{
int i;
int j;
float firstMatrix[4][4] = {
{ 1, 0.6, 0.3, 0.8 },
{ 0.6, 1, 0.1, 0.4 },
{ 0.3, 0.1, 1, 0.5 },
{ 0.8, 0.4, 0.5, 1 }
};
float max = 0.0;
float temp_array_1[4];
float temp_array_2[4];
float min_array[4];
for (i = 0; i < 4; i++)
{
/* row */
temp_array_1[i] = firstMatrix[0][i];
/* col */
temp_array_2[i] = firstMatrix[i][0];
}
for (i = 0; i < 4; i++)
{
if (temp_array_1[i] <= temp_array_2[i])
{ min_array[i] = temp_array_1[i]; }
else
{ min_array[i] = temp_array_2[i]; }
for (i = 0; i < 4; i++)
{
if (min_array[i] > max)
{ max = min_array[i]; }
}
}
fprintf(stdout, "\nMax element: %.1f\n", max);
return 0;
}
关键是我无法为firstMatrix.
从这个混乱中出来的输出矩阵是这样的:
outputMatrix[4][4] = {
{ 1.0, 0.6, 0.5, 0.8 },
{ 0.6, 1.0, 0.4, 0.6 },
{ 0.5, 0.4, 1.0, 0.5 },
{ 0.8, 0.6, 0.5, 1.0 }
}