不是VIP会员,不能显示答案

题目解答

题目:
有色格子数
【问题描述】
在多多参加的益智兴趣课中,老师设置了一个有色格子数的过关益智游戏。老师出示一张有若干个已填色的5X5的正方形( 每个单元格是一个小正方形)。
第1关:请说出5X5的原始图(如图1所示)正方形中有色格子数(含有7个有色格子)。



图1:5X5原始图

第2关:将图1原始图这个正方形顺时针旋转90度,然后叠加在原始图1之上,得到新正方形图2,请说出叠加后的正方形中有色格子数(含有13个有色格子)。


图2:第1次叠加后的效果

第 3 关:将原始图1在第1次旋转的基础上再顺时针旋转90度,叠加到图2之上,得到新正方形图3,请说出叠加后的正方形中有色格子数(含有19个有色格子)。


图3:第2次叠加后的效果

第4关: 将原始图1在第2次旋转的基础上再顺时针旋转90度,叠加到 图3之上,得到新正方形图4,请说出叠加后的正方形中有色格子数(含有25个有色格子)。


图4:第3次叠加后的效果

多多为了快速给出正确的答案;编写了一段程序。

【输入格式】
第一行一个整数n。接下来n行,每行n个“0”或“1”构成的序列,表示正方形的初始状态。其中“0”表示此处的小正方形没有填充颜色的,“1”表示此处正方形已经是填充颜色的。
【输出格式】
输出文件共四行分别为各关中有色格子的数量。
【输入样例】
5
10100
10001
01100
01000
00000

【输出样例】
7
13
19
25
【程序清单】
PROGRAM CX2016P6;
var i,j,n,k,l:longint;
   d:char;
   a,b,c:array[0..30,0..30] of boolean; //a记录是旋转数组//b记录的是叠加数组
function count:longint;
var i,j,t:longint;
begin
  t:=0;
  for i:=1 to n do
    for j:=1 to n do
	  if b[i,j]=true then inc(t);
	  _____count:=t______;
end;
procedure work; //旋转和叠加
var i,j:longint;
begin
  for i:=1 to n do
    for j:=1 to n do
	  begin
	    c[i,j]:=a[i,j];
		_____a[i,j]:=false______;
      end;
  for i:=1 to n do
    for j:=1 to n do
	  if c[i,j]=true then
        begin
		  _____b[j,n-i+1]:=true______;
		  _____a[j,n-i+1]:=true______;
		end;
end;
begin
  readln(n);
  for i:=1 to n do
    begin
	  for j:=1 to n do
	    begin
		  read(d);
		  if d=1 then b[i,j]:=true else b[i,j]:=false;
		  a[i,j]:=b[i,j];
		end;
        readln;
	end;
  writeln(count);
  for i:=1 to 3 do
	begin
	  _____work______;
	  writeln(count);
	end;
end.
考点:
分析:
解答:
评论:
老师: