大家好,我是晴天学长,这道是蓝桥杯19年的国赛真题,并不难,有点像简单的搜索,但是一定要仔细读题,判断遍历的每个点的搜索方向!!需要的小伙伴请自取哦!
递增序列(满足一个都算)
从左向右看和从上向下看 是不同的顺序。
建立一个30 50 的字符型s数组
1.接收矩阵(快读)
2.遍历矩阵
统计递增序列
同一行的
同一列的
45度的(两个)
正45 从左往右 从上到下 注意是不一样的
逆45 从左往右 从上到下 是一样的
package LanQiaoTest.枚举;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class 递增序列 {
static char[][] N = new char[30][50];
public static void main(String[] args) throws IOException {
BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
String[] s;
for (int i = 0; i < 30; i++) {
s = in.readLine().split("");
for (int j = 0; j < 50; j++) {
N[i][j] = s[j].charAt(0);
}
}
int ans = 0;
for (int i = 0; i < 30; i++) {
for (int j = 0; j < 50; j++) {
ans += xyz(i, j, N);
}
}
System.out.println(ans);
}
private static int xyz(int x, int y, char[][] N) {
int sum = 0;
char a = N[x][y];
//同行
//从左往右看
for (int i = y; i < 50; i++) {
if (a < N[x][i]) {
sum++;
}
}
//同列
//从上往下看
for (int i = x; i < 30; i++) {
if (a < N[i][y]) {
sum++;
}
}
//45度 搜索!!!
//正45度,注意是不一样的
//先从左到右
for (int i = x, j = y; i >= 0 && j < 50; i--, j++) {
if (a < N[i][j]) {
sum++;
}
}
//从上到下
for (int i = x, j = y; i < 30 && j >= 0; i++, j--) {
if (a < N[i][j]) {
sum++;
}
}
//逆45度,都是一样的
for (int i = x, j = y; i < 30 && j < 50; i++, j++) {
if (a < N[i][j]) {
sum++;
}
}
return sum;
}
}