求助,C++,L形图表

题目描述

给你一个  N行  M列的表格,表格上面每个格子都填上了 1 或 0

当同一行或者同一列的某段连续格子都填了 1 的话,称这段连续的序列为优秀序列

现在,你需要找出表格中存在的同时满足以下几个条件的 "L形图案":

  • 图案由两段连续格子构成,这两段连续的格子都必须是优秀序列;
  • 图案中两段优秀序列相互垂直;
  • 有一个格子属于两段优秀序列共同的末端端点;
  • 选取的优秀序列必须长度至少为2;
  • 较长的优秀序列长度必须刚好为较短的优秀序列长度的2倍。

你需要统计出给定的表格中,有多少个这样的 "L形图案"。

以下是 "L形图案" 的两个正确示例:

以及三个错误示例:

输入格式

第一行一个整数 T, 表示共有T组数据

接下来的每组数据:

第1行两个整数N,M, 对应表格的行数和列数

第2行~第N+1行,每行M个整数,表示表格中填写的数字

输出格式

输出T行,每行对应一组数据的答案

样例数据

输入数据 #1
2
4 3
1 0 0
1 0 1
1 0 0
1 1 0
6 4
1 0 0 0
1 0 0 1
1 1 1 1
1 0 1 0
1 0 1 0
1 1 1 0

输出数据 #1
1
9

样例说明

样例一解释:

样例二解释:

样例二中有9个符合条件的 "L形图案"。

  • 第1个: (1,1), (2,1), (3,1), (4,1), (5,1), (6,1), (6,2), (6,3)
  • 第2个: (3,1), (4,1), (5,1), (6,1), (6,2)
  • 第3个: (6,1), (5,1), (4,1), (3,1), (3,2)
  • 第4个: (3,3), (4,3), (5,3), (6,3), (6,2)
  • 第5个: (6,3), (5,3), (4,3), (3,3), (3,2)
  • 第6个: (3,1), (3,2), (3,3), (3,4), (2,4)
  • 第7个: (3,4), (3,3), (3,2), (3,1), (2,1)
  • 第8个: (3,4), (3,3), (3,2), (3,1), (4,1)
  • 第9个: (6,3), (5,3), (4,3), (3,3), (3,4)

给出前3个 "L形图案" 对应的示意图:数据范围

对于33%的数据,1≤N,M≤40;

对于66%的数据,1≤N,M≤100;

对于100%的数据,1≤N,M≤1000,1≤T≤10。

全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务