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