真的是O不是0【看了discuss才发现。。。。。一个大写的蠢

【题意】多个黑白三角形组成的倒三角,求白三角形组成的最大倒三角的面积

【分析】由于问的是倒三角个数,所以只需看与行数奇偶性相同的白色倒三角形,设v[i][j]为以第i行第j列的倒三角为顶点的最大白色倒三角形面积,则v[i][j]可通过v[i-1][j-1]和v[i-1][j+1]构成的白色倒三角面积表示,导出状态转移方程。

【代码】

#include<cstdio>
#include<cstring>
#include<cmath>
#include<algorithm>
typedef long long ll;
using namespace std;
const int INF=0x3fffffff;
int a[1100][2500];
int v[1100][2500];
int temp,Min,Max;
int num,flag;
int main (void)
{
scanf("%d",&num);
while(num>0)
{
getchar();
Max=1,flag=0;
memset(a,-1,sizeof(a));
memset(v,0,sizeof(v));
for(int i=0;i<num;i++)
{
for(int j=0;j<2*num-i-1;j++)
{
if(getchar()=='O')
{
v[i][j]=1;
a[i][j]=0;
if((j-i)%2==0) flag=1;
}
}
getchar();
}
for(int i=1;i<num;i++)
{
for(int j=i;j<2*num-i-1;j+=2)
{
if((a[i][j]==0)&&(a[i-1][j]==0))
{
Min=min(v[i-1][j-1],v[i-1][j+1]);
temp=(int)(sqrt(Min)+0.5);
v[i][j]+=2*Min-(temp-1)*(temp-1)+1;
Max=max(v[i][j],Max);
}
}
}
if(flag)
printf("%d\n",Max);
else
printf("0\n");
scanf("%d",&num);
}
return 0;
}

本来想用一维数组写的,可是弄得很乱,还是二维数组吧。

最新文章

  1. [linux系统]--crontab定时任务
  2. C#编程总结 字符转码
  3. java实现LIS算法,出操队形问题
  4. KMP算法初探
  5. photoshop:把路径存储为形状
  6. Xcode7如何添加pch文件
  7. oracle 高版本导出低版本数据库并且导入到低版本数据的方法
  8. 图形绘制 Canvas Paint Path 详解
  9. Super Jumping! Jumping! Jumping!(dp)
  10. Linux 时区变化
  11. 三、SolrCloud的搭建
  12. Codeforces 437 D. The Child and Zoo 并查集
  13. Promise库
  14. MQ与webservice的区别,MQ的区别
  15. CXF整合spring,在tomcat中发布webService
  16. OpenCV 图像特效
  17. Flash:TextField字体不显示/文字不显示/文字丢失
  18. java 5.0引入的新特性-枚举
  19. POJ 2195 Going Home 最小费用流 难度:1
  20. Oracle拉出在sqlserver建表的语句

热门文章

  1. [BZOJ2190][SDOI2008]仪仗队 数学
  2. css的过渡背景色
  3. input 全选 jquery封装方法
  4. Heart Beat
  5. IE主页被恶意修改处理办法
  6. 迅为嵌入式4418/6818开发板QT-HDMI显示
  7. 物联网初学者智能家居必备迅为iTOP-4412开发板
  8. bat运行当前路径下程序
  9. CAD参数绘制角度标注(com接口)
  10. CSS 实现斑马条纹