POJ 1471 模拟?

来源:互联网 发布:全民微信时代知乎 编辑:程序博客网 时间:2024/05/16 16:12

题意:求最大无坏点三角形
思路:
模拟?
(为什么我模拟过了。。。)
有人用 DP,有人用 搜索。。。

// by SiriusRen#include <cstdio>#include <cstring>#include <iostream>using namespace std;char a[222][222];int cases=0,n,ans,answer,flag;int main(){    while(scanf("%d",&n)&&n){        answer=ans=0;        memset(a,0,sizeof(a));        for(int i=n;i>=1;i--)            for(int j=1;j<i<<1;j++)                cin>>a[i][j];        for(int i=1;i<=n;i++)            for(int j=1;j<i<<1;j++){                flag=0;                for(int k=1;;k++){                    int jy=k*2-2;                    if(j&1){                        for(int l=j;l<=j+jy;l++)                            if(a[i+k-1][l]=='#'||!a[i+k-1][l]){ans=max(ans,k-1);flag=1;break;}                    }                    else{                        for(int l=j;l>=j-jy;l--)                            if(a[i-k+1][l]=='#'||!a[i-k+1][l]){ans=max(ans,k-1);flag=1;break;}                    }                    if(flag)break;                }            }        for(int i=1;i<=ans;i++)answer+=(i*2-1);        printf("Triangle #%d\nThe largest triangle area is %d.\n\n",++cases,answer);    }}

这里写图片描述

0 0
原创粉丝点击