c - 如何在C中打印方阵的所有方子矩阵?

标签 c matrix submatrix

请帮我用C语言从大方阵到小方阵找出并打印方阵的所有方子阵

我写了错误的代码:

int main() {
    int mtrx_size = 8;
    int mat[8][8] = {
        { 1, 2, 3, 4, 5, 6, 7, 8},
        { 9,10,11,12,13,14,15,16},
        {17,18,19,20,21,22,23,24},
        {25,26,27,28,29,30,31,32},
        {33,34,35,36,37,38,39,40},
        {41,42,43,44,45,46,47,48},
        {49,50,51,52,53,54,55,56},
        {57,58,59,60,61,62,63,64}
    };

    int i,j;
    int sub_mtrx_size;

    for(sub_mtrx_size = mtrx_size; sub_mtrx_size > 1 ; sub_mtrx_size--)
    {
        for(i = 0; i < sub_mtrx_size; i++)
        {
            for(j = 0; j < sub_mtrx_size; j++)
            {
                printf("%3d ", mat[i][j]);
            }
            printf("\n");
        }
        printf("\n");

    }
    return 0;

在这里我需要找到所有 8x8、7x7、6x6、5x5、4x4、3x3 和 2x2 子矩阵。

最佳答案

您的代码只是为每个尺寸打印一个子矩阵,位于矩阵的左上角。您需要添加 i 和 j 偏移量以获得所有位置的子矩阵:

#include <stdio.h>

int main() {
    int mtrx_size = 8;
    int mat[8][8] = {
        { 1, 2, 3, 4, 5, 6, 7, 8},
        { 9,10,11,12,13,14,15,16},
        {17,18,19,20,21,22,23,24},
        {25,26,27,28,29,30,31,32},
        {33,34,35,36,37,38,39,40},
        {41,42,43,44,45,46,47,48},
        {49,50,51,52,53,54,55,56},
        {57,58,59,60,61,62,63,64}
    };

    int i, j, ioff, joff, off_cnt;
    int sub_mtrx_size;

    for(sub_mtrx_size = mtrx_size; sub_mtrx_size > 1 ; sub_mtrx_size--) {
        off_cnt = mtrx_size - sub_mtrx_size + 1;
        for (ioff = 0; ioff < off_cnt; ioff++) {
            for (joff = 0; joff < off_cnt; joff++) {
                for (i = 0; i < sub_mtrx_size; i++) {
                    for (j = 0; j < sub_mtrx_size; j++) {
                        printf("%3d ", mat[i+ioff][j+joff]);
                    }
                    printf("\n");
                }
                printf("\n");
            }
        }
    }

    return 0;
}

关于c - 如何在C中打印方阵的所有方子矩阵?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33595117/

相关文章:

c - 为什么现在在 mingw 和 2017 中 printf ("%c"、 '\0' ) 存在差异?

c++ - opengl矩阵乘法

使用 CUDA 进行矩阵转置

r - R 中的子矩阵采样

r - 从 R 中的子矩阵创建矩阵

python - Numpy使用切片修改多个值二维数组

C:指向二维数组的指针

c - 文字和常量在C中是同一个概念吗?

C 嵌套结构的默认初始化

r - 使用for循环在R中创建一个更大的矩阵w original?