C语言判断矩阵子矩阵:代码示例及详解
{/'title/':/'C语言判断矩阵子矩阵:代码示例及详解/', /'description/':/'本篇文章提供了一个C语言编写的程序,用于判断一个矩阵是否为另一个矩阵的子矩阵。程序包含代码示例、详细解释和运行结果示例,帮助您理解矩阵子矩阵判断的算法和实现方法。/', /'keywords/':/'C语言, 矩阵, 子矩阵, 判断, 代码示例, 算法, 编程/', /'content/':/'//#include //<stdio.h//>/n//n//#define MAX/_SIZE 9/n//n// 判断矩阵M是否是矩阵N的子矩阵/nint isSubMatrix(int N[MAX/_SIZE][MAX/_SIZE], int M[MAX/_SIZE][MAX/_SIZE], int n, int m)/n{/n int i, j, k, l;/n//n for (i = 0; i <= n - m; i++) {/n for (j = 0; j <= n - m; j++) {/n int isMatch = 1;/n for (k = 0; k < m; k++) {/n for (l = 0; l < m; l++) {/n if (N[i + k][j + l] != M[k][l]) {/n isMatch = 0;/n break;/n }/n }/n if (!isMatch) {/n break;/n }/n }/n if (isMatch) {/n return i * 10 + j; // 返回起始位置的行号和列号/n }/n }/n }/n//n return -1; // M不是N的子矩阵/n}/n//nint main()/n{/n int N[MAX/_SIZE][MAX/_SIZE], M[MAX/_SIZE][MAX/_SIZE];/n int n, m;/n//n printf(/'请输入N的阶数:/');/n scanf(/'%d/', &n);/n//n printf(/'请输入N矩阵的元素://n/');/n for (int i = 0; i < n; i++) {/n for (int j = 0; j < n; j++) {/n scanf(/'%d/', &N[i][j]);/n }/n }/n//n printf(/'请输入M的阶数:/');/n scanf(/'%d/', &m);/n//n printf(/'请输入M矩阵的元素://n/');/n for (int i = 0; i < m; i++) {/n for (int j = 0; j < m; j++) {/n scanf(/'%d/', &M[i][j]);/n }/n }/n//n int result = isSubMatrix(N, M, n, m);/n//n if (result == -1) {/n printf(/'M不是N的子矩阵//n/');/n } else {/n int row = result / 10;/n int col = result % 10;/n printf(/'M在N中的起始位置为:(%d, %d)//n/', row, col);/n }/n//n return 0;/n}/n//n该程序首先从标准输入中读取N的阶数和矩阵元素,然后读取M的阶数和矩阵元素。接着调用isSubMatrix函数判断M是否是N的子矩阵,并将结果输出到标准输出中。程序中使用了一个二维数组来表示矩阵,并使用嵌套循环对N的每个可能的子矩阵与M进行比较,以判断是否相等。最后,根据isSubMatrix函数的返回结果,输出相应的信息。/'}
原文地址: https://www.cveoy.top/t/topic/pCfR 著作权归作者所有。请勿转载和采集!