639UVa棋盘放车
来源:互联网 发布:2017编程笔记本 编辑:程序博客网 时间:2024/06/03 16:44
回溯关键:
逐步对各个点进行放置
#include<stdio.h>#include<string.h>char gra[6][6];int n;int maxnum;bool judge(int r,int c){int flag = true;int j = c;while(j-1>=0){j--;if(gra[r][j] == 'X')break;else if(gra[r][j]=='r')flag = false;}j =c;while(j+1 < n){j++;if(gra[r][j] == 'X')break;else if(gra[r][j]=='r')flag = false;}int i = r;while(i-1>=0){i--;if(gra[i][c] == 'X')break;else if(gra[i][c]=='r')flag = false;}i = r;while(i+1 < n){i++;if(gra[i][c] == 'X')break;else if(gra[i][c]=='r')flag = false;}return flag;}void search(int k,int m,int sum){//怎么结束?if(k == n){if(sum > maxnum){maxnum = sum;}return;}int i = k, j = m;for(i = k; i < n;i++){if(i != k) j = 0; //for(; j < n;j++){if(gra[i][j] == '.' && judge(i,j)){gra[i][j] = 'r';if(j == n-1)search(i+1,0,sum+1);else search(i,j+1,sum+1);gra[i][j] = '.';}}}//if(i*n+j >= n*n){if(sum > maxnum){maxnum = sum;}}}int main(){//freopen("input.txt","r",stdin);while(scanf("%d",&n)==1 && n){memset(gra,0,sizeof(gra));for(int i = 0;i < n;i++){scanf("%s",gra[i]);}maxnum=0;for(int i = 0; i < n;i++){for(int j = 0; j < n;j++){if(gra[i][j] == '.')search(i,j,0);}}printf("%d\n",maxnum);}}
0 0
- 639UVa棋盘放车
- 639UVa棋盘放车
- uva 11134 棋盘放车,每个车游个放置范围
- UVa 861 Little Bishops(棋盘放棋)
- UVA 639 放车问题
- UVa 639 放车问题
- UVa 639 放车问题
- 棋盘放车(DP状态压缩)
- 棋盘放车(有些点不能放)(DP状态压缩)
- 53-棋盘放麦子问题
- uva 10237 n x n棋盘上放k个棋子 棋子不能在同一斜线上 求总类数
- lightoj Rooks 1005 (棋盘放车问题) (数学规律)
- UVa 传说中的车(白书P11134_放棋子+set)
- 棋盘放子——深搜——递归回溯
- 棋盘上放棋子(任意两个棋子不相邻)
- UVA 10161 棋盘上的蚂蚁
- uva 10161-棋盘上的蚂蚁
- UVa 10161 棋盘上的蚂蚁
- VTK+VC6.0配置
- Maximum Subsequence Sum (25)
- Python 获取命令行输出
- MVC 保存二进制到数据库,并显示文件的方法(图片显示或下载文件)
- 按位与、或、异或等运算方法(转载)
- 639UVa棋盘放车
- Unity3D协程介绍 以及 使用
- spring3集成velocity配置
- Redis 与网络流量整形
- Android 仿淘宝选中商品不同尺寸的按钮组(二)
- Oracle SQL
- ggplot2绘制Excel所有图
- 用GDB调试程序(一)
- node.js 使用nam 命令 需要添加淘宝镜像