1191:流感传染
做这题时,程序最容易犯的错误就是认为“今天刚染病的人也具有传染性”
显然,今天刚染病的人昨天是不具有传染性的,所以今天染病的人绝不是因这种刚染病的人引起的!
所以在检查健康人今天是否存在染病风险时,应避免这一误区!
我这里使用的方法是对病人染病日期进行记录。
1 #include<iostream> 2 using namespace std; 3 4 const int N=105; 5 int n,ans,a[N][N]; 6 7 //a[i][j]存在且染病返回1 8 bool check(int i,int j,int k){ 9 if(i>0&&i<=n&&j>0&&j<=n&&a[i][j]>0&&a[i][j]<k) 10 return 1; 11 return 0; 12 } 13 int main(){ 14 int m; 15 cin>>n; 16 for(int i=1;i<=n;i++){ 17 for(int j=1;j<=n;j++){ 18 char c; 19 cin>>c; 20 if(c=='.')a[i][j]=-1; 21 else if(c=='#')a[i][j]=0; 22 else{ 23 a[i][j]=1; 24 ans++; 25 } 26 } 27 } 28 cin>>m; 29 for(int k=2;k<=m;k++){ 30 for(int i=1;i<=n;i++){ 31 for(int j=1;j<=n;j++){ 32 if(a[i][j]==-1&& 33 (check(i-1,j,k)||check(i+1,j,k)||check(i,j-1,k)||check(i,j+1,k))){ 34 a[i][j]=k; 35 ans++; 36 } 37 } 38 } 39 } 40 cout<<ans<<endl; 41 return 0; 42 }