開始題目楞是沒看懂,看了10分鐘什麼都不知道,都想放棄了,想想在看5分鐘,於是我照着Google翻譯和原題目又看了一便,懂了. 接下來就是敲代碼,最後複製測試數據,但是網站的數據寫錯了(多了個回車),將信將疑的提交,竟然一次通過 #include<stdio.h> #define N 100 char juzhen[N+2][N+2],flag,kz[N+2][N+2]; int work[8][2]={-1,0,-1,1,0,1,1,1,1,0,1,-1,0,-1,-1,-1}; void fun(int row,int col,int n,int m){ int i,j,temp=1; //判斷什麼時候加一個油庫 if(juzhen[row][col]=='@'){ for(i=0;i<8;i++){ if(!kz[row+work[i][0]][col+work[i][1]] && juzhen[row+work[i][0]][col+work[i][1]]=='@' && row+work[i][0] >=0 && row + work[i][0]<n && col+work[i][1]>=0 && col+work[i][1]<m){ temp=0; } } if(temp){ flag++; } } //搜索相同的油庫 for(i=0;i<8;i++){ if(kz[row+work[i][0]][col+work[i][1]] && juzhen[row][col]=='@' && row+work[i][0] >=0 && row + work[i][0]<n && col+work[i][1]>=0 && col+work[i][1]<m){ kz[row][col]=0; fun(row+work[i][0],col+work[i][1],n,m); } } } int main() { int n,m,i,j; while(scanf("%d%d",&n,&m)!=EOF){ getchar(); if(n==0 && m==0) return 0; for(i=0;i<n;i++){ gets(juzhen[i]); } for(i=0;i<n;i++) for(j=0;j<m;j++) kz[i][j]=1; flag=0; for(i=0;i<n;i++){ for(j=0;j<m;j++) fun(i,j,n,m); } printf("%d\n",flag); } return 0; } |
杭電1241(搜索) (2010-12-12 20:00)
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.