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;   
} 
相关文章
|
7月前
poj-1611-The Suspects
poj-1611-The Suspects
32 0
|
容器
POJ 3640 Conformity
POJ 3640 Conformity
59 0
POJ 1936 All in All
POJ 1936 All in All
79 0
|
人工智能 机器学习/深度学习
poj 3620
题意:给出一个矩阵,其中有些格子干燥、有些潮湿。       如果一个潮湿的格子的相邻的四个方向有格子也是潮湿的,那么它们就可以构成更大       的湖泊,求最大的湖泊。       也就是求出最大的连在一块儿的潮湿的格子的数目。
576 0
|
人工智能
POJ 2531
初学dfs参考别人代码,如有雷同,见怪不怪。#include using namespace std; int aa[25][25]; int maxa=0; int step[25]={0},n; void dfs(int a,int b) { int t=b; step...
715 0
|
算法 数据建模 机器学习/深度学习
|
测试技术
poj-1218 THE DRUNK JAILER 喝醉的狱卒
自己去看看原题; 题目大意: 就是一个狱卒喝醉了,他第一趟吧所有的监狱都带开,第二趟把能把二整除的监狱关闭,第三趟操作能把三整除的监狱; 求最后能逃跑的罪犯数 输入第一个数是代表 测试数据组数 每个数据代表狱卒来回的次数 当作开关问题即可 #include using names...
1014 0
|
JavaScript
下一篇
DataWorks