ACM
文章平均质量分 72
like不倒翁
遇事不决,量子力学
展开
-
背包合集C++
//多重背包#include <cstdio>#include <iostream>#include <cstring>#include<algorithm>using namespace std;int main(){ int p[101],h[101], c[101]; int dp[101]; int...原创 2020-04-09 12:10:13 · 255 阅读 · 0 评论 -
剑指offer (JZ41—JZ50)
JZ41和为S的连续正数序列中等通过率:29.07%时间限制:1秒空间限制:64M知识点:穷举描述小明很喜欢数学,有一天他在做数学作业时,要求计算出9~16的和,他马上就写出了正确答案是100。但是他并不满足于此,他在想究竟有多少种连续的正数序列的和为100(至少包括两个数)。没多久,他就得到另一组连续正数和为100的序列:18,19,20,21,22。现在把问题交给你,你能不能也很快的找出所有和为S的连续正数序列? Good Luck!返回值描述:输出所有和为S的...原创 2021-09-07 16:55:31 · 159 阅读 · 0 评论 -
剑指offer (JZ31—JZ40)
JZ31 整数中1出现的次数(从1到n整数中1出现的次数)中等通过率:35.38%时间限制:1秒空间限制:64M知识点:数学描述输入一个整数 n ,求1~n这n个整数的十进制表示中1出现的次数例如,1~13中包含1的数字有1、10、11、12、13因此共出现6次示例1输入:13返回值:6思路:我们看到题目要求 “输入一个整数 n ,求1~n这n个整数的十进制表示中1出现的次数”。其实就是求从1-n这n个数中,每一个数的计数位上出现的1的个数...原创 2021-09-07 15:30:29 · 202 阅读 · 0 评论 -
剑指offer (JZ21—JZ30)
JZ21栈的压入、弹出序列中等通过率:30.88%时间限制:1秒空间限制:64M知识点:栈描述输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否可能为该栈的弹出顺序。假设压入栈的所有数字均不相等。例如序列1,2,3,4,5是某栈的压入顺序,序列4,5,3,2,1是该压栈序列对应的一个弹出序列,但4,3,5,1,2就不可能是该压栈序列的弹出序列。(注意:这两个序列的长度是相等的)示例1输入:[1,2,3,4,5],[4,3,5,1,2]返回值:...原创 2021-09-06 21:44:56 · 81 阅读 · 0 评论 -
剑指offer (JZ11—JZ20)
JZ11二进制中1的个数中等通过率:35.25%时间限制:1秒空间限制:64M知识点:数学描述输入一个整数,输出该数32位二进制表示中1的个数。其中负数用补码表示。示例1输入:10返回值:2思路:如果可以对从右向左的第一位1直接判断,遇到0直接略过,那效率就很快。现考虑二进制数:val :1101000, val-1: 1100111 那么val & (val-1) : 1100000如果你会了这个操作,是不是这题就很简单了。...原创 2021-09-05 15:53:33 · 190 阅读 · 0 评论 -
剑指offer (JZ1—JZ10)
JZ1二维数组中的查找中等通过率:25.83%时间限制:1秒空间限制:64M知识点:数组描述在一个二维数组array中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。[[1,2,8,9],[2,4,9,12],[4,7,10,13],[6,8,11,15]]给定 target= 7,返回true。给定target=...原创 2021-09-05 14:45:59 · 183 阅读 · 0 评论 -
朋友圈(并查集&路径压缩)
描述现在有107个用户,编号为1- 107,现在已知有m对关系,每一对关系给你两个数x和y,代表编号为x的用户和编号为y的用户是在一个圈子中,例如:A和B在一个圈子中,B和C在一个圈子中,那么A,B,C就在一个圈子中。现在想知道最多的一个圈子内有多少个用户。输入描述:第一行输入一个整数T,接下来有T组测试数据。对于每一组测试数据:第一行输入1个整数n,代表有n对关系。接下来n行,每一行输入两个数x和y,代表编号为x和编号为y的用户在同一个圈子里。1 ≤ T≤ 101≤ n≤...原创 2021-09-04 18:59:19 · 355 阅读 · 0 评论 -
JZ11 二进制中1的个数(剑指offer)
描述输入一个整数,输出该数32位二进制表示中1的个数。其中负数用补码表示。示例1输入:10复制返回值:2可以暴力求解;整数取模一位一位的看。如果,给你一种超能力,你能直接对从右向左的第一位1进行判断,遇到0直接略过,那效率是不是很快。现考虑二进制数:val :1101000, val-1: 1100111 那么val & (val-1) : 1100000。从右向左的第一个1被直接判断,略过了右边的0。如果你会了这个操作,是不是这题就很简单了。public c原创 2021-08-15 12:09:34 · 118 阅读 · 0 评论 -
JZ67 剪绳子 (剑指offer)
描述给你一根长度为n的绳子,请把绳子剪成整数长的m段(m、n都是整数,n>1并且m>1,m<=n),每段绳子的长度记为k[1],...,k[m]。请问k[1]x...xk[m]可能的最大乘积是多少?例如,当绳子的长度是8时,我们把它剪成长度分别为2、3、3的三段,此时得到的最大乘积是18。输入描述:输入一个数n,意义见题面。(2 <= n <= 60)返回值描述:输出答案。示例1输入:8返回值:18public class So原创 2021-08-15 11:51:39 · 112 阅读 · 0 评论 -
常见动态规划题目
常见动态规划题目的动态转移方程子数组的最大累加和:dp[i]表示以num[i]结尾子串的最大累加和。dp[0] = num[0];for(1:n)dp[i] = max(dp[i-1]+num[i],num[i]);maxsum = max(maxsum,dp[i]);最大公共子串://注意二维数组大小:dp[n+1][m+1]dp[i][j]表示以第i个字符和第j个字符结尾的最长公共子串长。dp[i][0]=0;//第二个字符串空dp[0][j]=0;//第一个..原创 2021-05-07 21:59:04 · 95 阅读 · 0 评论 -
01背包,完全背包,多重背包,分组背包
//0 1背包//有N件物品和一个容量为V的背包。第i件物品的费用是c[i],价值是w[i]。//求解将哪些物品装入背包可使这些物品的费用总和不超过背包容量,且价值总和最大。#include<cstdio>#include<cstring>#include<algorithm>#include<iostream>using namespace std;int main(){ int n,m; int w[4000],d[400...原创 2021-05-07 21:53:24 · 75 阅读 · 0 评论