请问我写的代码哪里出了问题,导致样例虽对,平台判错,请不要直接给我答案,谢谢
问题遇到的现象和发生背景
炸弹游戏
查看提交统计提问
总时间限制: 1000ms 内存限制: 65536kB
描述
博斯科和苏斯科正在一个由排列在A行和B列中的矩形场组成的棋盘上玩一个有趣的游戏。
当游戏开始时,Susko将其虚拟碉堡放在棋盘上的一个字段中。然后,博斯科选择他将投掷虚拟炸弹的领域。每次炸弹后,苏斯科都会告诉博斯科他的碉堡是否在这个炸弹的范围内,
直径为P的炸弹的射程(P总是奇数),它被扔在野外(R,S),是一个方形区域。正方形的中心在场(R,S),正方形的一侧与棋盘的侧面平行,长度为P.
在投掷了一些炸弹后,博斯科应该找出苏斯科的碉堡的位置。但是,该职位可能不是唯一的,您的工作是帮助Bosko计算可能的职位数量。
输入
输入的第一行包含三个整数:A、B 和 K,1 < = A,B,K <= 100。A 表示行数,B 表示列数,K 表示投掷炸弹的数目。
接下来的 K 行中的每一行都包含整数 R、S、P 和 T,描述在第 R 行和第 S 列的字段中投掷的炸弹,直径为 P,1 < = R < = A,1 < = S < = B,1 < = P < = 99,P 是奇数。如果碉堡在此炸弹的范围内,T等于1;否则为 0。
输出
输出可能保留的字段数,Susko 的碉堡可能会保留这些字段。
样例输入
5 5 3
3 3 3 1
3 4 1 0
3 4 3 1
样例输出
5
用代码块功能插入代码,请勿粘贴截图
#include <stdio.h>
int a[100][100]={0};
int k;
int r[100]={0},s[100]={0},p[100]={0},t[100]={0};
int abs(int x){//求绝对值
if(x>=0)return x;
else return 0-x;
}
int check(int I,int j){//检验碉堡是否在坐标(I,j)上
int i;
for(i=0;i<k;i++){
int x=(p[i]-1)/2;
if(t[i]){ //炸弹攻击中碉堡
if(abs(I-r[i])>x||abs(j-s[i])>x){//如果碉堡出现在炮弹范围之外
return 0;//检验为错误
}
}else{ //炸弹未击中碉堡
if(abs(I-r[i])<=x&&abs(j-s[i])<=x){//如果碉堡出现在炮弹范围内
return 0;//检验为错误
}
}
}
return 1;
}
int main()
{
int a,b;
scanf("%d%d%d",&a,&b,&k);
int i,j;
for(i=0;i<k;i++){
scanf("%d%d%d%d",&r[i],&s[i],&p[i],&t[i]);
}
int cnt=0;
for(i=0;i<a;i++){
for(j=0;j<b;j++){
if(check(i,j)){
cnt++;
}
}
}
printf("%d",cnt);
return 0;
}