HDU 4499 Cannon
来源:互联网 发布:程序员第一天上班干嘛 编辑:程序博客网 时间:2024/06/02 13:03
题目:
http://acm.hdu.edu.cn/showproblem.php?pid=4499题意:
给出一个最大5*5的图,其中有的点已经有了一些棋子,现在往里面放象棋中的炮,要求所有炮互相之间不能打到对方,求最多能放多少个炮。
思路:
暴力搜索,因为每一行最多也就能放3个炮,不到2^15的复杂度,只要每次判断当前点能否放置时写好就行了。隔一个可以打,隔一个以上棋子就是安全的了。代码:
#define N 11int n,m;int flag,sum,ave,ans,res,len,ans1,ans2;int g[N][N];void dfs(int x,int y,int now){ res=max(res,now); int xx=x,yy=y; for(;xx<n;xx++) { for(;yy<m;yy++) { if(g[xx][yy]!=0) continue; flag=0;ans=1; for(int i=xx-1;ans&&i>=0;i--) { if(flag==1&&g[i][yy]==2) ans=0; if(g[i][yy]) flag++; } flag=0; for(int i=yy-1;ans&&i>=0;i--) { if(flag==1&&g[xx][i]==2) ans=0; if(g[xx][i]) flag++; } if(ans) { g[xx][yy]=2; dfs(xx,yy,now+1); g[xx][yy]=0; } } yy=0; }}int main(){ int i,j,k,kk,t,x,y,z; while(scanf("%d%d%d",&n,&m,&k)!=EOF&&n) { memset(g,0,sizeof(g)); for(i=0;i<k;i++) { scanf("%d%d",&x,&y); g[x][y]=1; } res=0; dfs(0,0,0); printf("%d\n",res); } return 0;}
0 0
- HDU 4499 Cannon
- HDU 4499 Cannon (状态)
- HDU 4499 Cannon(回溯)
- hdu 4499 Cannon(暴力)
- HDU 4499 Cannon
- HDU 4499 Cannon
- HDU 4499 Cannon
- hdu 4499 Cannon dfs
- HDU 4499 Cannon 解题报告
- hdu 4499 Cannon(DFS)
- HDU-4499 Cannon (DFS)
- HDU 4499 Cannon (暴力搜索)
- HDU 4499 Cannon (暴力搜索,回溯)
- hdu 4499 Cannon 暴力dfs搜索
- HDU ACM 4499 Cannon 暴力DFS
- HDU 4499 Cannon (DFS回溯)
- HDU Cannon(DFS)
- HDU 5091 Beam Cannon
- 数据结构与算法-总结线性表顺序存储结构的优缺点
- 先进的管理系统——OKR
- Java基础:创建String对象时,String s=new String("abc")和String s="abc"的区别
- UIWebView的基本用法
- Linux 学习书目推荐
- HDU 4499 Cannon
- CentOS下MySQL数据库调优
- iOS ---属性传值--正向界面传值
- 当好职场“空降兵”
- 全流程网上商事登记数字签名
- Unity3D 游戏加密解密那些事
- 欢迎使用CSDN-markdown编辑器
- 简单实现侧滑返回上层activity,无效果
- Android中Intent简单介绍