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<cstdio> #include<cstring> #include<algorithm> #include<functional> #include<iostream> char matrix[15][15]; int vis[15][15]; const int dx[]={0,1,1,1}; const int dy[]={1,-1,0,1}; int ship[5]={0,4,3,2,1}; int dis; int search(int i,int j,int dir) { int nx,ny,ll,k,tx,ty; nx=i+dx[dir];ny=j+dy[dir];// printf("%d,%d--->%d,%d\n",i,j,nx,ny); if(matrix[nx][ny]=='1') { if(vis[nx][ny]) return -1; else { dis++; ll=search(nx,ny,dir); if(ll<0) return -1; else { vis[i][j]=2; // printf("%d,%dbecome 2\n",i,j); for(k=0;k<4;k++) { tx=i+dx[k];ty=j+dy[k]; if(vis[tx][ty]!=2) { // printf("%d,%dbecome 1\n",tx,ty); vis[tx][ty]=1; } } return 0; } } } vis[i][j]=2; // printf("%d,%dbecome 2\n",i,j); for(k=0;k<4;k++) { tx=i+dx[k];ty=j+dy[k]; if(vis[tx][ty]!=2) { // printf("%d,%dbecome 1\n",tx,ty); vis[tx][ty]=1; } } return 0; } int main() { int i,j,k,nx,ny,flag,tx,ty; freopen("text.txt","r",stdin); memset(matrix,'0',sizeof(matrix)); memset(vis,0,sizeof(vis)); for(i=1;i<=10;i++) gets(matrix[i]+1); for(i=1;i<=10;i++) { if(matrix[1][i]=='1'||matrix[i][1]=='1'||matrix[10][i]=='1'||matrix[i][10]=='1') { printf("incorrect\n"); return 0; } } for(i=2;i<=9;i++) { for(j=2;j<=9;j++) { if(matrix[i][j]=='1') { // printf("(%d,%d)vis:%d\n",j,i,vis[i][j]); if(!vis[i][j]) { flag=0; for(k=0;k<4;k++) { nx=i+dx[k];ny=j+dy[k]; if(matrix[nx][ny]=='1') { // printf("===%d,%d--->%d,%d===\n",i,j,nx,ny); flag=1; dis=1; if(search(i,j,k)==0) { if(dis>4) { printf("incorrect\n"); return 0; } //printf("%d\n",dis); // printf("begin:(%d,%d),direction:%d,distance:%d\n",i,j,k,dis); // printf("---deal\n"); ship[dis]--; break; } else { // printf("incorrect point:%d,%d",nx,ny); printf("incorrect\n"); return 0; } } } if(!flag) { // printf("begin:(%d,%d),,,,vis:%d\n",i,j,vis[i][j]); ship[1]--; vis[i][j]=2; for(k=0;k<4;k++) { tx=i+dx[k];ty=j+dy[k]; vis[tx][ty]=1; } } } else { if(vis[i][j]==1) { // printf("incorrect point:%d,%d",i,j); printf("incorrect\n"); return 0; } } } } } // printf("pass\n"); // printf("%d %d %d %d\n",ship[1],ship[2],ship[3],ship[4]); if(!ship[1]&&!ship[2]&&!ship[3]&&!ship[4]) printf("correct\n"); else printf("incorrect\n"); return 0; } Followed by:
Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator