【c++】判断子矩阵
【问题描述】
从标准输入中输入一个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中的第几行第几列,两个数字用逗号“,”分隔(从第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++】判断子矩阵相关推荐
- Hackerrank - The Grid Search
https://www.hackerrank.com/challenges/the-grid-search/forum 今天碰见这题,看见难度是Moderate,觉得应该能半小时内搞定. 读完题目发现 ...
- LeetCode 427. 建立四叉树 (递归dfs \ 矩阵)
思路 根据0,1矩阵,构建四叉树,根据题意就是要判断,当前矩阵中的值是否全部相同 若矩阵内值相同,也就是只有0或1,则作为叶子节点,叶子结点的值就是这个矩阵的值 若矩阵内值不相同,也就是有0也有1,则 ...
- LeetCode Maximal Square(最大子矩阵)
问题:给出一个由0,1组成的二维数组,求由1组成的最大子矩阵 思路:第一种方式使用暴力法,在遍历二维数组时,如果当前元素是1,则以当前位置为起点,判断先增的一行,一列是否全是1,如果是,则将当前边长度 ...
- 《程序员面试金典》最大和子矩阵
题目:有一个正整数和负整数组成的NxN矩阵,请编写代码找出元素总和最大的子矩阵.请尝试使用一个高效算法. 给定一个int矩阵mat和矩阵的阶数n,请返回元素总和最大的子矩阵的元素之和.保证元素绝对值小 ...
- 求极大子矩阵的两种方法
例1:玉蟾宫 一句话题意:给出一个元素有R和F两种值的矩阵,求全为F的面积最大的子矩阵的面积. 关于这种求极大子矩阵的问题,比较常用的(本蒟蒻会的)有两种: (1)悬线法 /*以下摘自luogu某da ...
- [SOCI2005]最大子矩阵(DP) + [JXOI2018]守卫(DP) + [CQOI2016]手机号码(数位DP)[各种DP专练]
DP专练博客 DP专练 T1:最大子矩阵 题目 题解 代码实现 T2:守卫 题目 题解 代码实现 T3:手机号码 题目 题解 代码实现 T1:最大子矩阵 题目 这里有一个n*m的矩阵,请你选出其中k个 ...
- 计算矩阵中全1子矩阵的个数
前言 最近被我大哥安利了一道算法题, 这道题说难, 还不至于我做不出来, 说简单吧, 我还想不到最优解, 等把最优解告诉我之后, 我还正好能理解. 我甚至曾经怯怯的认为, 这题就是我哥专门给我找的, ...
- 最大子矩阵问题悬线法 学习小结
最近在写dp的题目 但是我这个同学又又又又生病了 学习了一下多叉树的背包问题和最大子矩阵的问题,还有攒了几道期望,先总结一下矩阵问题: 问题模型: 在一个给定的矩形中有一些障碍点,找出内部不包含障碍点 ...
- 程序员面试金典——18.12最大和子矩阵
程序员面试金典--18.12最大和子矩阵 Solution1: 参考网址: [1]https://www.cnblogs.com/GodA/p/5237061.html 思想讲的很清楚~ [2]htt ...
最新文章
- 折返(Reentrancy)VS线程安全(Thread safety)
- 【关注】3000多警力围剿“毒村”!现实比影视剧更惊险
- java iterator 将int_ListIteratorlt;Egt; listIterator(int index)_Java.util包|WIKI教程
- 在UpdatePanel中弹出对话框
- Android各种报错问题汇总
- 160个Crackme034拆解KeyFile验证升级版
- 第四期 | 带学斯坦福CS224n自然语言处理课+带打全球Kaggle比赛(文末重金招募老师!)...
- 二进制包安装MySQL数据库
- Cnblogs美化总结
- Tomcat启动阻塞变慢
- 【翻译】Sklearn 与 TensorFlow 机器学习实用指南 —— 第11章 训练深层神经网络(中)...
- vue 插件 滑块验证_vue滑块验证,原理,demo
- VB.NET版+三层实现登陆
- c语言 整数符号,c语言有符号整数
- 模糊C均值聚类算法(原理+Matlab代码)
- 产品学习---互联网思维
- Go语言发展状况和前景
- go第三方日志库 Zap
- 2021最新可取回皮肤的CSGO开箱网站推荐!
- delphi 调用带有返回值的sql SERver 2008 存储过程