锘??xml version="1.0" encoding="utf-8" standalone="yes"?>天堂av在线免费观看,日韩av毛片,国产美女在线播放http://www.aygfsteel.com/spirit/zh-cnMon, 07 Jul 2025 13:01:58 GMTMon, 07 Jul 2025 13:01:58 GMT60Google Code Jam - WordPathhttp://www.aygfsteel.com/spirit/archive/2005/12/19/24645.htmlSpiritSpiritMon, 19 Dec 2005 08:36:00 GMThttp://www.aygfsteel.com/spirit/archive/2005/12/19/24645.htmlhttp://www.aygfsteel.com/spirit/comments/24645.htmlhttp://www.aygfsteel.com/spirit/archive/2005/12/19/24645.html#Feedback0http://www.aygfsteel.com/spirit/comments/commentRss/24645.htmlhttp://www.aygfsteel.com/spirit/services/trackbacks/24645.html - Implementation
public class WordPath {    
    
public int countPaths(String[] grid, String find) {
        
int length = grid.length + 2;      
        
        
//convert "grid" from String to char matrix
        char[][] charGrid = new char[length][length];
        
for (int i = 0; i < length; i++) {
            
for (int j = 0; j < length; j++) {
                
if (i == 0 || i == length - 1 || j == 0 || j == length - 1)
                    charGrid[i][j] 
= '0';
                
else
                    charGrid[i][j] 
= grid[i - 1].charAt(j - 1);
            }
        }
        
        
//convert "find" from String to char array
        char[] charFind = new char[find.length()];
        
for (int k = 0; k < find.length(); k++)
            charFind[k] 
= find.charAt(k);

        
//use three dimensions "degree" to hold the in-degree of the vertex of graph
        int[][][] degree = new int[length][length][find.length()];        

        
// k=0
        for (int i = 0; i < length; i++)
            
for (int j = 0; j < length; j++) {
                degree[i][j][
0= ((charGrid[i][j] == charFind[0]) ? 1 : 0);
            }
        
        
// fill the degree 
        for (int k = 1; k < find.length(); k++) {
            
for (int i = 0; i < length; i++)
                
for (int j = 0; j < length; j++) {
                    
if (charGrid[i][j] != charFind[k])
                        degree[i][j][k] 
= 0;
                    
else {
                        degree[i][j][k] 
= degree[i - 1][j - 1][k - 1+ degree[i - 1][j][k - 1]
                                
+ degree[i - 1][j + 1][k - 1+ degree[i + 1][j - 1][k - 1]
                                
+ degree[i + 1][j][k - 1+ degree[i + 1][j + 1][k - 1]
                                
+ degree[i][j - 1][k - 1+ degree[i][j + 1][k - 1];

                    }

                }
        }
        
        
//calculate the sum
        int sum = 0;
        
for (int i = 0; i < length; i++)
            
for (int j = 0; j < length; j++) {
                sum 
+= degree[i][j][find.length() - 1];
                
if (sum > 1000000000) {
                    
return -1;
                }
            }
        
return sum;
    }
}

- TestCase
public class WordPathTest extends TestCase {
    
public void testCountPaths() {
        WordPath wordPath 
= new WordPath();
        assertEquals(
2, wordPath.countPaths(new String[] { "ABC""FED""GAI" }, "ABCDEA"));
        assertEquals(
0, wordPath.countPaths(new String[] { "ABC""DEF""GHI" }, "ABCD"));
        assertEquals(
108, wordPath.countPaths(new String[] { "AA""AA" }, "AAAA"));
        assertEquals(
56448, wordPath.countPaths(new String[] { "ABABA""BABAB""ABABA""BABAB""ABABA" },
                
"ABABABBA"));
        assertEquals(
-1, wordPath.countPaths(new String[] { "AAAAA""AAAAA""AAAAA""AAAAA""AAAAA" },
                
"AAAAAAAAAAA"));
        assertEquals(
0, wordPath.countPaths(new String[] { "AB""CD" }, "AA"));
    }
}

This testcase finished after 0.015 seconds on my pc.

http://forum.javaeye.com/viewtopic.php?p=106316#106316


Spirit 2005-12-19 16:36 鍙戣〃璇勮
]]>
Google Code Jam - SkipStones鐨勪竴縐嶉掑綊綆楁硶http://www.aygfsteel.com/spirit/archive/2005/12/15/24018.htmlSpiritSpiritThu, 15 Dec 2005 05:29:00 GMThttp://www.aygfsteel.com/spirit/archive/2005/12/15/24018.htmlhttp://www.aygfsteel.com/spirit/comments/24018.htmlhttp://www.aygfsteel.com/spirit/archive/2005/12/15/24018.html#Feedback1http://www.aygfsteel.com/spirit/comments/commentRss/24018.htmlhttp://www.aygfsteel.com/spirit/services/trackbacks/24018.htmlpublic class SkipStones {
    
private String water = "X";

    
public int maxDistance(String water) {
        
this.water = water;
        
int max = 0;
        
int sum = 0;
        
for (int initial = 1; initial < water.length() + 1; initial++) {
            sum 
= bounce(0, initial);
            max 
= (sum > max ? sum : max);
        }
        
return max;
    }

    
private int bounce(int startDistance, int bounceDistance) {
        
if (bounceDistance == 0)
            
return startDistance;

        
if ((startDistance + bounceDistance) > water.length())
            
return -1;

        
if (water.charAt(startDistance + bounceDistance - 1== 'X')
            
return startDistance;

        
return bounce(startDistance + bounceDistance, bounceDistance / 2);
    }

    
public static void main(String[] args) {
        SkipStones skipStones 
= new SkipStones();
        System.out.println(skipStones.maxDistance(args[
0]));
    }
}



Spirit 2005-12-15 13:29 鍙戣〃璇勮
]]>
主站蜘蛛池模板: 崇仁县| 东莞市| 太保市| 越西县| 白沙| 大渡口区| 依兰县| 化隆| 静安区| 太仓市| 上高县| 铜陵市| 郧西县| 大邑县| 柘城县| 靖宇县| 苍南县| 清涧县| 翁源县| 扬州市| 治多县| 金塔县| 襄樊市| 平山县| 雷波县| 黑河市| 罗平县| 临猗县| 临海市| 商南县| 偏关县| 洛宁县| 马龙县| 呼图壁县| 葵青区| 稷山县| 嫩江县| 丰县| 靖江市| 财经| 广元市|