#P1288. 课程ZD.安全的马.填空题
课程ZD.安全的马.填空题
题目描述
在 n×n 的方格棋盘上,有一些格子里有中国象棋的棋子马。如果一个棋子马能按照中国象棋的规则走"日字"形攻击到其他棋子,就称是危险的,否则是安全的。问棋盘上有多少安全的棋子?
跳"马"规则的偏移量说明:
提示
不考虑中国象棋里面的绊马脚问题。
输入格式
第一行 1 个正整数:N ,范围在 [1,50]。
下面有 N 行,每行 N 个整数,要么是 0 ,要么是 1 。0 表示没有棋子,1 表示有棋子马。
输出格式
一个整数。
样例
4
1 0 1 0
0 0 1 1
0 0 0 0
0 0 0 0
2
程序填空
#include<bits/stdc++.h>
using namespace std;
int a[51][51],diff[8][2] = {{2,1},{2,-1},{-2,-1},{-2,1},{1,-2},{1,2},{-1,-2},{-1,2}};
int main()
{
int n,i,j,k,ans=0,ii,jj;
scanf("%d",&n);
for(i=1;i<=n;i++)
for(j=1;j<=n;j++)
scanf("%d",&a[i][j]);
bool ok;
for(i=1;i<=n;i++)
for(j=1;j<=n;j++)
{
if( 填空(1) ) continue;
ok=true;
for(k=填空(2);k< 填空(3) ;k++)
{
ii = i + diff[k][0];
jj = 填空(4) + 填空(5);
if(ii>0&&ii<=n&&jj>0&&jj<=n&& 填空(6)) //要保证 [ii][jj]还在棋盘范围内
{
ok = false;
break;
}
}
if(ok)
ans++;
}
printf("%d",ans);
return 0;
}
填空(1):{{ input(1) }}
填空(2):{{ input(2) }}
填空(3):{{ input(3) }}
填空(4):{{ input(4) }}
填空(5):{{ input(5) }}
填空(6):{{ input(6) }}