3 条题解
-
0
#include <iostream> #include<string> #include<math.h> using namespace std; char c[1005][1005]; int arr[1005][1005]; int main() { //B4263 [GESP202503 四级] 荒地开垦 int n,m,maxhd=0,dian=0,zw=0,maxzw=0,x,y,ans=0; cin>>n>>m; for(int i=0;i<=n+1;i++){ //四个边初始化为-1 for(int j=0;j<=m+1;j++){ if(i==0 or j==0 or i==n+1 or j==m+1) arr[i][j]=-9; } } for(int i=1;i<=n;i++){ //输入 for(int j=1;j<=m;j++){ cin>>c[i][j]; } } for(int i=1;i<=n;i++){ //累计每个格子周边有几个杂物 for(int j=1;j<=m;j++){ arr[i][j]=(c[i][j]=='#')+(c[i-1][j]=='#')+(c[i+1][j]=='#')+(c[i][j-1]=='#')+(c[i][j+1]=='#'); } } for(int i=1;i<=n;i++){ //累计杂物周围荒地数量 for(int j=1;j<=m;j++){ zw=0; if(c[i][j]=='#'){ zw=(arr[i][j]==1)+(arr[i-1][j]==1)+(arr[i+1][j]==1)+(arr[i][j+1]==1)+(arr[i][j-1]==1); if(maxzw<zw){ //周边杂物值越接近4,说明可开拓的荒地越多 maxzw=zw; } } } } for(int i=1;i<=n;i++){ //累计荒地数量 for(int j=1;j<=m;j++){ if(arr[i][j]==0){ ans++; } } } //cout<<"\nans="<<ans<<" maxzw="<<maxzw<<endl; cout<<ans+maxzw<<endl; // for(int i=0;i<=n+1;i++){ // for(int j=0;j<=m+1;j++){ // printf("%c",c[i][j]); // } // cout<<endl; // } // cout<<endl; // // for(int i=0;i<=n+1;i++){ // for(int j=0;j<=m+1;j++){ // printf("%3d",arr[i][j]); // } // cout<<endl; // } return 0; } -
0
#include <iostream> #include<string> #include<math.h> using namespace std; char c[1005][1005]; int arr[1005][1005]; int main() { //B4263 [GESP202503 四级] 荒地开垦 int n,m,maxhd=0,dian=0,zw=0,maxzw=0,x,y,ans=0; cin>>n>>m; for(int i=0;i<=n+1;i++){ //四个边初始化为-1 for(int j=0;j<=m+1;j++){ if(i==0 or j==0 or i==n+1 or j==m+1) arr[i][j]=-9; } } for(int i=1;i<=n;i++){ //输入 for(int j=1;j<=m;j++){ cin>>c[i][j]; } } for(int i=1;i<=n;i++){ //累计每个格子周边有几个杂物 for(int j=1;j<=m;j++){ arr[i][j]=(c[i][j]=='#')+(c[i-1][j]=='#')+(c[i+1][j]=='#')+(c[i][j-1]=='#')+(c[i][j+1]=='#'); } } for(int i=1;i<=n;i++){ //累计杂物周围荒地数量 for(int j=1;j<=m;j++){ zw=0; if(c[i][j]=='#'){ zw=(arr[i][j]==1)+(arr[i-1][j]==1)+(arr[i+1][j]==1)+(arr[i][j+1]==1)+(arr[i][j-1]==1); if(maxzw<zw){ //周边杂物值越接近4,说明可开拓的荒地越多 maxzw=zw; } } } } for(int i=1;i<=n;i++){ //累计荒地数量 for(int j=1;j<=m;j++){ if(arr[i][j]==0){ ans++; } } } //cout<<"\nans="<<ans<<" maxzw="<<maxzw<<endl; cout<<ans+maxzw<<endl; // for(int i=0;i<=n+1;i++){ // for(int j=0;j<=m+1;j++){ // printf("%c",c[i][j]); // } // cout<<endl; // } // cout<<endl; // // for(int i=0;i<=n+1;i++){ // for(int j=0;j<=m+1;j++){ // printf("%3d",arr[i][j]); // } // cout<<endl; // } return 0; }
- 1
信息
- ID
- 1938
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 10
- 标签
- (无)
- 递交数
- 5
- 已通过
- 5
- 上传者
