2011年2月20日日曜日

Aizu Online Judge 0151 Grid

■0151 Grid

適当に全方向探索するだけ.

  1. import java.util.*;  
  2. import java.lang.*;  
  3. import java.math.*;  
  4. import java.io.*;  
  5.   
  6. import static java.lang.Math.*;  
  7. import static java.util.Arrays.*;  
  8.   
  9. public class Main{  
  10.   
  11.  Scanner sc=new Scanner(System.in);  
  12.   
  13.  int INF=1<<28;  
  14.  double EPS=1e-9;  
  15.   
  16.  int[][] a;  
  17.  int n;  
  18.   
  19.  void run(){  
  20.   for(;;){  
  21.    n=sc.nextInt();  
  22.    if(n==0){  
  23.     break;  
  24.    }  
  25.    a=new int[n][n];  
  26.    for(int j=0; j<n; j++){  
  27.     String s=sc.next();  
  28.     for(int i=0; i<n; i++){  
  29.      a[j][i]=s.charAt(i)-'0';  
  30.     }  
  31.    }  
  32.    solve();  
  33.   }  
  34.  }  
  35.   
  36.  void solve(){  
  37.   int ans=0;  
  38.   for(int j=0; j<n; j++){  
  39.    for(int i=0, k=0; i<n; i++)  
  40.     ans=Math.max(ans, k=(k+1)*a[j][i]);  
  41.    for(int i=0, k=0; i<n; i++)  
  42.     ans=Math.max(ans, k=(k+1)*a[i][j]);  
  43.    for(int i=0, k=0; j+i<n; i++)  
  44.     ans=Math.max(ans, k=(k+1)*a[j+i][i]);  
  45.    for(int i=0, k=0; j-i>=0; i++)  
  46.     ans=Math.max(ans, k=(k+1)*a[j-i][i]);  
  47.    for(int i=0, k=0; j+i<n; i++)  
  48.     ans=Math.max(ans, k=(k+1)*a[j+i][n-1-i]);  
  49.    for(int i=0, k=0; j-i>=0; i++)  
  50.     ans=Math.max(ans, k=(k+1)*a[j-i][n-1-i]);  
  51.   }  
  52.   println(""+ans);  
  53.  }  
  54.   
  55.  void debug(Object... os){  
  56.   System.err.println(Arrays.deepToString(os));  
  57.  }  
  58.   
  59.  void print(String s){  
  60.   System.out.print(s);  
  61.  }  
  62.   
  63.  void println(String s){  
  64.   System.out.println(s);  
  65.  }  
  66.   
  67.  public static void main(String[] args){  
  68.   // System.setOut(new PrintStream(new BufferedOutputStream(System.out)));  
  69.   new Main().run();  
  70.  }  
  71. }  

0 件のコメント: