求三角形最大面积(DP)
在OJ上奇迹般WA了:WA:70。
Why?
#include <iostream> #include <string.h> using namespace std; int D[1002][2001],F[1002][2001],G[1002][2001]; int min(int a,int b,int c) { int minn; minn = a<b?a:b; return minn<c?minn:c; } int main() { int n; while(cin>>n && n!=0) { int i,j,maxx=0;char c; memset(F,0,sizeof(F)); for(i=1;i<=n;i++) for(j=i;j<=2*n-i;j++) { cin>>c; if(c=='-') { D[i][j]=1; F[i][j]=1; G[i][j]=1; } else D[i][j]=0; } for(i=1;i<=n;i++) for(j=i;j<=2*n-i;j++) if(D[i][j]) { F[i][j]=min(F[i-1][j-1],F[i-1][j],F[i-1][j+1])+1; maxx=max(F[i][j],maxx); } for(i=n;i>=1;i--) for(j=i;j<=2*n-i;j++) if(D[i][j]) { G[i][j]=min(G[i+1][j-1],G[i+1][j],G[i+1][j+1])+1; maxx=max(G[i][j],maxx); } cout<<maxx*maxx<<endl; } return 0; }