您的位置:首页 > 运维架构

ACM Hopscotch(挑战程序设计竞赛)

2014-10-15 11:16 405 查看


Hopscotch

Time Limit: 1000ms

Memory Limit: 65536KB
This problem will be judged on PKU.
Original ID: 3050

64-bit integer IO format: %lld
Java class name: Main

Prev

Submit Status Statistics Discuss
Next

Type:

None

None Graph Theory
2-SAT Articulation/Bridge/Biconnected Component
Cycles/Topological Sorting/Strongly Connected Component
Shortest Path
Bellman Ford Dijkstra/Floyd Warshall
Euler Trail/Circuit
Heavy-Light Decomposition Minimum Spanning Tree
Stable Marriage Problem
Trees Directed Minimum Spanning Tree
Flow/Matching
Graph Matching Bipartite Matching
Hopcroft–Karp Bipartite Matching
Weighted Bipartite Matching/Hungarian Algorithm
Flow
Max Flow/Min Cut Min Cost Max Flow
DFS-like
Backtracking with Pruning/Branch and Bound
Basic Recursion IDA* Search
Parsing/Grammar Breadth First Search/Depth First Search
Advanced Search Techniques
Binary Search/Bisection Ternary Search
Geometry
Basic Geometry Computational Geometry
Convex Hull
Pick's Theorem Game Theory
Green Hackenbush/Colon Principle/Fusion Principle
Nim Sprague-Grundy Number
Matrix Gaussian Elimination
Matrix Exponentiation Data Structures
Basic Data Structures Binary Indexed Tree
Binary Search Tree
Hashing Orthogonal Range Search
Range Minimum Query/Lowest Common Ancestor
Segment Tree/Interval Tree Trie Tree
Sorting
Disjoint Set String
Aho Corasick Knuth-Morris-Pratt
Suffix Array/Suffix Tree Math
Basic Math Big Integer Arithmetic
Number Theory Chinese Remainder Theorem
Extended Euclid
Inclusion/Exclusion Modular Arithmetic
Combinatorics
Group Theory/Burnside's lemma Counting
Probability/Expected Value
Others Tricky
Hardest Unusual
Brute Force Implementation
Constructive Algorithms Two Pointer
Bitmask Beginner
Discrete Logarithm/Shank's Baby-step Giant-step Algorithm
Greedy Divide and Conquer
Dynamic Programming
Tag it!

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


Source

USACO 2005 November Bronze
#include <iostream>
#include <cstdio>
#include <set>

using namespace std;

#define MAX_N 5

int map[MAX_N][MAX_N];
set<int> table;
int dx[]={1,-1,0,0};
int dy[]={0,0,1,-1};

void DFS(int x,int y,int cur,int num)
{
if(cur==5)
{
if(table.find(num)==table.end())
{
table.insert(num);
}

return;
}

for(int i=0;i<4;i++)
{
int nx=x+dx[i],ny=y+dy[i];

if(nx>=0 && nx<5 && ny>=0 && ny<5)
{
DFS(nx,ny,cur+1,num*10+map[ny][nx]);
}
}
}

int main()
{
for(int i=0;i<5;i++)
for(int j=0;j<5;j++)
scanf("%d",&map[i][j]);

for(int i=0;i<5;i++)
for(int j=0;j<5;j++)
{
DFS(j,i,0,map[i][j]);
}

printf("%d\n",table.size());

return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: