算法-编程
编程类算法
yushi819
爱算法、爱编程
展开
-
LeetCode:1605. Find Valid Matrix Given Row and Column Sums
1605. Find Valid Matrix Given Row and Column Sumsvector<vector<int>> restoreMatrix(vector<int> &rowSum, vector<int> &colSum) { int m = rowSum.size(), n = colSum.size(); vector<vector<int>> result(m, ve原创 2021-03-03 10:46:19 · 127 阅读 · 0 评论 -
0-1背包问题
给定n个重量为w 1 w_1w1,w 2 w_2w2,w 3 w_3w3,…,w n w_nwn,价值为v 1 v_1v1,v 2 v_2v2,v 3 v_3v3,…,v n v_nvn的物品和容量为C CC的背包,求这个物品中一个最有价值的子集,使得在满足背包的容量的前提下,包内的总价值最大0-1背包问题指的是每个物品只能使用一次int knapsack(vector<int> w, vector<int> val, int n) { int si原创 2021-01-15 10:29:40 · 129 阅读 · 0 评论 -
1,2,5,10元零钱组合成n元方案数
int nums_change_combine(int n) { int changes[] = {1, 2, 5, 10}; // dp(n,i): 使用下标为i以及之前的零钱组成n元的组合数 // dp(n,i)=dp(n,i-1)+dp(n-val(i),i) int dp[n + 1][4]; for (int i = 0; i <= n; ++i) { for (int j = 0; j < 4; ++j) { .原创 2021-01-14 09:59:24 · 1105 阅读 · 0 评论 -
最近公共祖先
bool get_node_path(TreeNode* root,TreeNode* n, vector<TreeNode*> &path){ if(root==NULL)return false; if(root==n || get_node_path(root->left,n,path) || get_node_path(root->right,n,path)){ path.emplace_back(root); ret.原创 2021-01-12 12:23:47 · 75 阅读 · 0 评论 -
并查集(union-find)
leetcode-1202.Smallest String With Swapsclass Solution {public: int _find(unordered_map<int, pair<int, int>>& parents, int node) { while (parents.at(node).first !=...原创 2020-03-26 10:42:06 · 103 阅读 · 0 评论 -
连续质数序列
返回<=n的所有质数// 埃拉托色尼的筛子vector<int> sieve(int n) { vector<int> nums, result; for (int i = 0; i <= n; ++i)nums.emplace_back(i); for (int i = 2; i < pow(n, 0.5); ++i) {...原创 2020-03-22 11:33:46 · 824 阅读 · 0 评论 -
最大公约数
蛮力法 // greatest common divisorint gcd(int m, int n) { int result = min(m, n); if (result == 0)return max(m, n); while (result--) { if (m % result == 0 && n % result == 0...原创 2020-03-22 11:15:27 · 129 阅读 · 0 评论 -
扔鸡蛋问题
问题:有m层的高楼,n个鸡蛋,需要扔几次鸡蛋才能确定使鸡蛋落地后变碎的最低楼层,鸡蛋如果没碎可以重复使用int minTimes(int m, int n) { vector<vector<int>> dp(m + 1, vector<int>(n + 1)); int fk; for (int j = 1; j <= n;...原创 2020-03-20 22:41:48 · 161 阅读 · 0 评论 -
最大子数组
问题:给定一个数组,有正有负,求它的一个子数组,使得数组里的元素和最大解:分治法ector<int> max_subarray(vector<int> &v,int low,int mid,int high) { int sum=0,max_left_sum=-INT_MAX,max_right_sum=-INT_MAX,start=low,end...原创 2020-03-20 20:33:40 · 130 阅读 · 0 评论 -
最长回文子串
动态规划,时间复杂度O(n^2)string longestPalindrome(const string &str) { int n = str.length(); int start = 0; int length = 1; bool dp[n][n]; for (int j = 0; j < n; ++j) { fo...原创 2020-03-20 15:07:18 · 89 阅读 · 0 评论 -
编辑距离
递归法int editDistance(string &word1, string &word2, int i, int j) { if (i == -1)return j + 1; if (j == -1)return i + 1; if (word1[i] == word2[j])return editDistance(word1, word2, ...原创 2020-03-20 15:03:21 · 103 阅读 · 0 评论 -
排列组合
1. 在 tomcat/bin/startup.bat 文件末尾添加 `pause` 后重新启动,可以看到错误原因,一般是没有设置JAVA_HOME 环境变量,错误显示:Neither the JAVA_HOME nor the JRE_HOME environment variable is definedAt least one of these environment varia原创 2020-03-20 14:42:26 · 132 阅读 · 0 评论