09.14广联达笔试

第一道(AC)
删除相邻重复元素 先手的是否能赢?
思路:删除相邻重复,删除次数为奇数就赢,偶数就输
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;

public class Main{
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        ArrayList<String> list = new ArrayList<>();
        for (int i = 0; i < n; i++) {
            String sb = sc.next();
            list.add(sb);
        }
        for (int i = 0; i < n; i++) {
            int time = find(list.get(i));
            if (time % 2 == 0) {
                System.out.println("No");
            } else {
                System.out.println("Yes");
            }
        }
    }

    public static int find(String sb) {
        int pre = 0;
        int time = 0;
        while (true) {
            pre = time;
            for (int i = 1; i < sb.length(); i++) {

                if (sb.charAt(i) == sb.charAt(i - 1)) {

                    time++;
                    sb = sb.substring(0, i - 1) + sb.substring(i + 1);
                }
            }
            if (pre == time) {
                break;
            }
        }
        return time;
    }
}



第二道(贪了82%,有没有AC大佬贴下代码
剪邮票,最少花费
思路:第一刀切小的,后面都切成1x1的,但只过了82
import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        int m = sc.nextInt();
        int k = sc.nextInt();
        int chang = n;
        int kuang = m;
        int min = Math.min(m,n);
        int res = 0;
        int time = 0;
        int x = min;
        for (int i = 2; i <= k; i++) {
            if (time != x) {
                res += min*min;
                min = 1;
                time++;
            } else {
                min = Math.min(Math.max(n,m) - 1, Math.min(n,m);
                res += min*min;
                time++;
            }

        }
        System.out.println(res);
    }
}

)


#笔试##广联达##秋招##面经#
全部评论
第二题
3 回复 分享
发布于 2022-09-15 00:41 重庆
第二题有没有ac大佬交流下
点赞 回复 分享
发布于 2022-09-14 23:16 浙江
public static void main(String[] args) {         Scanner sc = new Scanner(System.in);         int n = sc.nextInt();         int m = sc.nextInt();         int k = sc.nextInt();         int min = Math.min(m,n);         if (min != m) {             m -= 1;         } else {             n -= 1;         }         int res = 0;         int time = 0;         int x = min;         for (int i = 2; i <= k; i++) {             if (time != x) {                 res += min*min;                 min = 1;                 time++;             } else {                 min = Math.min(n,m);                 if (min != m) {                     m -= 1;                 } else {                     n -= 1;                 }                 res += min*min;                 time = 1;                 x = min;                 min = 1;             }         }         System.out.println(res);     } 根据你的代码改了一下,不知道可不可行
点赞 回复 分享
发布于 2022-09-15 00:32 浙江
第二题不能只切小的,比如4 5 6,你得切长的5x1
点赞 回复 分享
发布于 2022-09-15 00:54 北京
不知道这么dp行不行,别人问我,我自己写了一下,和楼上的大佬思路差不多
点赞 回复 分享
发布于 2022-09-15 10:57 上海
楼主做出来了吗 动规学的一塌糊涂
点赞 回复 分享
发布于 2022-09-16 16:28 湖北
进面试了吗?
点赞 回复 分享
发布于 2022-09-22 16:38 俄罗斯

相关推荐

评论
8
20
分享

创作者周榜

更多
牛客网
牛客企业服务