假设数组A[1..2N]所有元素的和是SUM。 模仿动态规划解0-1背包问题的策略,令S(k, i)表示前k个元素中任意i个元素的和的集合。 显然: S(k, 1) = {A[i] | 1<= i <= k}…
标签:编程之美
编程之美 - 数组最长子序列
问题描述: 求一个一维数组的最长递增子序列,时间复杂度尽可能小。 例如:数组 1, -1,2,-3,4,-5,6,-7它的最长递增子序列是 1,2,4,6。 思路: 创建一个数组,用于记录到它为止递增元素的最大个数。 从…
Nim理论初探——编程之美1.12
Nim Game是非常著名的游戏,它的变体也很多,在《编程之美》上也用了三章讲解它。 Wikipedia 上说的很详细,本文则是在对wiki上的内容阅读后的个人理解。 游戏概述: 有M堆石子,每堆石子的个数不…
编程之美2.4——“1”的数目
题目描述:给定一个正整数N,写出1到N(包含N)的所有正整数,然后数一下其中出现的所有N的个数。 举个例子,假设你输入的是11,则1到11的所有正整数为: 1,2,3,4,5,6,7,8,9,10,11 其中1出现了四次…
编程之美-两堆石头的游戏
问题:假设有两堆游戏,两个玩家根据以下规则轮流取石头:每个人每次可从两堆石头中各取数量相等的石头,或者仅从一堆石头中取出任意数量的石头。最后把剩下的石头依次拿光人获胜。两堆石头数量分别为n m。 思想:先产生i<=…
编程之美--分层遍历二叉树
1.输出二叉树某一层结点(从左到右) 把输出二叉树第K层结点转换成:分别输出”以该二叉树根结点的左右子树为根的两棵子树”中第K-1层结点。 void PrintNodeAtLevel(Node *…
[编程之美]写一个函数,返回一个数组中所有元素被第一个元素除的结果
题目: 写一个函数,返回一个数组中所有元素被第一个元素除的结果; 错误的版本: void DivArray(int *array, int n) { for (int i = 0; i <…
编程之美_神奇的数列
时间限制: 2000ms 单点时限: 1000ms 内存限制: 256MB 描述 大神同学是一个热爱数字的孩子,她无时无刻不在思考生活与数学的联系。有一天,她发现其实公历的设计是有讲究的。 每4年就会多闰一天,每一百年又…
编程之美-3.1 字符串移位包含问题 笔记
假设字符串s1=AABCD,s2=CDAA,判断s2是否可以通过S1的循环移位得到字符串包含。 如 s1移两位: 1.ABCDA->2.BCDAA 则此时包含了 S2=”CDAA”…
《编程之美-微软技术面试心得》这本书中的1.11节的转化问题研究:nim拈游戏研究
《编程之美-微软技术面试心得》这本书中的1.11节有一个问题: 一堆石块,A和B两个人从里面拿,每次只能拿一个或者任意连续的两个,最后拿到的算赢,先拿者是否有必胜策略: 这个问题较为简单:先拿者有必赢策略,只要按照如下规…
【编程之美】买票找零
一,问题:n个拿着1元,n个人拿着2元去买票。票价一元,且售票元只能用n个人购票的一元给2元的找零。问有几种排列方法 分析:卡特兰数方法 递推公式:F(2*n) =F(0)*F(2(n-1)) +F(1)*F(2(n-2…
【编程之美】java实现重建二叉树
package com.cn.binarytree.utils; /** * @author 刘利娟 liulijuan132@gmail.com * @version 创建时间:2014年7月20日 下午2:03:30…