趋势科技第二题


再借借群里老哥的图...

import java.util.Arrays;
import java.util.Scanner;

public class Main {
    private static String process(String num1, String num2) {
        // 坑1:输入转换
        String[] strs = num1.split(" ");
        int[] nums = new int[6];
        int num = Integer.parseInt(num2);
        for (int i = 0; i < strs.length; i++) {
            nums[i] = Integer.parseInt(strs[i]);
        }
        int ans = 0;
        // 直接暴力..
        for (int i = 0; i <= nums[0]; i++) {
            for (int j = 0; j <= nums[1]; j++) {
                for (int k = 0; k <= nums[2]; k++) {
                    for (int l = 0; l <= nums[3]; l++) {
                        for (int m = 0; m <= nums[4]; m++) {
                            for (int n = 0; n <= nums[5]; n++) {
                                if (i + 5 * j + 10 * k + 20 * l + 50 * m + n * 100 == num) {
                                    ans += i + j + k + l + m + n;
                                }
                            }
                        }
                    }
                }
            }
        }
        // 如果没有返回 - 1
        return ans == 0 ? "-1" : String.valueOf(ans);
    }

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);

        String strValueSequences = sc.nextLine();
        String strChargeNum = sc.nextLine();

        String sum = process(strValueSequences, strChargeNum);
        System.out.println(sum);
    }
}
#趋势科技##笔试题目##Java#
全部评论
没参加笔试, 看到题目顺手做下, 差不多就多重背包问题, 统计数量的话直接dp不优化应该也差不多. #include<bits/stdc++.h> using namespace std; int main(){ vector<int> c(6); vector<int> v{1, 5, 10, 20, 50, 100}; for (int i = 0; i < 6; i++) { cin >> c[i]; } int n; cin >> n; vector<int> cur(n + 1, 0); vector<int> dp(n + 1, 0); dp[0] = 0; cur[0] = 1; for (int i = 0; i < 6; i++) { for (int j = n; j >= v[i]; j--) { for (int k = 1; k <= c[i] && j - k * v[i] >= 0; k++) { dp[j] += dp[j - k * v[i]] + k * cur[j - k * v[i]]; cur[j] += cur[j - k * v[i]]; } } } cout << dp[n] << endl; }
点赞 回复 分享
发布于 2019-08-08 21:08
一时暴力一时爽,一直暴力一直爽
点赞 回复 分享
发布于 2019-08-08 20:34
老哥,过了多少?
点赞 回复 分享
发布于 2019-08-08 20:37
***求长度的才看到,我以为直接母函数草
点赞 回复 分享
发布于 2019-08-08 20:38
测试样例还记得吗
点赞 回复 分享
发布于 2019-08-08 20:40
不让用python也是很蛋疼的,开卷五分钟直接交了。。。。python的暴力求解,输入的时候有个map函数可以直接全部转换的,但是本地一直报错,哪个老哥可以给讲一下 import sys if __name__=='__main__':     list1 = sys.stdin.readline().strip().split(' ')     sum = int(sys.stdin.readline().strip())     res = 0     for x1 in range(int(list1[0])+1):         for x5 in range(int(list1[1])+1):             for x10 in range((int(list1[2])+1)):                 for x20 in range((int(list1[3])+1)):                     for x50 in range((int(list1[4])+1)):                         for x100 in range((int(list1[5])+1)):                             if 1*x1 + 5*x5 + 10*x10 + 20*x20 + 50*x50 + 100*x100 == sum:                                 temp = x1 + x5 + x10 + x20 + x50 + x100                                 res += temp                                 temp = 0     if res < 1:         print('-1')     else:         print(res)
点赞 回复 分享
发布于 2019-08-08 20:54
这么暴力,复杂度能通过吗?😂😂
点赞 回复 分享
发布于 2019-08-09 08:26

相关推荐

jack_miller:我给我们导员说我不在这里转正,可能没三方签了。导员说没事学校催的时候帮我想办法应付一下
点赞 评论 收藏
分享
3 24 评论
分享
牛客网
牛客企业服务