1 条题解
-
0
总体思路:对每一个'.'的上下左右四个方向进行查询有没有'#',有的话答案加一,没有的话遍历下一个'.' #include<bits/stdc++.h> using namespace std; int main() { //DBS为上下左右四个方向 int DBS[4][2]={{0,-1},{0,1},{-1,0},{1,0}}; int n; int ans=0; cin>>n;
//输入 vector<vector<char>>memo(n,vector<char>(n)); for(int i=0;i<n;i++) { for(int j=0;j<n;j++) { cin>>memo[i][j]; } } for(int i=0;i<n;i++) { for(int j=0;j<n;j++) { if(memo[i][j]=='.') { //解包,遍历DBS,将DBS[i][0]赋值给dx,DBS[i][1]赋值给dy,一共四次,实现上下左右的移动 for(auto[dx,dy]:DBS) { int x=i+dx,y=j+dy; //如果移动后没有越界,且找到了'#',答案加一 if(x>=0&&x<n&&y>=0&&y<n&&memo[x][y]=='#') { ans++; //跳出,防止一个'.'附近有多个'#'答案错误 break; } } } } } cout<<ans<<endl; return 0;
}
信息
- ID
- 200
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 9
- 标签
- 递交数
- 13
- 已通过
- 5
- 上传者