2 solutions

  • 0
    @ 2025-3-6 17:35:27

    #include using namespace std; int n, ans = 0; char a[1005][1005]; int water(int x, int y){ if(x < 1 || y < 1 || x > n || y > n || a[x][y] == '*' || a[x][y] == ' ') return 0; a[x][y] = ' '; ans++; water(x + 1, y); water(x, y + 1); water(x - 1, y); water(x, y - 1); return ans; } int main(){ cin >> n; for(int i = 1; i <= n; i++){ for(int j = 1; j <= n; j++){ cin >> a[i][j]; } } cout << water(1, 1); return 0; }

    • 0
      @ 2022-1-19 21:16:08

      打卡

      #include <bits/stdc++.h>
      using namespace std;
      struct pre{
      	int x,y;
      };
      char w[1010][1010];
      int n,sum=0,x,y;
      int x1[5]={0,-1,0,1};
      int y2[5]={-1,0,1,0};
      int check(int x,int y){
      	return (x>=0&&x<n&&y>=0&&y<n&&w[x][y]=='.');
      }
      void bfs(){
      	queue<pre>q;
      	q.push((pre) {x,y});
      	while(!q.empty()){
      		int xx=q.front().x,yy=q.front().y;
      		q.pop();
      		for(int i=0;i<4;i++){
      		int xxx=xx+x1[i];
      		int yyy=yy+y2[i];
      		if(check(xxx,yyy)){
      			w[xxx][yyy]='*';
      			sum++;
      			q.push((pre){xxx,yyy});
      		} 
      	}
      	}
      	return ;
      }
      int main(){
      	cin>>n;
      	x=0,y=0;
      	for(int i=0;i<n;i++){
      		cin>>w[i];
      	}
      	w[0][0]='*';
      	bfs();
      	cout<<sum+1;
      	return 0;
      }
      • 1

      Information

      ID
      50
      Time
      1000ms
      Memory
      256MiB
      Difficulty
      6
      Tags
      # Submissions
      59
      Accepted
      18
      Uploaded By