这是一道简单的深搜题目,题意说的是给一个5*5的棋盘,里面填满数字,然后跳到一个格子上,这是第一步,接着向上下左右四个方向任意一个方向走一步,一共走6步,问我们走过的数字组成的一个6位数有多少种不同的方案。

那这就是一个集合嘛,集合中没有相同的元素,直接输出集合的尺寸就行了。

我们同样也可以通过打vis标记来做都可以,纯c加O(1)的查询还是快一些。

这也验证了一件事,格子中的的数字都是个位数。

这个是可以退出的,当我们所以的点走完之后就自然退出了,因为for循环结束之后,整个dfs就结束了。

#include <cstdio>
#include <cstring>
// #include <set>
using namespace std;
// set<int> st;
int a[6][6], cnt=0;
int d[4][2] = {{0, 1}, {1, 0}, {0, -1}, {-1, 0}};
bool vis[1000010]; void dfs(int x,int y,int k,int num)
{
if (k==6) {
// st.insert(num);
if (!vis[num]) {
vis[num] = 1;
cnt++;
}
return;
}
for (int i = 0; i < 4;i++) {
int nx = x + d[i][0];
int ny = y + d[i][1];
if (nx<5&&ny<5&&nx>=0&&ny>=0) {
k++;
dfs(nx, ny, k, num * 10 + a[nx][ny]);
k--;
}
}
} int main()
{
for (int i = 0; i < 5;i++) {
for (int j = 0; j < 5;j++) {
scanf("%d", &a[i][j]);
}
}
memset(vis, 0, sizeof(vis));
for (int i = 0; i < 5; i++)
{
for (int j = 0; j < 5; j++)
{
dfs(i, j, 1, a[i][j]);
}
}
printf("%d\n", cnt);
// printf("%d\n", st.size());
return 0;
}

POJ-3050-Hoscotch的更多相关文章

  1. POJ 3050 Hopscotch【DFS带回溯】

    POJ 3050 题意: 1.5*5的方阵中,随意挑一格,记住这个格子的数字 2.可以上下左右走,走5次,每走一次记录下所走格子的数字 3.经过以上步骤,把所得6个数字连起来,形成一串数字.求共可以形 ...

  2. POJ -3050 Hopscotch

    http://poj.org/problem?id=3050 给定一个5×5矩阵,问选6个数的不同排列总数是多少! 二维的搜索,注意要判重,数据量很小,直接用map就好. #include<cs ...

  3. POJ 3050 Hopscotch 水~

    http://poj.org/problem?id=3050 题目大意: 在一个5*5的格子中走,每一个格子有个数值,每次能够往上下左右走一格,问走了5次后得到的6个数的序列一共同拥有多少种?(一開始 ...

  4. Enum:Hopscotch(POJ 3050)

    跳格子 题目大意:牛像我们一样跳格子,一个5*5的方格,方格有数字,给牛跳5次,可以组成一个6个数字组合字符串,请问能组合多少个字符串? 题目规模很小,暴力枚举,然后用map这个玩具来检测存不存在就可 ...

  5. POJ 3050 穷举

    题意:给定一个5*5的地图,每个格子上有一个数字.从一个格子出发(上下左右4个方向),走5步将数字连起来可以构造出一个6位数.问该地图可以构造出多少个不同的6位数. 分析:可以对每个格子做深度优先遍历 ...

  6. Hopscotch(POJ 3050 DFS)

    Hopscotch Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 2845   Accepted: 1995 Descrip ...

  7. POJ 3050 Hopscotch DFS

    The cows play the child's game of hopscotch in a non-traditional way. Instead of a linear set of num ...

  8. POJ 3050 Hopscotch(dfs,stl)

    用stack保存数字,set判重.dfs一遍就好.(或者编码成int,快排+unique #include<cstdio> #include<iostream> #includ ...

  9. poj 3050 地图5位数问题 dfs算法

    题意:一个5*5地图上面,从任意位置上下左右跳五次,组成一个数.问:不重复的数有多少个? 思路:dfs 从任意位置跳5次,说明每个位置都需要遍历. 组成一个数:number*10+map[dx][dy ...

  10. POJ 3050 枚举+dfs+set判重

    思路: 枚举+搜一下+判个重 ==AC //By SiriusRen #include <set> #include <cstdio> using namespace std; ...

随机推荐

  1. ADO winform注册

    前面我们了解了如何实现登录,现在.我们来讨论如何实现注册功能,注册其实就是 通过程序,往数据库中新增数据.首先我们同样连接到数据库,同上页一样创建连接,然后 打开连接.之后我们就要去获取我们输入到文本 ...

  2. go系列(1)- linux下安装go环境

    安装GO 打开安装包下载地址,查看linux下go的最新版本 https://golang.google.cn/dl/ 经查看go的最新版本为go1.11.4.linux-amd64.tar.gz 右 ...

  3. 根据日期计算发布时间段(NSCalendar)

    // 返回发布时间dateWithString - (NSString *)backReleaseTimeWithDateStr:(NSString *)dateWithString{ // 获取当前 ...

  4. 字典树(POJ 2503)

    它的优点是:利用字符串的公共前缀来减少查询时间,最大限度地减少无谓的字符串比较,查询效率比哈希树高. 它有3个基本性质: 根节点不包含字符,除根节点外每一个节点都只包含一个字符: 从根节点到某一节点, ...

  5. 转 测试linux中expect的timeout参数的作用

    http://blog.csdn.net/msdnchina/article/details/50638818

  6. 接口测试02 - 无法绕过的json解析

    概述: 先瞧一下什么是json.JSON(JavaScript Object Notation,JS对象标记)是一种轻量级的数据交换格式. 它基于ECMAScript(w3c定制的js规范)的一个子集 ...

  7. 093 Restore IP Addresses 复原IP地址

    给定一个只包含数字的字符串,复原它并返回所有可能的IP地址格式.例如:给定 "25525511135",返回 ["255.255.11.135", " ...

  8. B. Dispersed parentheses 记忆化搜索 + 括号序列的状压表示

    http://codeforces.com/gym/100633/problem/B B. Dispersed parentheses time limit per test 2 seconds me ...

  9. vi/vim 中批量在行插入或删除指定字符

    1. 在每行的行首行尾插入指定字符      行首::%s/^/insert_word/ 行尾::%s/$/insert_word/  2. 在某些行的行进行替换       在2~50行首添加//号 ...

  10. 安卓新的联网方式 Volley的使用(2)

    如果使用volley 获取 网络图片 最好还是用 Volley 提供的NetworkImageView类,  可以很轻松的 完成工作, 而且他可以设置缓存, lru 和 sd卡的缓存.一些都封装好了. ...