[算法]类似n sum个数的问题(DP)】的更多相关文章

题目 求和为target的数组元素组合数,含重复. 例: 输入 arr = { 1, 2, 3, 3, 4 } ,target = 6 输出 4 题解 dp[i][j]代表到数组第i-1个元素,目标和为j的组合数. 代码 package DP; public class TargetSumCnt { public static void main(String args[]) { int[] arr = { 1, 2, 3, 3, 4 }; int target = 6; int ans = t…
一个简单的小算法来获取两个数的最大公约数, public class Test { public static void main(String[] args) { long result = gcd(15, 3); System.out.println(result); } public static long gcd(long m, long n) { while (n != 0) { long rem = m % n; m = n; n = rem; } return m; } }…
找出数组中出现次数超过一半的数,现在有一个数组,已知一个数出现的次数超过了一半,请用O(n)的复杂度的算法找出这个数 #include<iostream>using namespace std;int findMore(int a[],int n){ int A=a[0],B=0; for(int i=0;i<n;i++) {  if(A==a[i])   B++;  else   B--;  if(B==0)  {   A=a[i];   B=1;  }  } return A;} 电…
题目:区间的数里面有49的个数 分析: dp[pos][0]:长度为pos的数中,不包含49的,前一位不为4的有多少个:dp[pos][1]:长度为pos的数中,不包含49的,前一位为4的有多少个:dp[pos][2]:长度为pos的数中,包含49的有多少个: 一开始我是打算先算不满足的,在算满足的:结果不行,可能这样算出来的数太大了所以不行吧: 通过这道题可以更加理解了(不要62)这个题目的sta 的表示 , 原来如此呀 #include<stdio.h> #include<strin…
算法提高 不同单词个数统计 时间限制:1.0s 内存限制:512.0MB 问题描述 编写一个程序,输入一个句子,然后统计出这个句子当中不同的单词个数.例如:对于句子"one little two little three little boys",总共有5个不同的单词:one, little, two, three, boys. 说明:(1)由于句子当中包含有空格,所以应该用gets函数来输入这个句子:(2)输入的句子当中只包含英文字符和空格,单词之间用一个空格隔开:(3)不用考虑单词…
试题 算法训练 1的个数 资源限制 时间限制:1.0s 内存限制:256.0MB 问题描述 输入正整数n,判断从1到n之中,数字1一共要出现几次.例如1123这个数,则出现了两次1.例如15,那么从1到15之中,一共出现了8个1. 输入格式 一个正整数n 输出格式 一个整数,表示1出现的资料 样例输入 15 样例输出 8 数据规模和约定 n不超过30000 import java.util.Scanner; public class 一的个数 { public static void main(…
这是悦乐书的第280次更新,第296篇原创 01 看题和准备 今天介绍的是LeetCode算法题中Easy级别的第148题(顺位题号是653).给定二进制搜索树和目标数,如果BST中存在两个元素,使得它们的总和等于给定目标,则返回true.例如: 5 / \ 3 6 / \ \ 2 4 7 目标值:9 输出:true 5 / \ 3 6 / \ \ 2 4 7 目标值:28 输出:false 本次解题使用的开发工具是eclipse,jdk使用的版本是1.8,环境是win7 64位系统,使用Jav…
Problem Description Now I think you have got an AC in Ignatius.L's "Max Sum" problem. To be a brave ACMer, we always challenge ourselves to more difficult problems. Now you are faced with a more difficult problem. Given a consecutive number sequ…
UvaLive6661 PDF题目 题意:让你用1~n中k个不同的数组成s,求有多少种组法. 题解: DFS或者DP或打表. 1.DFS 由于数据范围很小,直接dfs每种组法统计个数即可. //#pragma comment(linker, "/STACK:102400000,102400000") #include<cstdio> #include<cmath> #include<iostream> #include<cstring>…
http://acm.hdu.edu.cn/showproblem.php?pid=1024 Max Sum Plus Plus Problem Description Now I think you have got an AC in Ignatius.L's "Max Sum" problem. To be a brave ACMer, we always challenge ourselves to more difficult problems. Now you are fac…
Floodfill--漫水填充法(也称种子填充法)简单来说就是求一个图中独立子图的个数并将其描述出不同的状态.Floodfill在计算机图形学有着非常广泛的运用,比如图像分割.物体识别之类.基于Floodfill算法的实现例子有Windows下"画图"软件的油漆桶工具,photoshop的魔术棒选择工具等等. 具体算法实现方法是:查找种子点周边的点,将与种子点颜色相近的点(可以设置一个阈值)入队作为新种子,并对新入队的种子也进行同样的扩展操作,这样就选取了和最初种子相近颜色的区域. 现…
这是悦乐书的第179次更新,第181篇原创 01 看题和准备 今天介绍的是LeetCode算法题中Easy级别的第38题(顺位题号是167).给定已按升序排序的整数数组,找到两个数字,使它们相加到特定的目标数.函数twoSum应该返回两个数字的索引,使它们加起来到目标,其中index1必须小于index2. 注意: 返回的答案(index1和index2)不是从零开始的. 可以假设每个输入只有一个解决方案,并且您可能不会两次使用相同的元素. 例如: 输入:数字= [2,7,11,15],目标=…
Max Sum Plus Plus Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 41885    Accepted Submission(s): 15095 Problem Description Now I think you have got an AC in Ignatius.L's "Max Sum" problem…
题意: 求从不超过 N 的正整数其中选取 K 个不同的数字,组成和为 S 的方法数. 1 <= N <= 20  1 <= K<= 10  1 <= S <= 155 解题思路: DFS: 因为N,K.S的范围非常小.直接DFS就可以. /* ID: wuqi9395@126.com PROG: LANG: C++ */ #include<map> #include<set> #include<queue> #include<s…
题目链接: POJ:id=3132">http://poj.org/problem?id=3132 ZOJ:http://acm.zju.edu.cn/onlinejudge/showProblem.do? problemCode=2822 Description A positive integer may be expressed as a sum of different prime numbers (primes), in one way or another. Given two…
组合数学 1. 排列组合 1. 加法原理 完成一列事的方法有 n 类,其中第 i 类方法包括\(a_i\)种不同的方法,且这些方法互不重合,则完成这件事共有 \(a_1 + a_2 + \cdots + a_n\) 种不同的方法 2. 乘法原理 若完成一件事需要 n 个步骤,其中第 i 个步骤有 \(a_i\) 种不同的完成方法,且这些步骤互不干扰,则完成这件事共有 \(a+1 * a_2 * \cdots * a_n\) 种不同的方法 两原理的区别: 一个与分类有关,一个与分步有关:加法原理是…
题目链接:http://acm.fzu.edu.cn/problem.php?pid=2129 dp[i]表示前i个数的子序列个数 当a[i]在i以前出现过,dp[i] = dp[i - 1]*2 - dp[pre - 1],pre表示a[i]在i之前的位置 当a[i]在i以前没有出现过,dp[i] = dp[i - 1] *2 + 1 //#pragma comment(linker, "/STACK:102400000, 102400000") #include <algor…
Question: Given an array of integers, find two numbers such that they add up to a specific target number. The function twoSum should return indices of the two numbers such that they add up to the target, where index1 must be less than index2. Please…
这题的意思就是取m个连续的区间,使它们的和最大,下面就是建立状态转移方程 dp[i][j]表示已经有 i 个区间,最后一个区间的末尾是a[j] 那么dp[i][j]=max(dp[i][j-1]+a[j],max(dp[i-1][1..j-1])+a[j]) 看数据范围,1e6 肯定开不下数组,观察发现,dp[i][j]仅和dp[i][j-1]和dp[i-1][1..j-1]中最大值有关,即只和dp[i-1]有关 所以开滚动数组求解   复杂度可以通过开数组mmax[j]表示dp[i-1][1.…
1.问题描述:   给定N个顶点的多边形,每个顶点标有一个整数,每条边上标有+(加)或是×(乘)号,并且N条边按照顺时针依次编号为1~N.下图给出了一个N=4个顶点的多边形. 游戏规则 :(1) 首先,移走一条边. (2) 然后进行下面的操作: 选中一条边E,该边有两个相邻的顶点,不妨称为V1和V2.对V1和V2顶点所标的整数按照E上所标运算符号(+或是×)进行运算,得到一个整数:用该整数标注一个新顶点,该顶点代替V1和V2 . 持续进行此操作,直到最后没有边存在,即只剩下一个顶点.该顶点的整数…
问题描述 给定一个十进制整数N,求出从1到N的所有整数中出现”1”的个数.  例如:N=2时 1,2出现了1个 “1” . N=12时 1,2,3,4,5,6,7,8,9,10,11,12.出现了5个“1”. 方法一 暴力求解 最直接的方法就是从1开始遍历到N,将其中每一个数中含有“1”的个数加起来,就得到了问题的解. 下面给出代码: #include <bits/stdc++.h> using namespace std; typedef long long ll; int main() {…
Now I think you have got an AC in Ignatius.L's "Max Sum" problem. To be a brave ACMer, we always challenge ourselves to more difficult problems. Now you are faced with a more difficult problem.  Given a consecutive number sequence S 1, S 2, S 3,…
这是悦乐书的第227次更新 01 看题和准备 今天介绍的是LeetCode算法题中Easy级别的第94题(顺位题号是437).您将获得一个二叉树,其中每个节点都包含一个整数值.找到与给定值相加的路径数.路径不需要在根或叶子处开始或结束,但必须向下(仅从父节点行进到子节点).树的节点数不超过1,000个,值范围为-1,000,000到1,000,000.例如: root = [10,5,-3,3,2,null,11,3,-2,null,1],sum = 8 10 / \ 5 -3 / \ \ 3…
这是悦乐书的第204次更新,第214篇原创 01 看题和准备 今天介绍的是LeetCode算法题中Easy级别的第70题(顺位题号是303).给定整数数组nums,找到索引i和j(i≤j)之间的元素之和,包括端点.例如: 给定nums = [-2,0,3,-5,2,-1] sumRange(0,2) - > 1 sumRange(2,5) - > -1 sumRange(0,5) - > -3 注意: 您可以假设数组不会更改. sumRange函数有很多调用. 本次解题使用的开发工具是e…
这是悦乐书的第169次更新,第171篇原创 01 看题和准备 今天介绍的是LeetCode算法题中Easy级别的第28题(顺位题号是112).给定二叉树和整数sum,确定树是否具有根到叶路径,使得沿路径的所有值相加等于给定的sum.叶子节点是没有子节点的节点.例如: 给定以下二叉树和sum = 22, 5 / \ 4 8 / / \ 11 13 4 / \ \ 7 2 1 返回true,因为存在根到叶的路径5-> 4-> 11-> 2,并且和为22. 本次解题使用的开发工具是eclips…
程序 = 数据结构 + 算法. 算法是每一位程序员学习成长之路上无法避开的重要一环,并且越早接触越好.今后会每天做些算法题,至少每天做一道题目,同时会记录自己的解题思路和代码,通过[算法]专题来分享.针对数据结构这一块的知识,我也会抽时间补习,毕竟不是科班出生,从长远看,数据结构与算法学的越早越扎实越好,不管你使用的是哪一种开发语言. 01 看题和准备 给定一个整数数组和一个目标整数,该目标整数满足数组中两元素之和,返回数组中两个数字的下标索引,以数组形式表示结果.例如给定数组int[] num…
问题描述 金明今天很开心,家里购置的新房就要领钥匙了,新房里有一间他自己专用的很宽敞的房间.更让他高兴的是,妈妈昨天对他说:“你的房间需要购买哪些物品,怎 么布置,你说了算,只要不超过N元钱就行”.今天一早金明就开始做预算,但是他想买的东西太多了,肯定会超过妈妈限定的N元.于是,他把每件物品规定了一 个重要度,分为5等:用整数1~5表示,第5等最重要.他还从因特网上查到了每件物品的价格(都是整数元).他希望在不超过N元(可以等于N元)的前提 下,使每件物品的价格与重要度的乘积的总和最大. 设第j…
问题描述 某国为了防御敌国的导弹袭击,发展出一种导弹拦截系统.但是这种导弹拦截系统有一个缺陷:虽然它的第一发炮弹能够到达任意的高度,但是以后每一发炮弹都不能高于前一发的高度.某天,雷达捕捉到敌国的导弹来袭.由于该系统还在试用阶段,所以只有一套系统,因此有可能不能拦截所有的导弹. 输入导弹依次飞来的高度(雷达给出的高度数据是不大于30000的正整数),计算这套系统最多能拦截多少导弹,如果要拦截所有导弹最少要配备多少套这种导弹拦截系统. 输入格式 一行,为导弹依次飞来的高度 输出格式 两行,分别是最…
Max Sum Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 207989 Accepted Submission(s): 48681 Problem Description Given a sequence a[1],a[2],a[3]--a[n], your job is to calculate the max sum of a su…
Max Sum Plus Plus Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 36673    Accepted Submission(s): 13069 Problem Description Now I think you have got an AC in Ignatius.L's "Max Sum" proble…