hdu 1045
来源:互联网 发布:mysql日期格式化 编辑:程序博客网 时间:2024/05/16 01:47
题目大意:在边长为n的正方形中放入碉堡,在同一行或同一列没有墙的阻隔的话不能存在2个碉堡,墙用X表示,问最多能放入的碉堡数目。
#include <stdio.h>#include <string.h>char f[4][4];int max,num,n;int vis[4][4];int lay(int x,int y)//判断是否能放{int x1,y1;if(vis[x][y]==1||vis[x][y]==2)return 0;x1=x+1;while(x1<n&&vis[x1][y]!=1)//下面是判断到墙为止或越界是否有其他碉堡{if(vis[x1][y]==2)return 0;x1++;}x1=x-1;while(x1>=0&&vis[x1][y]!=1){if(vis[x1][y]==2)return 0;x1--;}y1=y+1;while(y1<n&&vis[x][y1]!=1){if(vis[x][y1]==2)return 0;y1++;}y1=y-1;while(y1>=0&&vis[x][y1]!=1){if(vis[x][y1]==2)return 0;y1--;}return 1;}void DFS(){int i,j;for(i=0;i<n;i++){for(j=0;j<n;j++){if(lay(i,j)){vis[i][j]=2;num++;if(num>max)max=num;DFS();vis[i][j]=0;num--;}}}}int main(){int i,j;while(scanf("%d",&n)!=EOF&&n!=0){getchar();num=max=0;memset(vis,0,sizeof(vis));for(i=0;i<n;i++){for(j=0;j<n;j++){scanf("%c",&f[i][j]);if(f[i][j]=='X')vis[i][j]=1;}getchar();}DFS();printf("%d\n",max);}return 0;}
0 0
- hdu 1045
- hdu 1045
- hdu 1045
- hdu 1045
- hdu 1045
- HDU 1045
- hdu 1045
- HDU-1045
- HDU 1045
- hdu 1045 hdoj 1045
- hdu 1045 DFS+回溯
- hdu 1045 Fire Net
- HDU 1045 Fire Net
- HDU-1045 回溯算法
- HDU 1045 Fire Net
- HDU 1045 二分匹配
- Hdu 1045 Fire Net
- HDU 1045 Fire Net
- ACM-字符串处理之Substrings——hdu1238
- nodejs详解
- 拆解报告:谷歌眼镜硬件成本约80美元
- mongodb使用笔记
- 设计模式(笔记)概述
- hdu 1045
- 美政府挑选三家私企开发商业月球着陆器
- 网站加载优化
- 《程序员面试宝典》读书笔记
- 读贺老师逆袭大学前三章有感
- cortex A9 中断模式遇到的问题
- codeforces D. Ice Sculptures 题解
- poj2243
- poj1017