有一张 N 行 N 列的网格纸,网格中每个小格子都是 1×1 的正方形,有些格子被填充成橙色。请数一数橙色区域一共有多少个矩形。 例如:N = 4,4 行 4 列的网格纸如下图: 图中网格纸的橙色区域一共有 7 个矩形。 输入描述: 第一行输入一个正整数 N(2≤N≤50) 接下来输入 N 行,每行 N 个整数(整数只能为 1 或 0 ),其中 1 表示填充成橙色,0 表示没有填充成橙色,整数之间以一个空格隔开 输出描述: 输出一个整数,表示橙色区域的矩形数量 样例输入: 4 1001 0000 1001 0110 样例输出: 7

正确答案:枚举上下两行i≤j,求两行间每列是否全为1,连续k个全1列贡献C(k,2)=k(k-1)/2,累加即矩形数。核心:\nfor j in range(i,n):\n for k in range(n):col[k]&=int(g[j][k])\n run=0\n for k in col:\n if k:run+=1\n else:ans+=run*(run-1)//2;run=0\n ans+=run*(run-1)//2
试卷来源:202312(第15届)蓝桥杯Python编程青少组(选拔赛)真题