#include <iostream> using namespace std; int main() { int n,m,count=0; cin >> n; // n*n矩阵,向四周传染,为避免越界,创建数组时四周各向外扩一行 char x[n+2][n+2]; // 数据只填充在内部的n行、列中,最外围只为了避免越界 for(int i=1;i<n+1;i++) { for(int j=1;j<n+1;j++) cin >> x[i][j]; } cin >> m; // m天后,实际应该传染了m-1天 for(int i=0;i<m-1;i++) { // 将得流感人员(@)周边的入住人员标记为被感染(!) // 先标记,不直接设定为传染人员@,不然会导致后面的遍历出错 for(int i=1;i<n+1;i++) { for(int j=1;j<n+1;j++) { if(x[i][j]=='@') { if(x[i-1][j]=='.') x[i-1][j]='!'; if(x[i][j-1]=='.') x[i][j-1]='!'; if(x[i][j+1]=='.') x[i][j+1]='!'; if(x[i+1][j]=='.') x[i+1][j]='!'; } } } // 更新情况,将被感染人员标记为得流感人员@ for(int i=1;i<n+1;i++) { for(int j=1;j<n+1;j++) { if(x[i][j]=='!') x[i][j]='@'; } } } // 统计结果 for(int i=1;i<n+1;i++) for(int j=1;j<n+1;j++) if(x[i][j]=='@') count++; cout << count; }
标签:信息学,1191,cin,越界,int,奥赛 From: https://www.cnblogs.com/exception999/p/18406498