度小满笔试情况,最后一题有大佬会做吗

2.18,前两题常规,最后一题不知道咋做。收拾收拾准备做广联达了

import java.util.Scanner;
/*
第一题
*/
public class Main {
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        int n = scan.nextInt();
        int k = scan.nextInt();
        int[] nums = new int[n];
        for (int i = 0; i < n; i++) {
            nums[i] = scan.nextInt();
        }
        int res=0;
        for (int i = 0; i < n; i++) {
            int max = nums[i];
            int min = nums[i];
            for (int j = i; j < n; j++) {
                max = Math.max(max,nums[j]);
                min = Math.min(min,nums[j]);
                if(max==min*k){
                    res++;
                }
            }
        }
        System.out.println(res);
    }
}

/*
第二题
*/
public class Main {
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        int T = scan.nextInt();
        while(T-->0){
            int n = scan.nextInt();
            int m = scan.nextInt();
            int k = scan.nextInt();
            long x = scan.nextLong();
            int[][] nums = new int[n][m];
            for (int i = 0; i < n; i++) {
                for (int j = 0; j < m; j++) {
                    nums[i][j] = scan.nextInt();
                }
            }
            if(dfs(nums,0,0,0,x)){
                System.out.println("yes");
            }else{
                System.out.println("no");
            }
        }
    }

    public  static  boolean dfs(int[][] nums , int i,int j,long sum,long target){
        if(i>= nums.length||j>=nums[0].length)return false;
        sum +=nums[i][j];
        if(sum==target && i==nums.length-1 && j==nums[0].length-1){
            return true;
        }
        return dfs(nums,i+1,j,sum,target)||dfs(nums,i,j+1,sum,target);
    }
}


#度小满##笔试##度小满笔试#
全部评论
第三题使用DP过了 dp[i][j] 表示第 i 位以 j 结尾的方案数 cpp代码如下: #include <bits/stdc++.h> using namespace std; const int MOD = 1e9 + 7; const int MAXN = 1e5 + 50; int dp[MAXN][9]; int main(){   for(int i = 0; i < 9; i++) dp[0][i] = 1;   for(int i = 1; i < 9; i++) dp[1][i] = 9;   dp[1][0] = 8;   for(int i = 2; i < MAXN; i++){     for(int j = 0; j < 9; j++){       int cur = j + 1;       if(cur != 1){         int num = 0;         for(int k = 0; k < 9; k++){           num = (num + dp[i - 1][k]) % MOD;         }         dp[i][j] = num;       }else{         int num = 0;         for(int k = 1; k < 9; k++){           num = (num + dp[i - 2][k]) % MOD;         }         int summ = 0;         for(int k = 1; k < 9; k++) summ  = (summ + num) % MOD;         dp[i][j] = summ;       }     }   }   int summ = 0;   int n = 0;   cin >> n;     for(int k = 0; k < 9; k++){       summ = (summ + dp[n - 1][k]) % MOD;     }     cout << summ << endl;   return 0; }
3 回复 分享
发布于 2022-08-31 20:55 江苏
可以发一下第二题吗
1 回复 分享
发布于 2022-08-31 20:34 重庆
第三题把n等于1 2 3的情况列出来,剩下的去除用dp[i-1]和的dp[i-3]去推就行了
1 回复 分享
发布于 2022-09-01 10:25 湖北
第二题很莫名其妙才过了36,感觉我的dfs没问题😅
点赞 回复 分享
发布于 2022-08-31 20:35 浙江
第一题直接暴力吗,亏我还用了单调栈
点赞 回复 分享
发布于 2022-08-31 20:42 广东
第三题我写了三个用例上去。过36%🤣
点赞 回复 分享
发布于 2022-08-31 21:34 广东
第二题是啥题目来着连做三场人都麻了
点赞 回复 分享
发布于 2022-08-31 22:26 陕西
Excuse me,欢迎大佬们投递富途,头牌互联网券商。内推码:NTAMp00 内推直投链接:https://app.mokahr.com/recommendation-apply/futu5/1699?recommendCode=NTAMp00 各大岗位都有在招哟~
点赞 回复 分享
发布于 2022-09-01 11:51 广东

相关推荐

头像
11-09 12:17
清华大学 C++
out11Man:小丑罢了,不用理会
点赞 评论 收藏
分享
Natrium_:这时间我以为飞机票
点赞 评论 收藏
分享
4 13 评论
分享
牛客网
牛客企业服务