代码及注释
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scan= new Scanner(System.in);
int n =scan.nextInt();
int m =scan.nextInt();
//将方格图形构造成为二维矩阵,并将其每个方格值设为0;
int[][] a= new int[n][m];
for(int i=0;i<n;i++) {
for(int j=0;j<m;j++) {
a[i][j]=0;
}
}
int s =scan.nextInt();
//统计水管个数,并将水管位置用二位数组记录,并令水管位置置1
int[][] num=new int[s][2];
for(int i=0;i<s;i++) {
num[i][0]=scan.nextInt()-1;//因为题目中的计数是从1开始的,而数组中是从0开始的,所以减一
num[i][1]=scan.nextInt()-1;
a[num[i][0]][num[i][1]]=1;//水管位置置1
}
int k =scan.nextInt();
//k分钟,即循环k次
for(int i=0;i<k;i++) {
for(int j=0;j<s;j++) {
int q=num[j][0];//将水管位置赋值,便于判断
int w=num[j][1];
//判断其前后左右是否越界
if((q-1)>0)
{a[q-1][w]=1;
if(w-1>0)
a[q-1][w-1]=1;
if(w+1<m)
a[q-1][w+1]=1;
}
if(q+1<n) {
a[q+1][w]=1;
if(w-1>0)
a[q-1][w-1]=1;
if(w+1<m)
a[q-1][w+1]=1;
}
if(w-1>0)
a[q][w-1]=1;
if(w+1<m)
a[q][w+1]=1;
}
}
int sum=0;
//统计1的个数(即灌溉的个数)
for(int i=0;i<n;i++) {
for(int j=0;j<m;j++) {
if(a[i][j]==1)
sum++;
}
}
System.out.println(sum);
}
}