6 条题解
-
0
#include <bits/stdc++.h> using namespace std; int fx[5]={0,-1,1,0,0},fy[5]={0,0,0,-1,1},n,m,ans=INT_MAX,f[100][100],x,y; bool p; char a[100][100]; void sy(int x,int y,int t) { if(a[x][y]=='a') { p=1; if(t<ans) ans=t; return ; } for(int i=1;i<=4;i++) { int tx=x+fx[i]; int ty=y+fy[i]; if(tx>=1&&tx<=n&&ty>=1&&ty<=m&&a[tx][ty]!='#') { if(a[tx][ty]=='x'&&t+2<=f[tx][ty]) { f[tx][ty]=t+2; sy(tx,ty,t+2); } else if(t+1<f[tx][ty]) { f[tx][ty]=t+1; sy(tx,ty,t+1); } } } } int main() { cin>>n>>m; for(int i=1;i<=n;i++) for(int j=1;j<=m;j++) cin>>a[i][j]; for(int i=1;i<=n;i++) for(int j=1;j<=m;j++) { if(a[i][j]=='r') x=i,y=j; f[i][j]=INT_MAX; } sy(x,y,0); if(p==1) cout<<ans; else cout<<"Impossible"; return 0; } -
0
#include <bits/stdc++.h> using namespace std; int fx[5]={0,-1,1,0,0},fy[5]={0,0,0,-1,1},n,m,tx,ty,s,ans,maxx,minx,maxy,miny; bool f[1100][1100]; char a[1100][1100]; void sy(int x,int y) { for(int i=1;i<=4;i++) { tx=x+fx[i]; ty=y+fy[i]; if(tx>=1&&tx<=n&&ty>=1&&ty<=m&&f[tx][ty]0&&a[tx][ty]'#') { s++; f[tx][ty]=1; maxx=max(maxx,tx); minx=min(minx,tx); maxy=max(maxy,ty); miny=min(miny,ty); sy(tx,ty); } } } int main() { cin>>n>>m; for(int i=1;i<=n;i++) for(int j=1;j<=m;j++) cin>>a[i][j]; for(int i=1;i<=n;i++) for(int j=1;j<=m;j++) if(a[i][j]=='#'&&f[i][j]==0) { s=1; f[i][j]=1; minx=maxx=i; miny=maxy=j; sy(i,j); if((maxx-minx+1)*(maxy-miny+1)==s) ans++; else { cout<<"Bad placement."; return 0; } } cout<<"There are "<<ans<<" ships."; return 0; }
-
0
using namespace std; int fx[5]={0,-1,1,0,0},fy[5]={0,0,0,-1,1},n,m,tx,ty,s,maxn=INT_MIN; bool f[1100][1100]; char a[1100][1100]; void sy(int x,int y) { for(int i=1;i<=4;i++) { tx=x+fx[i]; ty=y+fy[i]; if(tx>=1&&tx<=n&&ty>=1&&ty<=m&&f[tx][ty]==0&&a[tx][ty]=='*') { s++; f[tx][ty]=1; sy(tx,ty); } } } int main() { cin>>m>>n; for(int i=1;i<=n;i++) for(int j=1;j<=m;j++) cin>>a[i][j]; for(int i=1;i<=n;i++) for(int j=1;j<=m;j++) if(a[i][j]=='*'&&f[i][j]==0) { f[i][j]=1; s=1; sy(i,j); maxn=max(maxn,s); } cout<<maxn; return 0; } -
0
using namespace std; long long n,a[1000][1000],f[1000][1000]; int sy(int x,int y) { if(x==n) f[x][y]=a[x][y]; if(x==n+1) return 0; if(f[x][y]==0) f[x][y]=max(sy(x+1,y),sy(x+1,y+1))+a[x][y]; return f[x][y]; } int main() { cin>>n; for(int i=1;i<=n;i++) for(int j=1;j<=i;j++) cin>>a[i][j]; cout<<sy(1,1); return 0; }
- 1
信息
- ID
- 103
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 6
- 标签
- 递交数
- 46
- 已通过
- 15
- 上传者