【发布时间】:2021-07-17 06:06:28
【问题描述】:
我需要检查是否可以在给定的 5*8 矩阵大小内找到 一个具有转置的矩阵,如果有多个,我必须找到最大的一个。
给定矩阵的示例
1 2 0 3 2 1 0 7
2 3 4 1 2 3 4 5
3 4 6 2 5 6 7 6
4 5 7 3 6 8 9 8
6 7 1 4 7 9 0 9
在这个矩阵中我们可以找到一个 4x4 的矩阵 具有转置及其在主矩阵中的最大矩阵
1 2 3 4
2 5 6 7
3 6 8 9
4 7 9 0
#include <stdio.h>
#define M 4
#define column 5
#define row 8
int main()
{
int matrixA[5][8];
printf("please enter a matrix to check if there is a transpose matrix\n");
for (int i = 0; i < column; i++)
{
for (int j = 0; j < row; j++)
{
printf("please enter %d row and %d column: ", i + 1, j + 1);
scanf("%d", &matrixA[i][j]);
}
}
transpose(matrixA, column, row);
}
void transpose(int A[][row], int c, int r)
{
int matrixAT[M][M];
for (int size = r; size > 0; size--)
{
for (int j = 0; j < c - size + 1; j++)
{
for (int b = 0; b <= r - size; b++)
{
printf("Checking Matrix at row: %d , column: %d ,size: %dx%d", j, b, size, size);
for (int k = j, w = 0; k < size + j; k++, w++)
{
for (int l = b, z = 0; l < size + b; l++, z++)
{
matrixAT[w][z] = A[k][l];
}
printf("/n");
}
if (IsSymmetric(matrixAT, size))
printf("Matrix found");
}
}
}
}
int IsSymmetric(int mat[M][M], int size)
{
int flag = 0;
for (int i = 0; i < size; i++)
{
for (int j = 0; j < size; j++)
{
if (mat[i][j] == mat[j][i]) flag++;
}
}
return flag == size * size ? 1 : 0;
}
这是我的代码,我不知道我做错了什么
【问题讨论】:
-
抱歉修复了,谢谢;)
-
我不知道如何发布我的代码加上我在问,因为我没有解决方案,否则我不会在这里问这个问题,你说什么对我来说毫无意义,冷静:)
-
所有矩阵都有转置。看来您正试图找到一个与其转置相等的子矩阵。
-
每个矩阵都可以转置。似乎您的意思是矩阵与其主对角线对称
-
@WilliamPursell 我不知道这是否是标记某人的方法,但是是的,我正在尝试做你说的我只是不擅长用英语解释它抱歉