很老的题了,可以参考下面的python写的:
http://splunker.sinaapp.com/%E9%9D%A2%E8%AF%95%E9%A2%98%EF%BC%8C%E8%AE%A1%E7%AE%97%E6%B5%B7%E5%B2%B8%E7%BA%BF%E9%95%BF%E5%BA%A6/

解决方案 »

  1.   


    import java.io.File;
    import java.io.IOException;
    import java.util.Arrays;
    import java.util.Scanner;
    public class CoastLine {
        int n, m;
        int[][] g;
        
        CoastLine(int n, int m) {
            this.n = n;
            this.m = m;
            g = new int[n+2][m+2];
            
        }
        
        int coastLineLength() {
            dfs(0,0);
            int len = 0;
            for(int i=1; i<n+2; i++) {
                for(int j=1; j<m+2; j++) {
                    int test = g[i][j]+g[i-1][j]; 
                    if(test>=5 && test < 10) len++;
                    test = g[i][j]+g[i][j-1]; 
                    if(test>=5 && test < 10) len++;
                }
            }
            return len;
        }
        
        //将海域标记为5
        void dfs(int i, int j) {
            if(g[i][j] == 1) return;
            if(g[i][j] == 0) {
                g[i][j] = 5;
                if(i>0) dfs(i-1,j);
                if(i < n+1) dfs(i+1,j);
                if(j>0) dfs(i,j-1);
                if(j < m+1) dfs(i,j+1);
            }
        }    public static void main(String[] args) throws IOException {
            Scanner scanner = new Scanner(new File("d:\\a.txt"));
            String line = scanner.nextLine();
            int n = Integer.parseInt(line.split(" ")[0]);
            int m = Integer.parseInt(line.split(" ")[1]);
            System.out.println(n+" "+m);
            CoastLine c = new CoastLine(n,m);
            for(int i=0; i<n; i++) {
                line = scanner.nextLine();
                for(int j=0; j<m; j++) {
                    c.g[i+1][j+1] = line.charAt(j)-'0';
                }
            }
            scanner.close();
            
            System.out.println("result is "+c.coastLineLength());
            for(int i=0; i<n+1; i++)
                System.out.println(Arrays.toString(c.g[i]));
        }}
      

  2.   

    http://zhidao.baidu.com/link?url=bRmMxZLu1NynyxZtFJJAYd47wBXMb7sc57hEPo5JPYPjWuvd_WMPaYSjcCt9TFUiURha9qqf8mXa2iM_i5adqptyy9DThbmgnsYYfjySS9S
    感觉这个思路不错,希望能帮上楼主。