Online Judge | Problem Set | Authors | Online Contests | User | ||||||
---|---|---|---|---|---|---|---|---|---|---|
Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest |
求指点啊。 我是新手按照模板做的 超时超定了。。#include <iostream> using namespace std; char a[1002][1002]; int rec(int i,int j){ if (a[i][j]=='#'&&a[i+1][j]=='#'&&a[i+1][j+1]=='#'&&a[i][j+1]=='.') { return 1; } if (a[i][j]=='#'&&a[i+1][j]=='#'&&a[i+1][j+1]=='.'&&a[i][j+1]=='#') { return 1; } if (a[i][j]=='#'&&a[i+1][j]=='.'&&a[i+1][j+1]=='#'&&a[i][j+1]=='.') { return 1; } if (a[i][j]=='#'&&a[i+1][j]=='.'&&a[i+1][j+1]=='#'&&a[i][j+1]=='.') { return 1; } if (a[i][j]=='#'&&a[i-1][j]=='.'&&a[i-1][j+1]=='#'&&a[i][j+1]=='.') { return 1; } if (a[i][j]=='#'&&a[i-1][j]=='.'&&a[i-1][j+1]=='#'&&a[i][j+1]=='#') { return 1; } if (a[i][j]=='.') return 0; else a[i][j]='.'; rec(i-1,j-1); rec(i,j-1); rec(i+1,j-1); rec(i-1,j); rec(i,j); rec(i+1,j); rec(i-1,j+1); rec(i,j+1); rec(i+1,j+1); } int main(){ int n,m; int count; while(cin>>n>>m){ if (m==0&&n==0) return 0; for (int i=0;i<=n+1;i++) a[i][0]=a[i][m+1]='.'; for (int i=0;i<=m+1;i++) a[0][i]=a[n+1][i]='.'; char b[1002]; for (int i=1;i<n+1;i++) { cin>>b; for(int j=1;j<m+1;j++) a[i][j]=b[j-1]; } count=0; for (int i=1;i<n+1;i++) { if (count==-1) break; for (int j=1;j<m+1;j++) { if (a[i][j]=='#') { count++; rec(i,j); if (rec(i,j)==1) { count=-1; cout<<"Bad placement."<<endl; break; } } } } if (count==-1) continue; cout<<"There are "<<count<<" ships."<<endl; } } Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator