笔试时间:2023年8月13日 秋招  第一题  题目:最大优美排列  小红认为一个排列是优美的,当且仅当对于任意i∈[1,n],aai=n-ai+1成立,其中n代表排列的长度,ai表示排列的第i个元素。她想知道 1-n的所有优美排列中,字典序最大的是哪一个?注意,排列的定义为,若长度为n的序列中,1到n都出现过且仅出现一次,则称该序列为一个排列  输入描述  一个正整数n(1<=n<=10^5),代表排列的长度。  输出描述  一行n个正整数,用空格隔开。代表字典序最大的优美排列。  样例输入     2    样例输出     2 1    参考题解  C++:  #include <iostream>using namespace std;int main() {    int n;    cin >> n;    while (n > 0) {        cout << n-- << " ";    }    return 0;}  Java:  import java.util.Scanner;// 注意类名必须为 Main, 不要有任何 package xxx 信息public class Main {    public static void main(String[] args) {        Scanner in = new Scanner(System.in);        // 注意 hasNext 和 hasNextLine 的区别        int n = in.nextInt();        while (n > 0) {            System.out.print(n-- + " ");        }    }}  第二题  题目:小红走字符串  小红有一个长度为n字符串s,他需要从第 1 个字符走到第n个字符,他每次只能走到相邻的字符。当他从si走到si+1时,他会消耗si+1-si点体力值。si+1-si若是负数,意味着他将恢复|si+1-si|点体力值,若体力值消耗到小于 0,则小红将无法继续走。字符相减时字符'a'代表 1,字符'b'代表 2.....以此类推。已知小红现在有k点体力值,他能否从s1走到sn。若能走到,请输出他的剩余体力值,否则输出 -1。  输入描述  第一行两个整数n,k(1<=n,k<=10^5)。 第二行一个长度为n字符串s.  输出描述  一行一个整数,表示他的剩余体力值。若无法走到,则输出 -1。  样例输入     5 2   abcca    样例输出     2    初始处理第一个字符时,体力值为2。  处理第二个字符时,体力值为1。  处理第三个字符时,体力值为0。  处理第四个字符时,体力值为0。  处理第五个字符时,体力值为2。  最终输出2  参考题解  C++:  #include <iostream>using namespace std;int main() {    int n, k;    cin >> n >> k;    cin.ignore(); // Consume the newline character    string s;    getline(cin, s);    int index = 1;    while (index < n) {        if (k < s[index] - s[index - 1]) {            cout << -1 << endl;            return 0;        }        k -= s[index] - s[index - 1];        index++;    }    cout << k << endl;    return 0;}  Java:  import java.util.*;// 注意类名必须为 Main, 不要有任何 package xxx 信息public class Main {    public static void main(String[] args) {        Scanner in = new Scanner(System
点赞 1
评论 1
全部评论

相关推荐

今天 12:04
门头沟学院 Java
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
今天 14:18
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务