UVA 639 - Don't Get Rooked
2013-03-10 23:00
330 查看
#include <iostream> #include <stdlib.h> #include <stdio.h> #include <string.h> #include <ctype.h> #include <vector> #include <math.h> #include <queue> #include <algorithm> #include <time.h> #define MAXX 10010 using namespace std; char board[5][5]; int n, maxv = 0, countv = 0; int can_place(int x, int y) { if((x >= n || x < 0) || (y >= n || y < 0 )){ return 0; } for(int i = x-1; i >= 0 && board[i][y] != 'X'; i--){ if(board[i][y] == '1') return 0; } for(int i = y-1; i >= 0 && board[x][i] != 'X'; i--){ if(board[x][i] == '1') return 0; } return 1; } void dfs(int cur) { int i = 0, j = 0; //int canplace = 0; for(i = cur; i < n; i++) { for(j = 0; j < n; j++) //每一层所有的点都要遍历 { if(board[i][j] == '.'){ //cout << "i, j " << i << " : " << j << endl; if(can_place(i, j)) { //cout << "i: " << i << " j: " << j << endl; //canplace = 1; board[i][j] = '1'; countv++; dfs(i); board[i][j] = '.'; //回溯 } } } //if(canplace) break; } if(i == n && j == n){ /* cout << "-------" << endl; for(int a = 0; a < n; a++) { for(int b = 0; b < n; b++) cout << board[a][b]; cout << endl; } cout << "-------" << endl; */ if(countv > maxv) maxv = countv; countv = 0; return; } //dfs(i, j); } int main(int argc, char *argv[]) { //freopen("test.in", "r", stdin); while(cin >> n , n) { countv = 0, maxv = 0; memset(board, 'X', sizeof(board)); for(int i = 0; i < n; i++) for(int j = 0; j < n; j++) cin >> board[i][j]; dfs(0); cout << maxv << endl; } return 0; }
题目地址:点击打开链接
简单的回溯法,由于是菜鸟,写的代码效率不高。。。。
相关文章推荐
- Uva 639—Don't Get Rooked
- UVa 639 - Don't Get Rooked
- UVa 639 - Don't Get Rooked
- UVA 639 Don't Get Rooked
- uva 639 - Don't Get Rooked
- UVA - 639 Don't Get Rooked (回溯)
- UVA 639- Don't Get Rooked
- UVA 639 Don't Get Rooked
- UVA - 639 - Don't Get Rooked (暴力回溯)
- UVa 639 - Don't Get Rooked 类皇后问题 递归回溯
- uva 639 Don't Get Rooked
- UVA Don't Get Rooked
- UVa 639 - Don't Get Rooked, 类八皇后问题
- uva 639 - Don't Get Rooked
- UVa 639 Don't Get Rooked (DFS好题)
- uva 639 Don't Get Rooked (暴力回溯 )
- Don't Get Rooked uva 回溯
- uva - 639 - Don't Get Rooked
- uva 639 Don't Get Rooked 变形N皇后问题 暴力回溯
- UVA Don't Get Rooked