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;   
} 
相关文章
|
6月前
poj-1611-The Suspects
poj-1611-The Suspects
28 0
|
算法框架/工具
POJ 2262 Goldbach's Conjecture
POJ 2262 Goldbach's Conjecture
137 0
POJ 1936 All in All
POJ 1936 All in All
75 0
POJ 1012 Joseph
Joseph Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 53862   Accepted: 20551 Description The Joseph's problem is notoriously known.
841 0
|
测试技术
POJ 1001
此题用最朴素的思路实现即可,需模拟加法器,乘法器,最烦人的地方是特殊情形,如末位是小数点(12.^2=144,取小数点),整数末位是0(100^2=10000),0次幂,测试用例可能超出题目中说的范围,可能包含0次幂(100.0^0=0, 0.10^1=0.1)。
752 0
poj 2299 求逆序数
http://poj.org/problem?id=2299 #include using namespace std; int aa[500010],bb[500010]; long long s=0; void merge(int l,int m,int r) { ...
796 0
poj-3094-quicksum
http://poj.org/problem?id=3094 很简单 #include #include using namespace std; int main() { string a; int sum=0; while(getline(cin...
576 0
|
并行计算 网络架构
poj-1005-l tanink i need a houseboat
Description Fred Mapper is considering purchasing some land in Louisiana to build his house on. In the process of investigating the land, he learned ...
986 0