White Rectangles-Brute force

update@2011-08-21

//主要代码如下
#define INF 100000000
char map[101][101];int n;
int cal(int i,int j){
    int w,l,total = 0,limit_l = INF;
    for(w = 0;i+w < n;w++){
        if(map[i+w][j] == '#'break;
        for(l = 0;l + j < n && l < limit_l;l++){
            if(map[i+w][j+l] == '#'){
                limit_l = l;break;
            }total++;
        }
    }return total;
}
//main函数
for(i = 0;i < n;i++)
    scanf("%s",map[i]);
int ans = 0;
for(i = 0;i < n;i++){
    for(j = 0;j < n;j++){
        if(map[i][j] == '.')    ans += cal(i,j);
    }
}


题目链接:White Rectangles
很水很暴力,我的方法估计是最暴力的了,遍历每个点,如果为'.'则以它为长方形的左上的顶点枚举长方形的长和宽.长方形的长度需要限制,因为宽度增加后,长度的上限是最小的可枚举长度 而且要一直更新这个值。