ZOJ-1002 运行超时,求大神帮我看看应该怎么改!!跪谢~~

n*n的地图,'.'表示空地,'X'表示墙,现在往地图上放置炮塔,要求两两炮塔不能同行同列(除非之间有墙),给定一种地图,问这个地图最多可以放置多少个炮塔?

 #include<stdio.h>
int main()
{
    int n=0;
    scanf("%d",&n);
    while(n!=0){
        bool flagR[n]; //行 
        bool flagC[n]; //列 
        char map[n+1][n+1];
        int blockNum=0;

        for(int i=1;i<n+1;i++){  //初始化 
            flagR[i]=false;
            flagC[i]=false;
        } 
        for(int i=0;i<n+1;i++)
            map[i][0]='X';
        for(int j=0;j<n+1;j++)
            map[0][j]='X';      

        for(int i=1;i<n+1;i++){ //绘制地图
            fflush(stdin);
            for(int j=1;j<n+1;j++)
                scanf("%c",&map[i][j]);
        }   

        for(int i=1;i<n+1;i++){
            for(int j=1;j<n+1;j++){
                if(map[i][j]=='X')
                    continue;
                if( (map[i-1][j]=='X' || flagC[j]==false) && (map[i][j-1]=='X' || flagR[i]==false) ){
                    blockNum++;
                    flagR[i]=true;
                    flagC[j]=true;
                }
            }
        }       
        printf("%d\n",blockNum);

        scanf("%d",&n); 
    }

    return 0;
}

http://blog.csdn.net/zyx520ytt/article/details/47023041