• 数据结构/算法模板


    2.背包问题

    0-1背包

    基础背景: 给定一个V体积的为盒子,你有n个物品,每个物品的体积 和 价值 分别为vi、wi,求在不超过V的条件下,尽可能让盒子中的物品总价值大。每种物品只能选1次或者0次。

    #include<bits/stdc++.h>
    
    using namespace std;
    
    const int N = 5050;
    int V, n;
    int v[N], W[N];
    
    int main()
    {
    	cin >> V >> n;
    	// 读入v[i] 和 c[i]
    	int f[V+1];  //dp数组
    	memset(f, 0, size(f));
    	for(int i=1; i<=n; i++) {
    		for(int j=V; j>=v[i]; j--) {
    			f[j] = max(f[j], f[j-v[i]]+w[i]);
    		}
    	}
    	cout << f[V] << "
    "; // f[V]最优解 
    	return 0;
    }
    
    

    完全背包

    基础背景: 前提条件与0-1背包一致,不同的是,完全背包中,每种物品能有无穷个供选。

    #include<bits/stdc++.h>
    
    using namespace std;
    
    const int N = 5050;
    int V, n;
    int v[N], W[N];
    
    int main()
    {
    	cin >> V >> n;
    	// 读入v[i] 和 c[i]
    	int f[V+1];  //dp数组
    	memset(f, 0, size(f));
    	for(int i=1; i<=n; i++) {
    		for(int j=v[i]; j<=V; j++) {
    			f[j] = max(f[j], f[j-v[i]]+w[i]);
    		}
    	}
    	cout << f[V] << "
    "; // f[V]最优解 
    	return 0;
    }
    
    

    多重背包

    基础背景:给定一个V体积的为盒子,你有n个物品,每个物品的体积、价值、个数,分别为vi、wi、ci,求在不超过V的条件下,尽可能使盒子中的物品总价值最大。每种物品可以选0-ci次。

    待补充
    

    1.Trie字典树

    /**
    	Trie字典树模板
    */
    public class Trie {
    	private class Node {
    		char c;
    		boolean end;
    		Map<Character, Node> children;
    
    		public Node(char _c) {
    			c = _c;
    			children = new HashMap<>();
    		}
    	}
    
    	Node root;
    
    	public Trie() {
    		root = new Node('#');
    	}
    
            // 构建Trie树
    	public void insert(String s) {
    		Node p = root;
    		for(char c : s.toCharArray()) {
    			p.children.putIfAbsent(c, new Node(c));
    			p = p.children.get(c);
    		}
    		p.end = true;
    	}
    
            // 查询是否存在匹配串
    	public boolean query(String s) {
    		Node p = root;
    		for(char c : s.toCharArray()) {
    			Node son = p.children.get(c);
    			if(son==null) return false;
    			p = son;
    		}
    		return p.end;
    	}
    }
    
  • 相关阅读:
    电话号码和手机号码正则
    IntelliJ Idea 常用快捷键
    springboot常用注解
    idea常用快捷键和插件
    百度地图API的使用方法
    js 经常用到的键盘码
    https://www.cnblogs.com/
    axios传参 后台接收为空
    面相对象之继承
    初始面向对象
  • 原文地址:https://www.cnblogs.com/Krisone/p/13488368.html
Copyright © 2020-2023  润新知