Hopscotch(POJ-3050)

简介: Hopscotch(POJ-3050)

题目:

The cows play the child’s game of hopscotch in a non-traditional way. Instead of a linear set of numbered boxes into which to hop, the cows create a 5x5 rectilinear grid of digits parallel to the x and y axes They then adroitly hop onto any digit in the grid and hop forward, backward, right, or left (never diagonally) to another digit in the grid. They hop again (same rules) to a digit

(potentially a digit already visited).

With a total of five intra-grid hops, their hops create a six-digit integer (which might have leading zeroes like 000201).

Determine the count of the number of distinct integers that can be created in this manner.

Input

* Lines 1…5: The grid, five integers per line

Output

* Line 1: The number of distinct integers that can be constructed

Sample Input

1 1 1 1 1
1 1 1 1 1
1 1 1 1 1
1 1 1 2 1
1 1 1 1 1

Sample Output

15

解题思路:深搜的题目,分别从5^5的矩阵各个顶点上下左右出发,然后走六步组成一个六位数,判断能组成多少个不同的六位数

注意:每组成一个六位数就要标记一下,所以数组至少要开七位。

程序代码:

#include<stdio.h>
#include<string.h>
int n=0;
int a[15][15],book[15][15],f[10000010];//因为要组成六位数,所以数组至少要开七位
int next[4][2]={{0,1},{1,0},{0,-1},{-1,0}};
void dfs(int x,int y,int t,int sum)
{
  int i,j,k,tx,ty;
  if(t==5)
  {
    if(f[sum]==0)
      n++;
    f[sum]=1;
    return;
  }
  for(k=0;k<=3;k++)
  {
    tx=x+next[k][0];
    ty=y+next[k][1];
    if(tx<1||tx>5||ty<1||ty>5)
      continue;
    dfs(tx,ty,t+1,sum*10+a[tx][ty]);
  }
  return;
}
int main()
{
  int i,j,k,t,sum;
  for(i=1;i<=5;i++)
    for(j=1;j<=5;j++)
      scanf("%d",&a[i][j]);
  for(i=1;i<=5;i++)
    for(j=1;j<=5;j++)
      dfs(i,j,0,a[i][j]);
  printf("%d\n",n);
  return 0;   
} 
相关文章
|
Web App开发 缓存 网络协议
如何实现服务端向客户端推送数据
常见的http协议只能从客户端主动向服务端请求数据,而服务端无法向客户端发送数据.本文通过介绍几种方式来实现上述功能.
|
存储 Python
链表中插入节点
链表中插入节点
|
监控 物联网 区块链
探索未来科技的边界:区块链、物联网与虚拟现实技术的融合趋势
【7月更文挑战第15天】在数字化浪潮的推动下,新兴技术如区块链、物联网(IoT)和虚拟现实(VR)正在逐渐渗透到我们生活的各个方面。本文将探讨这些技术的发展趋势以及它们如何相互结合创造出新的应用场景。我们将从各自的技术原理出发,分析其独立发展的同时,如何通过融合创新开辟出一片新天地,特别是在数据安全、智能城市和沉浸式体验等领域的应用前景。
|
机器学习/深度学习 算法
【机器学习基础】一元线性回归(适合初学者的保姆级文章)
【机器学习基础】一元线性回归(适合初学者的保姆级文章)
509 0
|
开发工具 git
Git 中 merge 和 rebase 的区别
$ git pull --rebase和$ git pull区别 是git fetch + git merge FETCH_HEAD的缩写,所以默认情况下,git pull就是先fetch,然后执行merge操作,如果加-rebase参数,就是使用git rebase代替git merge 。
30242 0
|
存储 Kubernetes 监控
KubeShark: Kubernetes 的 Wireshark
KubeShark: Kubernetes 的 Wireshark
376 0
KubeShark: Kubernetes 的 Wireshark
|
运维 安全 Linux
【内网穿透】Linux服务使用宝塔面板搭建网站,并内网穿透实现公网远程访问(上)
【内网穿透】Linux服务使用宝塔面板搭建网站,并内网穿透实现公网远程访问
|
安全 Java Apache
移除项目所有jar对log4j2 依赖
移除项目所有jar对log4j2 依赖
移除项目所有jar对log4j2 依赖
|
算法 语音技术 Python
Python算法:Brute-Force算法查找字符串子串位置
Python算法:Brute-Force算法查找字符串子串位置
148 0
Python算法:Brute-Force算法查找字符串子串位置