zoj_1002

来源:互联网 发布:中国gdp增速放缓知乎 编辑:程序博客网 时间:2024/06/08 18:45
终于把这题A了,在阅读了多人的博客的情况下,接着找这类题继续做
#include <stdio.h>#include <string.h>#include <stdlib.h>#define MAXSIZE 10char v[MAXSIZE][MAXSIZE];//0 -> null 1 -> block 2 -> fireint ans = 0, step = 0, cnt = 0;int line;int find(int m, int n){    for(int i = m; i <= line; ++i){        if(v[i][n] == 1) return 0;        if(v[i][n] == 2) break;    }    for(int i = m; i >= 1; --i){        if(v[i][n] == 1) return 0;        if(v[i][n] == 2) break;    }    for(int i = n; i <= line; ++i){        if(v[m][i] == 1) return 0;        if(v[m][i] == 2) break;    }    for(int i = n; i >= 1; --i){        if(v[m][i] == 1) return 0;        if(v[m][i] == 2) break;    }    return 1;}int dfs(){    if(cnt >= ans){        ans = cnt;    }    for(int i = 1; i <= line; ++i){        for(int j = 1; j <= line; ++j){            if(!v[i][j] && find(i, j)){                v[i][j] = 1;                cnt++;                dfs();                v[i][j] = 0;                cnt--;            }        }    }    return ans;}int main(){    char ch;    while(scanf("%d", &line) && line){        memset(v, 2, sizeof(v));        ans = 0;        for(int i = 1; i <= line; ++i){            getchar();            for(int j = 1; j <= line; ++j){                scanf("%c", &ch);                if(ch == '.') v[i][j] = 0;                else if(ch == 'X') v[i][j] = 2;            }        }        dfs();        printf("%d\n", ans);    }    return 0;}

继续加油

0 0
原创粉丝点击