![](https://img-blog.csdnimg.cn/20201014180756913.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
算法
shitfly
啥也不会
展开
-
计数排序
计数排序原创 2017-03-29 23:32:41 · 207 阅读 · 0 评论 -
最长递增子序列
给定数组arr,返回arr的最长递增子序列dp[i]为以i位置的数结尾的情况下,最长递增子序列长度#coding=utf-8while True: try: arr=map(int,raw_input().strip().split()) dp=[0 for i in range(len(arr))] for i in range(len(ar原创 2017-08-06 16:24:15 · 201 阅读 · 0 评论 -
leetcode10
Combination Sum II #coding=utf-8 class Solution(object): def combinationSum2(self, candidates, target): """ :type candidates: List[int] :type target: int :rtype原创 2017-07-28 10:29:55 · 242 阅读 · 0 评论 -
分割数组
已知一个全是整数的数组,返回是否能将该数组分成4部分,每一部分累加和相等,分割之不算。 方法一: 设置一个黑盒,存放的是i下标坐标的和加“_”加右边的和#coding=utf-8def solution(nums): if len(nums)<7: return False allSum=sum(nums) d={} leftSum=nums[0]原创 2017-07-28 08:34:53 · 420 阅读 · 0 评论 -
矩阵的最小路径和
给定一个矩阵m,从左上角开始每次只能向右或者向下走,最后到达右下角的位置,路径上所有的数字累加起来就是路径和,返回所有的路径中最小的路径和。方法一: 递归#coding=utf-8def solution(m,l): n=[] l+=m[0][0] if len(m)==1 and len(m[0])==1: return l if len(m)==1原创 2017-07-27 12:55:56 · 943 阅读 · 0 评论 -
斐波那契系列问题的递归和动态规划
给定整数N,返回斐波那契数列的第N项方法一:暴力递归 O(n^2)#coding=utf-8 import sysdef solution(n): if n<1: return 0 if n==1 or n==2: return 1 return solution(n-2)+solution(n-1)while True: try:原创 2017-07-27 10:29:16 · 330 阅读 · 0 评论 -
基础算法(python)
分治法-最大子数组问题 def FindMaxCrossingSubarray(A,low,mid,high): leftsum=-float('INF') su=0 for i in range(mid,low-1,-1): su+=A[i] if leftsum<su: leftsum=su原创 2017-08-18 11:35:19 · 269 阅读 · 0 评论 -
最长子数组问题、递归动态规划问题
递归 当n=0, 1的时候, 结果正确. 假设函数对于n是正确的, 函数对n+1结果也正确. 如果这两点是成立的,我们知道这个函数对于所有可能的n都是正确的。 你必须要示范如何解决问题的一般情况, 通过将问题切分成有限小并更小的子问题. 你必须要示范如何通过有限的步骤,来解决最小的问题(基本用例). 如果这两件事完成了, 那问题就解决了. 因为递归每次都将问题变得更小, 而一个有限的问题终究会被原创 2017-07-23 12:31:27 · 490 阅读 · 0 评论 -
换钱的方法数
1.给定数组arr,arr中所有的值都为正数且不重复。每个值代表一种面值的货币,每种货币都可以使用任意张,再给定一个整数aim代表要找的钱数,求组成aim的最少货币数。 方法一: 暴力递归 递归部分代码,A[index]*i就是用几张A[index]process(A,0,target) def process(A,index,target): res=0 if index==l原创 2017-07-31 09:57:48 · 319 阅读 · 0 评论 -
换钱的最少货币数
1.给定数组arr,arr中所有的值都是正数且不重复。每个值代表一种面值的货币,每种面值的货币可以使用任意张,再给定一个整数aim代表要找的钱数,求组成aim的最少货币数。 方法一: 第一列都为0,第一行表示只能使用arr[0]货币的情况下找某个钱数的最小张数,之后的位置依次从左到右,再从上到下计算,比较dp[i-1][j]和dp[i][j-arr[0]]+1的值,选较小的,上一行的数是可以找开原创 2017-07-30 23:26:03 · 1251 阅读 · 0 评论 -
牛客1(华为)
最高分是多少题目描述 老师想知道从某某同学当中,分数最高的是多少,现在请你编程模拟老师的询问。当然,老师有时候需要更新某位同学的成绩. 输入描述: 输入包括多组测试数据。 每组输入第一行是两个正整数N和M(0 < N <= 30000,0 < M < 5000),分别代表学生的数目和操作的数目。 学生ID编号从1编到N。 第二行包含N个整数,代表这N个学生的初始成绩,其中第i个数代表ID原创 2017-06-24 16:40:09 · 325 阅读 · 0 评论 -
汉诺塔
题目一: 给定一个整数n,代表汉诺塔游戏中从小到大放置的n个圆盘,假设开始时所有圆盘都放在左边的柱子上,想按照汉诺塔游戏的要求把所有圆盘都移到右边的柱子上。实现函数打印最优移动轨迹。函数中B代表中间柱子,是用来放置最大盘子上面的n-1个盘子的,过程就是先把最大盘子上面的n-1个盘子移动到B,再将最大盘子从A移动到C,当前n-1个盘子所在的B相当于A,再递归将这N-1个盘子从B移到C。#coding原创 2017-08-07 09:31:09 · 395 阅读 · 0 评论