【问题描述】

从标准输入中输入一个N(N<=9)阶矩阵和一个M(M<=N)阶矩阵,判断矩阵M是否是N的子矩阵,若是则输出M在N中的起始位置,若不是则输出-1。若矩阵M能与N中某一区域完全相等,则称M是N的子矩阵。

【输入形式】

从标准输入读取矩阵。

第一行只有一个整数N,代表第一个矩阵的阶数。后续有N行输入,每行有N个以若干空格分隔的整数,代表该矩阵在该行上的所有元素。

输入完N阶矩阵后,再在下一行输入一个整数M,代表第二个矩阵的阶数。后续有M行输入,每行有M个以若干空格分隔的整数,代表该矩阵在该行上的所有元素。

【输出形式】

输出M在N中的起始位置,即N中的第几行第几列,两个数字用逗号&ldquo;,&rdquo;分隔(从第1行第1列开始计数,即:矩阵第一个元素的位置为:1,1。

若N有多个子矩阵与M矩阵完全相同,则输出首先找到的起始位置,即行最小的位置,若行相同,则为列最小的位置。

若M不是N的子矩阵,则输出-1。

【样例输入】

6

3        9        15     25     -9     0

36     102     2       5      67    89

8       12       58     6      53    456

67      7       895   -12   65    -83

-56    812    25     0      72     61

4       71       69    -4     341 970

3

6        53      456

-12    65      -83

0       72       61

【样例输出】

3,4

【样例说明】

第一个矩阵为6阶矩阵,第二个矩阵为3阶矩阵,第二个矩阵与第一个矩阵的某个子矩阵(起始位置为第3行第4列的3阶矩阵)完全相同,故输出3,4,行列数用逗号隔开。

#include <bits/stdc++.h>
using namespace std;
int main() {int N[9][9], M[9][9], n, m;int i, j;bool begain = false;cin >> n;for (i = 0; i < n; i++)for (j = 0; j < n; j++)cin >> N[i][j];cin >> m;for (i = 0; i < m; i++)for (j = 0; j < m; j++)cin >> M[i][j];for (i = 0; i <= n - m; i++) {for (j = 0; j <= n - m; j++) {if (N[i][j] == M[0][0])if (N[i + m - 1][j] == M[m - 1][0] && N[i][j + m - 1] == M[0][m - 1] && N[i + m - 1][j + m - 1] == M[m - 1][m - 1]) {int i1, j1;for (i1 = 0; i1 < m; i1++)for (j1 = 0; j1 < m; j1++)if (N[i + i1][j + j1] != M[i1][j1])break;if (i1 == m && j1 == m)begain = true;}if (begain)break;}if (begain)break;}if (begain)cout << i + 1 << ',' << j + 1 << endl;elsecout << -1 << endl;return 0;
}

【c++】判断子矩阵相关推荐

  1. Hackerrank - The Grid Search

    https://www.hackerrank.com/challenges/the-grid-search/forum 今天碰见这题,看见难度是Moderate,觉得应该能半小时内搞定. 读完题目发现 ...

  2. LeetCode 427. 建立四叉树 (递归dfs \ 矩阵)

    思路 根据0,1矩阵,构建四叉树,根据题意就是要判断,当前矩阵中的值是否全部相同 若矩阵内值相同,也就是只有0或1,则作为叶子节点,叶子结点的值就是这个矩阵的值 若矩阵内值不相同,也就是有0也有1,则 ...

  3. LeetCode Maximal Square(最大子矩阵)

    问题:给出一个由0,1组成的二维数组,求由1组成的最大子矩阵 思路:第一种方式使用暴力法,在遍历二维数组时,如果当前元素是1,则以当前位置为起点,判断先增的一行,一列是否全是1,如果是,则将当前边长度 ...

  4. 《程序员面试金典》最大和子矩阵

    题目:有一个正整数和负整数组成的NxN矩阵,请编写代码找出元素总和最大的子矩阵.请尝试使用一个高效算法. 给定一个int矩阵mat和矩阵的阶数n,请返回元素总和最大的子矩阵的元素之和.保证元素绝对值小 ...

  5. 求极大子矩阵的两种方法

    例1:玉蟾宫 一句话题意:给出一个元素有R和F两种值的矩阵,求全为F的面积最大的子矩阵的面积. 关于这种求极大子矩阵的问题,比较常用的(本蒟蒻会的)有两种: (1)悬线法 /*以下摘自luogu某da ...

  6. [SOCI2005]最大子矩阵(DP) + [JXOI2018]守卫(DP) + [CQOI2016]手机号码(数位DP)[各种DP专练]

    DP专练博客 DP专练 T1:最大子矩阵 题目 题解 代码实现 T2:守卫 题目 题解 代码实现 T3:手机号码 题目 题解 代码实现 T1:最大子矩阵 题目 这里有一个n*m的矩阵,请你选出其中k个 ...

  7. 计算矩阵中全1子矩阵的个数

    前言 最近被我大哥安利了一道算法题, 这道题说难, 还不至于我做不出来, 说简单吧, 我还想不到最优解, 等把最优解告诉我之后, 我还正好能理解. 我甚至曾经怯怯的认为, 这题就是我哥专门给我找的, ...

  8. 最大子矩阵问题悬线法 学习小结

    最近在写dp的题目 但是我这个同学又又又又生病了 学习了一下多叉树的背包问题和最大子矩阵的问题,还有攒了几道期望,先总结一下矩阵问题: 问题模型: 在一个给定的矩形中有一些障碍点,找出内部不包含障碍点 ...

  9. 程序员面试金典——18.12最大和子矩阵

    程序员面试金典--18.12最大和子矩阵 Solution1: 参考网址: [1]https://www.cnblogs.com/GodA/p/5237061.html 思想讲的很清楚~ [2]htt ...

最新文章

  1. 折返(Reentrancy)VS线程安全(Thread safety)
  2. 【关注】3000多警力围剿“毒村”!现实比影视剧更惊险
  3. java iterator 将int_ListIteratorlt;Egt; listIterator(int index)_Java.util包|WIKI教程
  4. 在UpdatePanel中弹出对话框
  5. Android各种报错问题汇总
  6. 160个Crackme034拆解KeyFile验证升级版
  7. 第四期 | 带学斯坦福CS224n自然语言处理课+带打全球Kaggle比赛(文末重金招募老师!)...
  8. 二进制包安装MySQL数据库
  9. Cnblogs美化总结
  10. Tomcat启动阻塞变慢
  11. 【翻译】Sklearn 与 TensorFlow 机器学习实用指南 —— 第11章 训练深层神经网络(中)...
  12. vue 插件 滑块验证_vue滑块验证,原理,demo
  13. VB.NET版+三层实现登陆
  14. c语言 整数符号,c语言有符号整数
  15. 模糊C均值聚类算法(原理+Matlab代码)
  16. 产品学习---互联网思维
  17. Go语言发展状况和前景
  18. go第三方日志库 Zap
  19. 2021最新可取回皮肤的CSGO开箱网站推荐!
  20. delphi 调用带有返回值的sql SERver 2008 存储过程

热门文章

  1. 3个月收获数十万用户,易车小程序“小艾懂车”的推广仍有发展空间
  2. 佳能激光打印机设置无线网络
  3. 应用篇 | 你只有日K线数据,想要周K线?安排。
  4. 本科论文查重要求都有哪些?
  5. 因果推断综述-基础知识2
  6. matlab解方程精度,如何提高解非线性方程组的精度?
  7. 「三年河东、三年河西」ADAS新一轮竞赛“重构”市场格局
  8. 期货交易入门知识有哪些?
  9. 2023全国特种作业操作证熔化焊接与热切割一[安考星]
  10. 【转载】云计算、大数据和人工智能