简单的模拟
向右,向下,向右下
package 算法;
import java.util.Scanner;
public class 寻找20 {
static int N = 100000 * 4 + 5;
static int M = 1000 + 5;
static int mod = 1000000009;
static Scanner cin = new Scanner(System.in);
static int ans = 0, n, m;
static char c[][] = new char[M][M];
public static void main(String[] args) {
int n1 =0;
while(cin.hasNext()) {
String s = cin.next();
if ("end".equals(s))
break;
m = s.length();
c[n++] = s.toCharArray();
}
for(int i = 0; i < n; i++){
for(int j = 0; j < m; j++){
if (c[i][j]=='2')
check(i,j);
}
}
System.out.println(ans);
}
private static void check(int i, int j) {
if(i + 3 < n)
if(c[i+1][j] == '0' && c[i+2][j] == '2' && c[i+3][j] == '0')
++ans;
if(j + 3 < m)
if(c[i][j+1] == '0' && c[i][j+2] == '2' && c[i][j+3] == '0')
++ans;
if(i + 3 < n && j + 3 < n)
if(c[i+1][j+1] == '0' && c[i+2][j+2] == '2' && c[i+3][j+3] == '0')
++ans;
}
}
因篇幅问题不能全部显示,请点此查看更多更全内容