求助,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。
查看11道真题和解析