笔试时间:2023年9月2日 秋招  第一题  题目:小美的升序数组  给定一个大小为n的数组a,请你判断一个数组是否满足以下条件:  1、数组严格升序,即a<a1<a2<...<an  2、对于1<=i<=n-1,我们定义bi=ai+1-ai,则数组b严格降序,即b1>b2>...>bn-1。  输入描述  第一行输入一个正整数n,代表数组的大小。  第二行输入n个正整数ai,代表给定的数组。  3<=n<=10^5  1<=ai<=10^9  输出描述  若满足给定的两个条件,则输出 Yes。否则输出 No。  样例输入     示例一:   3   1 3 4   示例二:   3   1 3 3    样例输出     示例一:   Yes   示例二:   No    参考题解  Java:  import java.util.Scanner;public class Main {    public static void main(String[] args) {        Scanner scanner = new Scanner(System.in);        int n = scanner.nextInt();        int[] a = new int[n + 1];        int[] b = new int[n];        boolean check = true;        for (int i = 1; i <= n; ++i) {            a[i] = scanner.nextInt();            if (a[i] <= a[i - 1])                check = false;            b[i - 1] = a[i] - a[i - 1];        }        for (int i = 1; i < n - 1; ++i) {            if (b[i] <= b[i + 1]) {                check = false;                break;            }        }        System.out.println(check ? "Yes" : "No");    }}  Python:  n = int(input())a = [0] * (n + 1)b = [0] * ncheck = Truefor i in range(1, n + 1):    a[i] = int(input())    if a[i] <= a[i - 1]:        check = False    b[i - 1] = a[i] - a[i - 1]for i in range(1, n - 1):    if b[i] <= b[i + 1]:        check = False        breakprint("Yes" if check else "No")  第二题  题目:小美的子序列  小美在n行m列的本子上写了许多字母,她会在每一行中找出一个字母,然后组成一个字符串。  小美想知道,组成的字符串中是否存在至少一个字符串包含 "meituan" 子序列。  输入描述  第一行输入2个整数n,m(1<=n,m<=1000) 。  接下来n行,每行输入一个长度为m的字符串表示小美写下的字母。  输出描述  若存在至少一个字符串包含 "meituan" 子序列,则输出 "YES",否则输出 "NO"。  样例输入     示例一:   3 3   abc   def   ghi   示例二:   8 2   nm   ex   it   td   ul   qu   ac   nt    样例输出     示例一:   No   解释:显然并不能找到meituan子序列。   示例二:   YES   解释:   第1行选择第2个字母。   第2行选择第1个字母。   第3行选择第1个字母。   第4行选择第1个字母。   第5行选择第2个字母。   第6行选择第2个字母。   第7行选择第1个字母。   第8行选择第1个字母。   组成字符串"meitluan",其中存在"meituan"子序列。   当然,第6行选第1个字母且第5行选第1个字母组成的字符串"meituqan"中也存在"meituan"子序列参考题解    Java:  import java.util.Scanner;public class Main {    public static void main(String[] args) {        Scanner scanner = new Scanner(System.in);        int n = scanner.nextInt();        int m = scanner.nextInt();        scanner.nextLine(); // Consume the newline character        String[] s = new String[n + 1];        boolean[][] ext = new boolean[7][n + 1];        boolean[][] dp = new boolean[n + 1][7];        for (int i = 1; i <= n; ++i) {            s[i] = scanner.nextLine();            for (int j = 1; j <= m; ++j) {                int t = decode(s[i].charAt(j - 1));                if (t >= 0) {                    ext[t][i] = true;                }            }        }        for (int i = 1; i <= n; ++i) {            for (int j = 0; j < 7; ++j) {                if (j == 0) {                    dp[i][j] = ext[j][i];                } else {                    dp[i][j] = dp[i - 1][j];                    if (ext[j][i]) {                        dp[i][j] = dp[i][j] || dp[i - 1][j - 1];                    }                }            }        }        System.out.println(dp[n][6] ? "YES" : "NO");    }    static int decode(char c) {        switch (c) {            case 'm':                return 0;            case 'e':                return 1;            case 'i':                return 2;            case 't':                return 3;            case 'u':                return 4;            case 'a':                return 5;            case 'n':                return 6;        }        return -1;    }}  Python:  def decode(c):    if c == 'm':        return 0    elif c == 'e':        return 1    elif c == 'i':        return 2    elif c == 't':        return 3    elif c == 'u':        return 4    elif c == 'a':        return 5    elif c == 'n':        return 6    return -1n, m = map(int, input().split())s = [""]ext = [[False] * (n + 1) for _ in range(7)]dp = [[False] * 7 for _ in r
点赞 3
评论 0
全部评论

相关推荐

季桑陌:这怎么看是不是外包啊
点赞 评论 收藏
分享
03-09 20:21
门头沟学院 Java
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务