HDU_1045 Fire Net
来源:互联网 发布:mac改变pdf文件大小 编辑:程序博客网 时间:2024/05/17 22:07
传送门:http://acm.hdu.edu.cn/showproblem.php?pid=1045
题意:
4.X......XX......
给你n*n的图,‘X'表示墙,在图中填黑点,一行(或一列)中不能有两可以直达的点(即:一行(列)中任意两点有墙相隔。
思路:由于n<=4,所以直接二进制枚举了。然后用check(int cur)函数判断是否可行。
//据说这题是贪心。。。。
代码:
/************************************************* Author: Ac_sorry* File:* Create Date:* Motto: One heart One life* CSDN: http://blog.csdn.net/code_or_code*************************************************/#include<iostream>#include<cstdio>#include<cstring>#include<cmath>#include<algorithm>#include<cstdlib>#include<vector>#include<string>#include<utility>#include<map>#include<set>#include<queue>#include<stack>#define INF 0x3f3f3f3f#define MOD 1000000007#define seed_ 131#define eps 1e-8#define mem(a,b) memset(a,b,sizeof a)#define w(i) tree[i].w#define ls(i) tree[i].ls#define rs(i) tree[i].rsusing namespace std;typedef long long LL;const int N=100010;char gra[10][10];int vis[10][10];int n;int check(int cur){ int cnt=0; mem(vis,0); for(int i=0;i<n;i++){ for(int j=0;j<n;j++){ if(gra[i][j]=='X') vis[i][j]=2; } } for(int i=0;i<n*n;i++) { if(cur&(1<<i)) { if(vis[i/n][i%n]) return -1; //cout<<i<<"-"<<endl; vis[i/n][i%n]=1; cnt++; } } int flag; for(int i=0;i<n;i++) { flag=0; for(int j=0;j<n;j++) { if(vis[i][j]==1) { if(flag) return -1; flag=1; } else if(vis[i][j]==2) flag=0; } } for(int j=0;j<n;j++) { flag=0; for(int i=0;i<n;i++) { if(vis[i][j]==1) { if(flag) return -1; flag=1; } else if(vis[i][j]==2) flag=0; } } return cnt;}int main(){ while(scanf("%d",&n)==1) { if(n==0) break; for(int i=0;i<n;i++) scanf("%s",gra[i]); int ans=0; for(int i=0;i<(1<<(n*n));i++) { ans=max(ans,check(i)); //cout<<i<<"--\n"; } printf("%d\n",ans); } return 0;}
0 0
- HDU_1045 Fire Net
- hdu_1045 Fire Net
- hdu_1045 Fire Net 二分图匹配
- Fire Net
- Fire Net
- Fire Net
- Fire Net
- Fire Net
- Fire Net
- Fire Net
- Fire Net
- Fire Net
- Fire Net
- Fire Net
- Fire Net
- Fire Net
- Fire Net
- fire net
- CodeForces 493B Vasya and Wrestling 【模拟】
- 进程注入学习
- JVM 数据区
- but has failed to stop it. This is very likely to create a memory leak(c3p0在Spring管理中,连接未关闭导致的内存溢出)
- [scala之四]类
- HDU_1045 Fire Net
- 合乐平台新注册用户送御彩轩|神圣计划软件|合乐888总代
- 【KMP】KMP算法模板
- 正确计算linux系统内存使用率 (我今天刚好碰到这个问题, 故转载一下)
- UVA - 10014 - Simple calculations (经典的数学推导题!!)
- 常见编译失败错误解决的日志
- hdu2546饭卡(动规 01背包)
- 8皇后-----回溯法C++编程练习
- 使用request.getRequestDispatcher请求转发到一个页面中文乱码解决