HDU Cannon(DFS)
来源:互联网 发布:剑灵夕颜捏脸数据 编辑:程序博客网 时间:2024/05/21 06:41
这个题目一看数据范围就知道搜索,甚至不加任何减枝就能过,递归与回溯,和八皇后问题类似
直接搜索就OK了!
开始炮打隔子,犯傻忘了就是隔一个,导致调试了一会!
#include <iostream>#include <string.h>#include <stdio.h>#include <algorithm>using namespace std;int map[10][10];int n,m,num,ans;bool is_ok(int i,int j){ int k; k=i-1; for( ;k>=0;k--)if(map[k][j]){k--; break;} for( ;k>=0;k--){if(map[k][j]==2) break;if(map[k][j]==1) return false;} k=i+1; for( ;k<n;k++)if(map[k][j]){k++; break;} for( ;k<n;k++){if(map[k][j]==2) break; if(map[k][j]==1) return false;} k=j-1; for( k;k>=0;k--) if(map[i][k]) if(map[i][k]){k--;break;} for( ;k>=0;k--){if(map[i][k]==2) break; if(map[i][k]==1) return false;} k=j+1; for( k;k<m;k++) if(map[i][k]) if(map[i][k]){k++;break;} for( ;k<m;k++){ if(map[i][k]==2) break; if(map[i][k]==1) return false;} return true;}int find_ans(int a,int b,int now){ if(now > ans) ans = now; int j; for(int i=a;i<n;i++){ if(i==a) j=b;else j=0; for(;j<m;j++){ if(map[i][j]==0 && is_ok(i,j)){ map[i][j]=1; find_ans(i,j,now+1); map[i][j]=0; } } } return 0;}int main(){ int i,j,k,a,b; while(scanf("%d%d%d",&n,&m,&num)!=EOF){ memset(map,0,sizeof(map)); ans=0; for(i=0;i<num;i++){ scanf("%d%d",&a,&b); map[a][b]=2; } find_ans(0,0,0); printf("%d\n",ans); } return 0;}
- HDU Cannon(DFS)
- hdu 4499 Cannon dfs
- hdu 4499 Cannon(DFS)
- HDU-4499 Cannon (DFS)
- hdu 4499 Cannon 暴力dfs搜索
- HDU ACM 4499 Cannon 暴力DFS
- HDU 4499 Cannon (DFS回溯)
- HDU4499 - Cannon->DFS
- hdu4499 Cannon DFS
- HDU 4499 Cannon
- HDU 4499 Cannon (状态)
- HDU 4499 Cannon(回溯)
- hdu 4499 Cannon(暴力)
- HDU 4499 Cannon
- HDU 5091 Beam Cannon
- HDU 4499 Cannon
- HDU 4499 Cannon
- hdu 5091 beam cannon
- cocos2dx-2.1.5-孤狼优化版
- 消息摘要(单项加密)之MD,SHA,MAC,RipeMD
- 个人开公司的流程,以后用得着(经典)
- HDUOJ 4496 通化邀请赛重现 D-City
- hdu 4628 Pieces
- HDU Cannon(DFS)
- boost库在工作(38)网络UDP客户端之八
- man使用方法
- HDU 4493Tutor2013通化邀请赛A题(简单水题 四舍五入分printf控制精度)
- 黑马程序员——Java高新技术(2)
- 黑马程序员-Java-图形化界面-day22
- 如何进行自我管理?
- objective c 内存管理
- c++ primer 学习笔记:类之构造函数