摘要:
问题(简化过了):偶数矩阵定义: 一个n*n矩阵中, 每个元素的上下左右之和为偶数.给定n, 穷举(或算出1个数最多/最小等)偶数矩阵.分析:比较直接的想法是暴力穷举, n^n. 但这样n=30左右就吃不消了.优化解法: 遍历第一行所有情况(n^2), 之后第二行可根据第一行算出来, 依次类推. 运算规模只有 2*(n^2)#include #include using namespace std;#define L 5bool matrix[L][L];bool minMt[L][L];int n = L;bool val(int i, int j) { int sum = 0; ... 阅读全文
摘要:
注。。这是件略蛋疼的事情,如果无特殊需求建议还是使用xcode本身进行文件本地化操作。过程:1) 扫描工程文件,找到需要本地化处理的文件(一般是plist或者html)1)建立en/zh-Hant/zh-Hans目录(假设需要支持英/繁体/简体), 并把文件拷贝到目录下2)修改工程目录,为本地化文件建立关联第1,2步就不细说了, 普通的文件操作. 重点介绍一下第3步以"about.html"为例, 假设需要支持英/繁体/简体:首先,随便找一个编辑器打开工程文件(.xcodeproj), 选中projet.pbxproj文件.可以看到一个庞大且恶心的xml文件充满屏幕.. [ 阅读全文
摘要:
有n个正整数组成一个 序列。给定整数s, 求长度最短的连续序列, 使他们的最大和大于或等于S。书中给出3种思路, 先上图:A. 暴力枚举起点和终点,并且依次求和。 复杂度n3B. 如图所示,A方法中曲线部分包括许多重复的区间, 可以通过保存前缀来降低一些复杂度, 得到n2算法。 令B[i] = A[0]+A[1]+...A[I], 则B[j] - B[i] = A[i] +...+A[j], 也就是可以在O(1)时间内计算出子序列和。 此方法本质是:通过空间换时间省去计算过程。 但此方法也要枚举起点和终点,复杂度不会低于n2.C. 考虑只枚举终点。对于点 j, 只需要找到满足 B[j]-B.. 阅读全文
摘要:
原文地址:http://www.cnblogs.com/zhjp11/archive/2010/02/26/1674227.html今天看算法分析是,看到一个这样的问题,就是在一堆数据中查找到第k个大的值。 名称是:设计一组N个数,确定其中第k个最大值,这是一个选择问题,当然,解决这个问题的方法很多,本人在网上搜索了一番,查找到以下的方式,决定很好,推荐给大家。 所谓“第(前)k大数问题”指的是在长度为n(n>=k)的乱序数组中S找出从大到小顺序的第(前)k个数的问题。 解法1: 我们可以对这个乱序数组按照从大到小先行排序,然后取出前k大,总的时间复杂度为O(n*logn + k)。 . 阅读全文
摘要:
问题起因于一个UITextField获取到了焦点但键盘没有弹出(ios4.3以及ios5.1都有此问题), 折腾几小时后终于发现了原因.stackoverflow原帖:http://stackoverflow.com/questions/8669627/uitextviews-becomefirstresponsder-not-working-proprly"There's a known bug in iOS with resigning and becoming first responder within the same runloop. Try the follow 阅读全文
摘要:
情景: 在周长为1000的圆周上均匀放n个红点, m+n个黑点,如何表示每个红点和周围最近的黑点的距离?分析:不管周长是多少,先假设周长是1, 则红点之间间距是1/n 这样(m+n)个黑点之间的距离是 1/(m+n). 为了防止损失精度, 把它们同时乘以(m+n), 则红点间距 (m+n)/ n , 黑点间距1. ( 反过来想,假设设较小的间距为1)。 这样, 将某个红点四舍五入后得到的值就是离它最近的黑点。将它们之间距离放大为原比例即可。注意精度。 示意: 1--------2--------3--------4--------5--------6 ----1.... 阅读全文
摘要:
算法的思想: 对于不超过n的每个非负整数p, 删除2p,3p,4p....., 当处理完所有数之后, 还没被删除的就是素数. 用vis[i]表示已经被删除的数.简单的算法可以表示成:for ( int i = 2; i <= n; i++) { for ( int j = i*2; j <= n; j+=i ) vis[j] = 1;}因为小于n的素数的个数小于等于lgn ( 相关证明可以在初等数论第一章中找到 ), 可以缩短外层循环. int m = sqrt(n + 0.5); for ( int i = 2; i <= m; i++) { if (!v... 阅读全文
摘要:
给出这样一个除法表达式X1/X2/X3../Xn:输入X1 X2 X3 X4…Xn, 判断是否可以通过添加括号使表达式的值为整数.解析:X1/X2/X3../Xn = X1 / (X2*X3*X4..Xn)可以推出(X2一定在分母位置):X1/X2/X3../Xn = X1 / ( X2 / X3 / X4.../Xn ) = ( X1*X3 *X4..Xn ) / X2问题就变成了求( X1*X3 *X4..Xn ) 能不能被X2整除.方法1: 高精度运算.方法2: 利用唯一分解定理, 把X2分解成若干素数相乘形式, 然后依次判断每个素数是否是( X1*X3 *X4..Xn )的约数(比较这 阅读全文
摘要:
百度百科:http://baike.baidu.com/view/20089.htm维基百科:http://zh.wikipedia.org/wiki/Hash 阅读全文
摘要:
1. 物品无限背包问题.有n种物品, 每种都有无穷多个, 第i种物品体积为Vi, 重量为Wi. 选一些物品装到一个容量为C的背包里, 使得背包内物品总体积不超过C的前提下重量尽量大.1<n<=100,1<=Vi<=C<=10000,1<=Wi<=10^6[分析] 带权的DAG最长路径问题, 把代码中的+1改为+W[i]即可.2. 0-1背包问题只凭"剩余体积"这个状态, 无法得知该物体是否被用过.这里引入"多阶段决策的最优化": 用d(i,j)表示当前在第i层, 剩余容量为j时接下来的最大重量和.则d(i,j)= 阅读全文