题意:


思路:
搜+判重 嗯搞定 (听说有好多人用7个for写得….)

//By SiriusRen
#include <bitset>
#include <cstdio>0
using namespace std;
bitset<134217728>bit;
char s[17][17],vis[17][17],xx[]={1,-1,0,0},yy[]={0,0,1,-1};
int ans;
bool check(int x,int y){for(int i=0;i<4;i++){int dx=x+xx[i],dy=y+yy[i];if(dx>=0&&dy>0&&dx<5&&dy<6&&vis[dx][dy])return 1;}return 0;
}
void dfs(int x,int y,int recj,int rech,int hash){bit[hash]=1;if(recj+rech==7){if(recj>=4)ans++;return;}vis[x][y]=1;for(int i=0;i<5;i++)for(int j=1;j<=5;j++)if(check(i,j)&&!bit[hash|(1<<(i*5+j))]&&!vis[i][j]){if(s[i][j]=='J')dfs(i,j,recj+1,rech,hash|(1<<(i*5+j)));else dfs(i,j,recj,rech+1,hash|(1<<(i*5+j)));}vis[x][y]=0;
}
int main(){for(int i=0;i<7;i++)for(int j=0;j<7;j++)vis[i][j]=1;for(int i=0;i<5;i++)scanf("%s",s[i]+1);for(int i=0;i<5;i++)for(int j=1;j<=5;j++)vis[i][j]=0;for(int i=0;i<5;i++)for(int j=1;j<=5;j++)if(s[i][j]=='J')dfs(i,j,1,0,1<<(i*5+j));else dfs(i,j,0,1,1<<(i*5+j));printf("%d\n",ans);
}

转载于:https://www.cnblogs.com/SiriusRen/p/6532204.html

POJ 2458 DFS+判重相关推荐

  1. zcmu1133(dfs+判重)

    1133: 第九章:致我们终将逝去的青春 Time Limit: 1 Sec  Memory Limit: 128 MB Submit: 28  Solved: 18 [Submit][Status] ...

  2. poj 1564 Sum It Up | zoj 1711 | hdu 1548 (dfs + 剪枝 or 判重)

    Sum It Up Time Limit : 2000/1000ms (Java/Other)   Memory Limit : 65536/32768K (Java/Other) Total Sub ...

  3. poj 3131 双向搜索+hash判重

    题意: 初始状态固定(朝上的全是W,空格位置输入给出),输入初始状态的空格位置,和最终状态朝上的位置,输出要多少步才能移动到,超过30步输出-1. 简析: 每一个格子有6种状态,分别是 0WRB, 1 ...

  4. POJ 2491 Scavenger Hunt 解题报告 再次利用map判重

    这道题说的是一个路径(A->B->C->-)被拆散成很多step(B->C;A->B;-),要根据step还原路径.节点都是用string表示的. 如果用map来表示st ...

  5. LeetCode 491. 递增子序列(回溯+判重剪枝)

    1. 题目 给定一个整型数组, 你的任务是找到所有该数组的递增子序列,递增子序列的长度至少是2. 示例: 输入: [4, 6, 7, 7] 输出: [[4, 6], [4, 7], [4, 6, 7] ...

  6. 解题报告:luogu P2272 [ZJOI2007]最大半连通子图(tarjan缩点、递推DP、hash、set判重)

    这时yxc上课时讲解的截图. 一般用到tarjan算法的题目步骤都非常相似: tarjan算法 缩点,建图(这里要判重) 按照拓扑序递推(这里缩点以后逆向就已经是拓扑序了)/ 循环遍历新图求解答案. ...

  7. A - 棋盘问题 POJ - 1321(dfs)

    A - 棋盘问题 POJ - 1321 dfs 复杂度计算: dfs共进行a步,每步需要循环n次,复杂度为 a^n次方 首先是暴力 an*n,果然炸了 #include<cstdio> # ...

  8. POJ1465 Multiple——Bfs+余数判重——Pku1465

    这道题精在判重优化.因为如果存在两个数A.B,且满足A mod n=B mod n=C,那么,这两种情况可以看做是重复的,保留较小数即可.具体优化,开一个布尔数组即可. 特别需要注意一点:如果n=0, ...

  9. codevs 1004 四子连棋 BFS、hash判重

    004 四子连棋 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 黄金 Gold 题目描述 Description 在一个4*4的棋盘上摆放了14颗棋子,其中有7颗白色棋子,7颗黑色 ...

最新文章

  1. 根据条件查找数组中的一条数据并放入缓存
  2. 1024 科学计数法 (20 分)(c语言)
  3. Dws同步mysql数据_数据库技术丨GaussDB(DWS)数据同步状态查看方法
  4. LeetCode 298. 二叉树最长连续序列(自顶向下)
  5. centos7源码安装mysql8.0_CentOS7下源码安装MySQL 8.x
  6. 16 分频 32 分频是啥意思_CD4017是什么?十进制计数器分频器CD4017的逻辑功能呢?...
  7. 解决sql脚本文件太大无法打开的问题
  8. 1661Help Jimmy
  9. 自然环境资源数据集分享——资源环境数据云平台
  10. 计算机中丢失msvcr71.dll 问题解决
  11. POJ1723士兵站队问题
  12. 如何进行拼图?拼图其实很简单
  13. selenium IDE 遇到 Preparing to run your test 问题的解决
  14. UITT私有化自动跟单系统
  15. 留学目的地选择之亚利桑那州
  16. 计算机凭据分配在哪里,电脑策略没有凭据分配怎么办
  17. 孙悟空吃蟠桃c语言编程,孙悟空吃蟠桃
  18. 你知道怎么判断NB-IOT的网络信号吗
  19. mysql5.7驱动(tableau,excel)
  20. 超过十分之一的报告篇幅给语音,互联网女皇为何看好麦克风?

热门文章

  1. 在进入新版本 的时候,进行推送引导
  2. Struts2框架学习Action命名空间创建方式
  3. 移动手机平台的HTML5前端优化指南
  4. Python运维开发基础01-语法基础【转】
  5. Mac+docker+flask
  6. Ubuntu 14.04安装mysql
  7. BZOJ4943 [NOI2017] 蚯蚓
  8. Spark Streaming Backpressure分析
  9. .NET自动化测试工具链:Selenium+NUnit+ExtentReport
  10. linux中录屏工具byzanz