对于一个字母矩阵,我们称矩阵中的一个递增序列是指在矩阵中找到两个字母,它们在同一行,同一列,或者在同一 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"); } }