<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    Spirit

    2005年12月19日 #

    Google Code Jam - WordPath

    - 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

    posted @ 2005-12-19 16:36 Spirit 閱讀(349) | 評論 (0)編輯 收藏

    2005年12月15日 #

    Google Code Jam - SkipStones的一種遞歸算法

    public 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]));
        }
    }

    posted @ 2005-12-15 13:29 Spirit 閱讀(357) | 評論 (1)編輯 收藏

    僅列出標(biāo)題  
    主站蜘蛛池模板: 久久亚洲精品无码av| 免费毛片在线播放| 色老头综合免费视频| 亚洲国产av高清无码| 亚洲成色WWW久久网站| 亚洲天堂在线视频| 在线观看91精品国产不卡免费| 69视频在线观看高清免费| 日本免费A级毛一片| a一级毛片免费高清在线| 无码天堂亚洲国产AV| 亚洲国产美女精品久久久| 亚洲国产精品专区| 亚洲精品国产第1页| 久久亚洲精品国产精品| 久久亚洲免费视频| 亚洲高清国产拍精品26U| 色噜噜AV亚洲色一区二区| 亚洲国产精品丝袜在线观看| 国产成人免费A在线视频| 成全影视免费观看大全二| 欧美a级在线现免费观看| 中文字幕无码免费久久99| 国产v精品成人免费视频400条| 久久久久久精品成人免费图片| 67194成手机免费观看| 精品无码国产污污污免费网站| 99久在线国内在线播放免费观看 | 在线观看无码的免费网站| 动漫黄网站免费永久在线观看| 性xxxxx免费视频播放| 国拍在线精品视频免费观看| 国产92成人精品视频免费| 可以免费看的卡一卡二| 在线观看的免费网站| 成人黄动漫画免费网站视频| 最好免费观看韩国+日本| 又粗又硬又黄又爽的免费视频 | 亚洲熟妇少妇任你躁在线观看| 亚洲永久网址在线观看| 亚洲乱亚洲乱妇24p|