首页 > 奇安信8.1 Java 笔试
头像
是瑶瑶公主呀
编辑于 2020-08-01 17:02
+ 关注

奇安信8.1 Java 笔试

选择
构建最小堆时间复杂度
不是链路层的功能
Java单继承
值传递和指针传递
内核锁
删除视图SQL
CPU调度高级、中级、低级
IPV6
稳定排序的含义
索引作用
自增运算符
符号链接
视图作用
不稳定的排序
二叉树排序
((x>4)?99.9:9) 隐式类型转换
出入栈
nlogn 的排序
C类网络地址
虚存只受什么限制

算法1 完全背包问题 就是转换成了物资

import java.util.Scanner;

public class Main {

    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        // 总预算
        int t = input.nextInt();
        // 物资总数
        int n = input.nextInt();
        // 每个物品的价格
        int[] prices = new int[n];
        // 每个物品的价值
        int[] values = new int[n];
        for (int i = 0; i < n; i++) {
            prices[i] = input.nextInt();
            values[i] = input.nextInt();
        }

        // 预算为 t 时的最大价值
        int[] dp = new int[t + 1];

        for (int i = 0; i < n; i++) {
            for (int j = prices[i]; j < t + 1; j++) {
                dp[j] = Math.max(dp[j], dp[j - prices[i]] + values[i]);
            }
        }

        // 输出结果
        System.out.println(dp[t]);
    }
}

算法2 考查全排列

import java.util.*;

public class Solution {
    // 保存所有组合的数字
    private List<Integer> list = new ArrayList<>();

    public static void main(String[] args) {
        int x = 4;
        System.out.println(" " + ((x>4)?99.9:9));
    }

    public int reletive_7(int[] digit) {
        // write code here
        backtrack(digit, 0, digit.length - 1);
        int count = 0;
        for (int number : list) {
            if (number % 7 == 0) {
                count++;
            }
        }
        return count;
    }

    // 回溯法
    private void backtrack(int[] digit, int m, int n) {
        // 到达末尾
        if (m == n) {
            // 将数组拼接成数字,添加到结果集
            StringBuilder sb = new StringBuilder();
            for (int i = 0; i <= n; i++) {
                sb.append(digit[i]);
            }
            list.add(Integer.parseInt(sb.toString()));
        } else {
            for (int i = m; i <= n; i++) {
                // 交换数字位置
                swap(digit, m, i);
                backtrack(digit, m + 1, n);
                // 恢复数字位置
                swap(digit, m, i);
            }
        }
    }

    // 交换两位置数字
    private void swap(int[] digit, int i, int j) {
        int temp = digit[i];
        digit[i] = digit[j];
        digit[j] = temp;
    }
}

全部评论

(3) 回帖
加载中...
话题 回帖

推荐话题

相关热帖

历年真题 真题热练榜 24小时
技术(软件)/信息技术类
查看全部

近期精华帖

热门推荐