图深搜遍历
#include<stdio.h> #include<string.h> int number,h; char tri[100][200]; void down(int row,int col,int layer) { number=layer*layer; if(row>=h||col<0||col%2==0)return; int i; for(i=0;i<2*layer+1;++i) if(tri[row][col+i]=='#'||col+i>=strlen(tri[row])) return; down(row+1,col-2,layer+1); } void up(int row,int col,int layer) { number=layer*layer; if(row<0||col%2)return; int i; for(i=0;i<2*layer+1;++i) if(tri[row][col+i]=='#'||col+i>=strlen(tri[row])) return; up(row-1,col,layer+1); } int main() { int x=1; while(1) { int max=0; scanf("%d",&h); if(h==0)break; int i,j; for(i=0;i<h;++i) { scanf("%s",tri[i]); } for(i=0;i<h;++i) for(j=0;j<strlen(tri[i]);++j) { if(tri[i][j]=='#')continue; down(i,j,0); if(max<number)max=number; up(i,j,0); if(max<number)max=number; } printf("Triangle #%d\n",x++); printf("The largest triangle area is %d.\n\n",max); memset(tri,0,sizeof(tri)); } return 0; }