google中国编程赛的俩题 NO2!请高手做!
为了方便大家编程,我翻译了一下,E文不够好,自己想了之后翻译的,但是基本意决对够正确。刚掉线了,到现在才发上来。
给你一个变量(String)grid表示一个字母矩阵。另外加一个变量,string类型,find,代表你要在字母矩阵中找到的字母。开始的点可以是矩阵中的任一地方。路线可以是向上,向下,向左,向右,或者对角线方向上,从而到下一个字母去。可以多次重复路径,但是不能在一行内经过同一个格子两次(见例六的详细说明)[也就是不能从自己到自己]
你要返加一个整型变量,用来表示在格子内能找到所要求字母的路径的个数。如果结果大于1,000,000,000就返回-1。
一个类WordPath
countPaths
vECtor,string
intcountPaths(vectorgrid,stringfind)
(确保这个方法是公共的Public)
规定(要求)
grid数组要有1-50个元素,包括1,50
数组的每个元素是一个由1-50个大写字母组成的字符串。
元素与元素间,字符串的长度要相等。(以构成一个矩阵)
find变量是一个由1-50个大写字母组成的字符串。(包括1,50)
grid=
{"ABC",
"FeD",
"GHI"}
find="ABCDEFGHI"
只有一条路径,每个字母都走了一遍。
grid=
{"ABC",
"feD",
"GAI"}
find="ABCDEA"
一旦我们走到了字母E,我们可以有两个方向到达字母A。
grid=
{"ABC",
"DEF",
"GHI"}
find="ABCD"
当然是返回0
我们可以找到ABC的路径,但是,却不能一下子从C跳到D。
grid=
{"AA",
"AA"}
find="AAAA"
路径数108
四个方向中,我们可以从任何一个方向开始。从每个位置,我们都可以选择三个可行的方向中的一个到达第2个字母,同样的一直到第4个字母。所以4*3*3*3=108
grid=
{"ABABA",
"BABAB",
"ABABA",
"BABAB",
"ABABA"}
find="ABABABBA"
返回值:56448
太多了路径可以选择啊。
grid=
{"AAAAA",
"AAAAA",
"AAAAA",
"AAAAA",
"AAAAA"}
find="AAAAAAAAAAA"
路径数:-1
超过了1,000,000,000条路径,所以,按规定,返回-1。
grid=
{"AB",
"CD"}
find="AA"
我们不能停在同一个格子上,所以,没有路径可以选择。
程序说明所有权和解释权归TOPCoder公司。任何未经授权、没有得到TopCoder公司的签署的授权文件而使用或者更改此信息的行为,都将受到起诉。?2003,TopCoder,Inc.Allrightsreserved.
本回答由提问者推荐