对于一个字母矩阵,我们称矩阵中的一个递增序列是指在矩阵中找到两个字母,它们在同一行,同一列,或者在同一 4545 度的斜线上,这两个字母从左向右看、或者从上向下看是递增的。
例如,如下矩阵中
LANN
QIAO
有LN、LN、AN、AN、IO、AO、LQ、AI、NO、NO、AQ、IN、AN等 13 个 递增序列。注意当两个字母是从左下到右上排列时,从左向右看和从上向下看 是不同的顺序。
import java.util.Scanner;
// 1:无需package
// 2: 类名必须Main, 不可修改
public class Main {
public static int is1(char ch[][],int m,int n){
int ans=0;
for (int i=0;i<m;i++){
for (int j=0;j<n;j++){
int add=1;
while(j+add<n){
if(ch[i][j]<ch[i][j+add]) ans++; //横
add++;
}
add=1;
while(i+add<m){
if(ch[i][j]<ch[i+add][j]) ans++; //列递增
add++;
}
add=1;
while (i+add<m&&j+add<n){
if (ch[i][j]<ch[i+add][j+add]) ans++; //右下
add++;
}
add =1;
while(i-add>=0&&j+add<n){
if (ch[i][j]<ch[i-add][j+add]) ans++; //右上
add++;
}
add=1;
while(i+add<m&&j-add>=0){
if (ch[i][j]<ch[i+add][j-add]) ans++; //左下
add++;
}
}
}
return ans;
}
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
int m=30,n=50;
char ch[][] = new char[m][n];
for(int i=0;i<m;i++){
char st[] = scan.nextLine().toCharArray();
ch[i] = st;
}
System.out.println(is1(ch,m,n));
//在此输入您的代码...
scan.close();
//System.out.println("52800");
}
}