<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0">
<channel>
<title><![CDATA[PHP面对对象]]></title> 
<link>http://www.phpobject.net/blog/index.php</link> 
<description><![CDATA[面对对象、MVC框架、PHP安全、PHP优化]]></description> 
<language>zh-cn</language> 
<copyright><![CDATA[PHP面对对象]]></copyright>
<item>
<link>http://www.phpobject.net/blog/read.php/154.htm</link>
<title><![CDATA[2008年IT行业薪资与技能调查报告]]></title> 
<author>feifengxlq &lt;feifengxlq@gmail.com&gt;</author>
<category><![CDATA[PHP高级技术]]></category>
<pubDate>Wed, 14 Jan 2009 15:12:31 +0000</pubDate> 
<guid>http://www.phpobject.net/blog/read.php/154.htm</guid> 
<description>
<![CDATA[ 
	在CSDN上看到的，呵呵，个人感觉基本上比较靠谱。。。<br/><br/>同时也感受到一点，在计算机行业，学历和薪水之间的待遇还是很有关系的。<br/><br/>有兴趣的可以看看。<br/><br/>地址是：<a href="http://vipnews.csdn.net/pdfdownload/2008%20IT%E8%A1%8C%E4%B8%9A%E8%96%AA%E8%B5%84%E4%B8%8E%E6%8A%80%E8%83%BD%E8%B0%83%E6%9F%A5%E6%8A%A5%E5%91%8A(%E4%B8%AD%E6%96%87%E7%89%88).pdf" target="_blank">点击查看</a><br/>Tags - <a href="http://www.phpobject.net/blog/go.php/tags/it/" rel="tag">it</a> , <a href="http://www.phpobject.net/blog/go.php/tags/%25E8%2596%25AA%25E6%25B0%25B4/" rel="tag">薪水</a>
]]>
</description>
</item><item>
<link>http://www.phpobject.net/blog/read.php/153.htm</link>
<title><![CDATA[snoopy终于更新到1.2.4了。]]></title> 
<author>feifengxlq &lt;feifengxlq@gmail.com&gt;</author>
<category><![CDATA[PHP高级技术]]></category>
<pubDate>Mon, 15 Dec 2008 15:24:02 +0000</pubDate> 
<guid>http://www.phpobject.net/blog/read.php/153.htm</guid> 
<description>
<![CDATA[ 
	&nbsp;&nbsp;&nbsp;&nbsp; 关于snoopy的介绍和简单使用，可以参考我之前的文章<a href="http://www.phpobject.net/blog/read.php/90.htm" target="_blank">《snoopy——PHP版的网络客户端》</a>。（顺便小郁闷下，在百度搜索snoopy+PHP的前几篇文章，全部是转载我的，居然排在我的前面。。）<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;今天又打算使用snoopy来做一个小偷，顺便查了下snoopy，呵呵，居然发现snoopy更新了（已经两年没有更新了）。snoopy的地址是<br/><a href="http://sourceforge.net/projects/snoopy/" target="_blank">http://sourceforge.net/projects/snoopy/</a>。虽然只是更新到1.2.4（之前是1.2.1），也只是修正了一些小的BUG，但很高兴，作者又开始回来关注这个了。<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;snoopy是个非常好用的类，在PHP抓取中用的非常广。<br/>Tags - <a href="http://www.phpobject.net/blog/go.php/tags/snoopy/" rel="tag">snoopy</a>
]]>
</description>
</item><item>
<link>http://www.phpobject.net/blog/read.php/152.htm</link>
<title><![CDATA[深入PHP编译缓存]]></title> 
<author>feifengxlq &lt;feifengxlq@gmail.com&gt;</author>
<category><![CDATA[PHP技术杂谈]]></category>
<pubDate>Tue, 18 Nov 2008 03:25:33 +0000</pubDate> 
<guid>http://www.phpobject.net/blog/read.php/152.htm</guid> 
<description>
<![CDATA[ 
	&nbsp;&nbsp;&nbsp;&nbsp; 如果你想提高PHP项目的运行速度，编译缓存应该是你的选择之一。安装一个编译缓存能到产生极大的性能提升。目前最常见的PHP编译缓存工具有：APC，Accelerator，xcache(国产)等等。关于三者的安装和比较在这里就不阐述了。<br/>&nbsp;&nbsp;&nbsp;&nbsp; 那么什么是编译缓存呢？为什它能产生这么令人印象深刻的性能提升呢？为了更好的理解这些，我们首先需要了解Zend Engine执行PHP代码的过程及原理。在调用PHP执行代码的时候，通常需要下面两步：<br/><div class="code"><br/>1、编译过程。PHP读取文件，并解析该文件，然后生成能够在Zend Engine虚拟机上执行的中间码（通常是opcode）。<br/>2、执行过程。PHP直接执行中间码opcode.<br/></div><br/>在这个过程中，有几点是需要注意的：<br/><div class="code"><br/>1、对许多代码文件说，特别是含有很多包含文件（include or require）。它们需要花费更多的时间和解析并产生中间代码。<br/>2、即使PHP代码文件没有发生改变，这个执行过程还会严格的按照流程执行。也就是说，无论你的应该程序是否发生改变，每次调用的时候，都需要重新编译。（其实这就是编译缓存存在的理由）<br/>3、这个流程不仅仅发生在主要的代码文件，对于每一次的include和require来说，都会执行这个流程。（这是可以继续优化的）<br/></div><br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;下图显示了在没有编译缓存的情况下，执行一个文件的流程。<br/><a href="http://www.phpobject.net/blog/attachment.php?fid=2" target="_blank"><img src="http://www.phpobject.net/blog/attachment.php?fid=2" class="insertimage" alt="点击在新窗口中浏览此图片" title="点击在新窗口中浏览此图片" border="0"/></a><br/>&nbsp;&nbsp;&nbsp;&nbsp; 编译缓存就是用来缓存PHP执行的中间码OPCODE，从而提升PHP执行速度的yi中工具。加入编译缓存后的执行流程如下：<br/><a href="http://www.phpobject.net/blog/attachment.php?fid=3" target="_blank"><img src="http://www.phpobject.net/blog/attachment.php?fid=3" class="insertimage" alt="点击在新窗口中浏览此图片" title="点击在新窗口中浏览此图片" border="0"/></a><br/><br/>&nbsp;&nbsp;&nbsp;&nbsp; 编译缓存去掉了执行PHP过程中的解析过程（类似JAVA编译成CLASS文件），所以它对含有大量PHP代码的应用程序是非常有效的。通常情况下可以提升2-3倍以上的速度。对于包含大量include文件的项目，编译缓存更现实出它的优越性。<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp; PS：在PHP项目中，过多的include文件会降低程序性能的，但include文件本身可以带来发开发和维护的方便性。如何取舍就看具体应用了。另外编译缓存是对具体的PHP文件的，也就是说include过程本身是没有被编译缓存的。<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;关于"include过程没有被编译缓存，即include与require都是运行时"的注解：<br/><div class="code"><br/>比如现在有两个文件：main.php 和tobeInclude.php<br/>其中main.php中有这样的语句include &#039;tobeInclude.php&#039;<br/><br/>假设中间码的后缀为.op(实际上不是这样)<br/><br/>那么加上缓存cache后 main.php=&gt;main.op ， tobeInclude.php=&gt;tobeInclude.op<br/><br/>但是PHP在执行main.php的时候，她还是需要去解析main.op中的include命令，去调用tobeInclude.op的内容。<br/>具体流程是这样的。<br/>...=&gt;执行main.op=&gt;执行tobeInclude.op=&gt;...<br/>而不是之间简单的执行main.op<br/><br/>所以说“过多的include文件会降低程序性能的”<br/></div><br/>Tags - <a href="http://www.phpobject.net/blog/go.php/tags/%25E7%25BC%2596%25E8%25AF%2591%25E7%25BC%2593%25E5%25AD%2598/" rel="tag">编译缓存</a> , <a href="http://www.phpobject.net/blog/go.php/tags/opcode/" rel="tag">opcode</a>
]]>
</description>
</item><item>
<link>http://www.phpobject.net/blog/read.php/151.htm</link>
<title><![CDATA[PHP与WEB服务工作的三种方式]]></title> 
<author>feifengxlq &lt;feifengxlq@gmail.com&gt;</author>
<category><![CDATA[PHP相关]]></category>
<pubDate>Sat, 15 Nov 2008 03:45:28 +0000</pubDate> 
<guid>http://www.phpobject.net/blog/read.php/151.htm</guid> 
<description>
<![CDATA[ 
	&nbsp;&nbsp; WEB&nbsp;&nbsp; 服务器可以用三种方法来利用&nbsp;&nbsp; PHP&nbsp;&nbsp; 生成&nbsp;&nbsp; WEB&nbsp;&nbsp; 页面。&nbsp;&nbsp;&nbsp;&nbsp;<br/>&nbsp;&nbsp; <br/>&nbsp;&nbsp;第一种方法是将&nbsp;&nbsp; PHP&nbsp;&nbsp; 用作一个“外壳”。以这种方法运行，PHP&nbsp;&nbsp; 会为向您的&nbsp;&nbsp; WEB&nbsp;&nbsp; 服务器提出的每个&nbsp;&nbsp; PHP&nbsp;&nbsp; 页面请求生成并结束一个&nbsp;&nbsp; PHP&nbsp;&nbsp; 解释器线程。由于该线程会随每个请求的结束而结束，因此任何在这个线程中利用的任何资源（例如指向&nbsp;&nbsp; SQL&nbsp;&nbsp; 数据库服务器的连接）都会随线程的结束而关闭。在这种情况下，您使用永久连接不会获得任何地改变――因为它们根本不是永久的。&nbsp;&nbsp;&nbsp;&nbsp;<br/>&nbsp;&nbsp; <br/>&nbsp;&nbsp;第二，也是最常用的方法，是把&nbsp;&nbsp; PHP&nbsp;&nbsp; 用作多过程&nbsp;&nbsp; WEB&nbsp;&nbsp; 服务器的一个模块，这种方法目前只适用于&nbsp;&nbsp; Apache。对于一个多过程的服务器，其典型特征是有一个父过程和一组子过程协调运行，其中实际生成&nbsp;&nbsp; WEB&nbsp;&nbsp; 页面的是子过程。每当客户端向父过程提出请求时，该请求会被传递给还没有被其它的客户端请求占用的子过程。这也就是说当相同的客户端第二次向服务端提出请求时，它将有可能被一个不同的子过程来处理。在开启了一个永久连接后，所有请求&nbsp;&nbsp; SQL&nbsp;&nbsp; 服务的后继页面都能够重新使用这个已经建立的&nbsp;&nbsp; SQL&nbsp;&nbsp; Server&nbsp;&nbsp; 连接。&nbsp;&nbsp;&nbsp;&nbsp;<br/>&nbsp;&nbsp; <br/>&nbsp;&nbsp;最后一种方法是将&nbsp;&nbsp; PHP&nbsp;&nbsp; 用作多线程&nbsp;&nbsp; WEB&nbsp;&nbsp; 服务器的一个插件。目前&nbsp;&nbsp; PHP&nbsp;&nbsp; 4&nbsp;&nbsp; 已经支持&nbsp;&nbsp; ISAPI、WSAPI&nbsp;&nbsp; 和&nbsp;&nbsp; NSAPI（在&nbsp;&nbsp; Windows&nbsp;&nbsp; 环境下），这些使得&nbsp;&nbsp; PHP&nbsp;&nbsp; 可以被用作诸如&nbsp;&nbsp; Netscape&nbsp;&nbsp; FastTrack&nbsp;&nbsp; (iPlanet)、Microsoft's&nbsp;&nbsp; Internet&nbsp;&nbsp; Information&nbsp;&nbsp; Server&nbsp;&nbsp; (IIS)&nbsp;&nbsp; 和&nbsp;&nbsp; O'Reilly's&nbsp;&nbsp; WebSite&nbsp;&nbsp; Pro&nbsp;&nbsp; 等多线程&nbsp;&nbsp; WEB&nbsp;&nbsp; 服务器的插件。永久连接的行为和前面所描述的多过程模型在本质上是相同的。注意&nbsp;&nbsp; PHP&nbsp;&nbsp; 3&nbsp;&nbsp; 不支持&nbsp;&nbsp; SAPI。&nbsp;&nbsp;&nbsp;&nbsp;<br/>Tags - <a href="http://www.phpobject.net/blog/go.php/tags/php/" rel="tag">php</a> , <a href="http://www.phpobject.net/blog/go.php/tags/web%25E6%259C%258D%25E5%258A%25A1%25E5%2599%25A8/" rel="tag">web服务器</a>
]]>
</description>
</item><item>
<link>http://www.phpobject.net/blog/read.php/150.htm</link>
<title><![CDATA[php在apache中安装模式的区别：fastcgi和mod_php]]></title> 
<author>feifengxlq &lt;feifengxlq@gmail.com&gt;</author>
<category><![CDATA[PHP相关]]></category>
<pubDate>Wed, 12 Nov 2008 12:46:37 +0000</pubDate> 
<guid>http://www.phpobject.net/blog/read.php/150.htm</guid> 
<description>
<![CDATA[ 
	&nbsp;&nbsp;&nbsp;&nbsp;说到fastCgi就不得不说Cgi。<br/>&nbsp;&nbsp;&nbsp;&nbsp;CGI英文全称是 Common Gateway Interface，通常翻译为共同网关接口，是HTTP服务器与机器上的其他程序进行通信的一个接口。这个“其他程序”可以使用任何计算机语言来编写，它通过CGI这个接口从HTTP服务器取得输入，然后把运行的结果又通过CGI这个接口交给HTTP服务器，而HTTP服务器把这个结果送给浏览器。<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;CGI的出现让WEB从静态变为为动态，随着Web的越来越普及，很多的网站的都需要有动态的页面，以便与浏览者互交。CGI方式的缺点也越来越突出。因为HTTP要生成一个动态页面，系统就必须启动一个新的进程以运行CGI程序，不断地fork是一项很消耗时间和资源的工作。这就出现了FastCGI。<br/><br/>&nbsp;&nbsp; 百度百科关于FastCGI<br/><div class="code"><br/>　1. FastCGI 像是一个常驻 (long-live) 型的 CGI，它可以一直执行着，只要激活后，不会每次都要花费时间去 fork 一次 (这是 CGI 最为人诟病的 fork-and-execute 模式)。<br/>　　2. FastCGI 可在任何平台上使用，Netscape Enterprise 及 IIS 都有 FastCGI 的模块可供使用，阿帕契 (Apache，以及利用 Apache 衍生出做的服务器) 上也有 mod_fastcgi 可用。<br/>　　3. FastCGI 支持 C/C++，Ruby, Perl，Tcl，Java，Python 等程序语言。<br/>　　4. FastCGI 的应用程序亦兼容于 CGI。即 FastCGI 的应用程序也可以当成 CGI 来执行。<br/>　　5. 现有的 CGI 程序要改写成 FastCGI 非常简单，最少可能只需要多加入三行程序代码。<br/>　　6. FastCGI 的侦错方式与 CGI 大同小异，只要带入程序所需的环境变量及参数，即可在命令列模式执行或侦错。<br/>　　7. FastCGI 应用程序的写作方式与 CGI 类似，除了几项原则要特别注意外，FastCGI 的写作方式跟 CGI 几乎一样，与学习 Web Server API 比较起来， FastCGI 简单多了。<br/>　　8. FastCGI 支授分布式运算 (distributed computing)，即 FastCGI 程序可以在网站服务器以外的主机上执行并且接受来自其它网站服务器来的请求。<br/></div><br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;mod_php就是把PHP做为APACHE一个内置模块。让apache http服务器本身能够支持PHP语言，不需要每一个请求就启动PHP解释器来解释PHP。<br/><br/> 关于性能比较，请参考<a href="http://hi.baidu.com/sprite_sy/blog/item/808adeca3cb14185c8176877.html" target="_blank">《mod_php or fastcgi》</a><br/>Tags - <a href="http://www.phpobject.net/blog/go.php/tags/apache/" rel="tag">apache</a> , <a href="http://www.phpobject.net/blog/go.php/tags/fastcgi/" rel="tag">fastcgi</a> , <a href="http://www.phpobject.net/blog/go.php/tags/php/" rel="tag">php</a> , <a href="http://www.phpobject.net/blog/go.php/tags/web%25E6%259C%258D%25E5%258A%25A1%25E5%2599%25A8/" rel="tag">web服务器</a>
]]>
</description>
</item><item>
<link>http://www.phpobject.net/blog/read.php/149.htm</link>
<title><![CDATA[深入学习memcached]]></title> 
<author>feifengxlq &lt;feifengxlq@gmail.com&gt;</author>
<category><![CDATA[PHP相关]]></category>
<pubDate>Wed, 12 Nov 2008 12:04:52 +0000</pubDate> 
<guid>http://www.phpobject.net/blog/read.php/149.htm</guid> 
<description>
<![CDATA[ 
	这是由 mixi 株式会社 开发部系统运营组的两位工程师所写，日常负责程序的运营。本文将针对最近在Web应用的可扩展性领域的热门话题memcached，说明其内部结构和使用。<br/><br/>文章分为5个章节、案例讲解，推荐大家阅读学习，中文版PDF文档下载地址见最下！<br/># 第1章 memcached的基础<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1.1 memcached是什么？<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1.2 memcached的特征<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1.3 安装memcached<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1.4 用客户端连接<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1.5 使用Cache::Memcached<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1.6 总结<br/><br/># 第2章 理解memcached的内存存储<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;2.1 Slab Allocation机制：整理内存以便重复使用<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;2.2 在Slab中缓存记录的原理<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;2.3 Slab Allocator的缺点<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;2.4 使用Growth Factor进行调优<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;2.5 查看memcached的内部状态<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;2.6 查看slabs的使用状况<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;2.7 总结<br/><br/># 第3章 memcached的删除机制和发展方向<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;3.1 memcached在数据删除方面有效利用资源<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;3.2 LRU：从缓存中有效删除数据的原理<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;3.3 memcached的最新发展方向<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;3.4 外部引擎支持<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;3.5 总结<br/><br/># 第4章 memcached的分布式算法<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;4.1 memcached的分布式<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;4.2 Cache::Memcached的分布式方法<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;4.3 Consistent Hashing<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;4.4 总结<br/><br/># 第5章 memcached的应用和兼容程序<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;5.1 mixi案例研究<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;5.2 memcached应用经验<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;5.3 兼容应用程序<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;5.4 总结<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;如今，越来越多的Web应用程序开始使用memcached这个高速的缓存服务器软件。然而，memcached的基础知识远远未能像其他Web技术那样普及，memcached在国内的大规模应用也鲜为人知。而日本的mixi（http://mixi.jp）则在这方面走在了前面，不仅大规模使用 memcached作为缓存来加速Web应用，而且自行开发了Tokyo Cabinit、Tokyo Tyrant等一系列相关的软件。<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;最近，日本的技术评论社的网站上刊登了mixi的两名工程师长野雅广、前坂徹撰写的一篇连载《memcachedを知り尽くす》。这篇连载语言简洁、通俗易懂，非常适合memcached入门的人阅读。<a href="attachment.php?fid=1">点击这里下载文件</a>
]]>
</description>
</item><item>
<link>http://www.phpobject.net/blog/read.php/148.htm</link>
<title><![CDATA[连续正整数 算法实现]]></title> 
<author>feifengxlq &lt;feifengxlq@gmail.com&gt;</author>
<category><![CDATA[C/C++]]></category>
<pubDate>Mon, 03 Nov 2008 08:33:45 +0000</pubDate> 
<guid>http://www.phpobject.net/blog/read.php/148.htm</guid> 
<description>
<![CDATA[ 
	原来题目地址：http://blog.csdn.net/livelylittlefish/archive/2008/02/25/2120163.aspx<br/><br/>题目：<br/><div class="code"><br/>一个正整数有可能可以被表示为n(n&gt;=2)个连续正整数之和，如：<br/>15=1+2+3+4+5<br/>15=4+5+6<br/>15=7+8<br/>请编写程序，根据输入的任何一个正整数，找出符合这种要求的所有连续正整数序列。<br/>输入数据：一个正整数，以命令行参数的形式提供给程序。<br/>例如，对于15，其输出结果是：<br/>1 2 3 4 5<br/>4 5 6<br/>7 8<br/>对于16，其输出结果是：<br/>NONE<br/></div><br/><br/><br/><br/>[codes=c]<br/>#include <stdio.h><br/><br/>static void getContinueNum(int);<br/>static void output(int,int,int);<br/><br/>void continueNumDemo()<br/>&#123;<br/>&nbsp;&nbsp;getContinueNum(15);<br/>&#125;<br/><br/>static void getContinueNum(int n)<br/>&#123;<br/>&nbsp;&nbsp;int i;<br/>&nbsp;&nbsp;int tmp;<br/>&nbsp;&nbsp;int num;<br/>&nbsp;&nbsp;num = 0;<br/>&nbsp;&nbsp;for(i=2;i<n;i++)&#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;tmp = 2*n-i*(i-1);<br/>&nbsp;&nbsp;&nbsp;&nbsp;if(tmp<=0)break;<br/>&nbsp;&nbsp;&nbsp;&nbsp;if( tmp%(2*i)==0 )&#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;output(tmp/(2*i),i,n);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;num ++;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&#125;<br/>&nbsp;&nbsp;&#125;<br/>&nbsp;&nbsp;if(num == 0)&#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;printf("NONE");<br/>&nbsp;&nbsp;&#125;else&#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;printf("total:%d&#92;n",num);<br/>&nbsp;&nbsp;&#125;<br/>&#125;<br/><br/>static void output(int begin,int num,int n)&#123;<br/>&nbsp;&nbsp;int i;<br/>&nbsp;&nbsp;printf("%d=",n);<br/>&nbsp;&nbsp;for(i = 0; i<num-1 ; i++)<br/>&nbsp;&nbsp;&#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;printf("%d+",(begin+i));<br/>&nbsp;&nbsp;&#125;<br/>&nbsp;&nbsp;printf("%d &#92;n",(begin+num-1));<br/>&#125;<br/><br/>[/codes]<br/>Tags - <a href="http://www.phpobject.net/blog/go.php/tags/c/" rel="tag">c</a> , <a href="http://www.phpobject.net/blog/go.php/tags/%25E7%25AE%2597%25E6%25B3%2595/" rel="tag">算法</a>
]]>
</description>
</item><item>
<link>http://www.phpobject.net/blog/read.php/147.htm</link>
<title><![CDATA[交叉换位 算法的实现（google笔试题目之一）]]></title> 
<author>feifengxlq &lt;feifengxlq@gmail.com&gt;</author>
<category><![CDATA[C/C++]]></category>
<pubDate>Sat, 01 Nov 2008 10:55:19 +0000</pubDate> 
<guid>http://www.phpobject.net/blog/read.php/147.htm</guid> 
<description>
<![CDATA[ 
	题目要求：<br/><div class="code"><br/>输入a_1,&nbsp;&nbsp; a_2,&nbsp;&nbsp; ...,&nbsp;&nbsp; a_n,&nbsp;&nbsp; b_1,&nbsp;&nbsp; b_2,&nbsp;&nbsp; ...,&nbsp;&nbsp; b_n，如何在O(n)的时间，用O(1)的空间，将这个序列顺序改为a_1,&nbsp;&nbsp; b_1,&nbsp;&nbsp; ...,&nbsp;&nbsp; a_n,&nbsp;&nbsp; b_n。<br/></div><br/><br/>如果没有时间和空间的要求，我相信大家很容易些过来。<br/><br/>我之前是数学专业，感觉用数学处理起来比较容易。解决的要点是：找出交叉换位后地址下标的关系。<br/>比如0->0&nbsp;&nbsp;1->2 2->4&nbsp;&nbsp;....<br/>最终关系如下：i<n的时候i->2*i&nbsp;&nbsp;i>=n的时候 i->2*i+1-2*n&nbsp;&nbsp;（注意我这里的下标是0开始的）<br/><br/><br/><br/>最终代码<br/>[codes=c]<br/>void changeStep(char *list,int n)<br/>&#123;<br/>&nbsp;&nbsp;char tmp,tmp2;<br/>&nbsp;&nbsp;int tmpIndex,changeIndex;<br/>&nbsp;&nbsp;tmpIndex = n;<br/>&nbsp;&nbsp;changeIndex = 1;<br/>&nbsp;&nbsp;tmp = list[tmpIndex];<br/>&nbsp;&nbsp;while(tmp!=list[changeIndex])&#123;&nbsp;&nbsp;&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;tmp2 = list[changeIndex];<br/>&nbsp;&nbsp;&nbsp;&nbsp;list[changeIndex] = tmp;&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;tmp = tmp2;&nbsp;&nbsp;&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;tmpIndex = changeIndex;&nbsp;&nbsp;&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;if(tmpIndex<n)&#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;changeIndex = 2*tmpIndex;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&#125;else&#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;changeIndex = 2*tmpIndex+1-2*n;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&#125;&nbsp;&nbsp;<br/>&nbsp;&nbsp;&#125;<br/>//修正 互相对换的。<br/>&nbsp;&nbsp;int i;<br/>&nbsp;&nbsp;for(i=n/2;i<n;i++)<br/>&nbsp;&nbsp;&#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;if(3*i+1 == 2*n)&#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tmp = list[i];<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;list[i] = list[2*i];<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;list[2*i] = tmp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&#125;<br/>&nbsp;&nbsp;&#125;<br/>&#125;<br/>[/codes]<br/>测试<br/>[codes=c]<br/><br/>char str[] = "abc123";<br/>&nbsp;&nbsp;printf("%s&#92;n",str);<br/>&nbsp;&nbsp;changeStep(str,3);<br/>&nbsp;&nbsp;printf("%s&#92;n",str);[/codes]<br/>测试通过。<br/><br/>原文提出的算法：http://blog.csdn.net/livelylittlefish/archive/2008/02/18/2102457.aspx<br/>Tags - <a href="http://www.phpobject.net/blog/go.php/tags/c/" rel="tag">c</a> , <a href="http://www.phpobject.net/blog/go.php/tags/%25E7%25AE%2597%25E6%25B3%2595/" rel="tag">算法</a>
]]>
</description>
</item><item>
<link>http://www.phpobject.net/blog/read.php/146.htm</link>
<title><![CDATA[ acm题目——正整数n的加法组合的最大乘积]]></title> 
<author>feifengxlq &lt;feifengxlq@gmail.com&gt;</author>
<category><![CDATA[C/C++]]></category>
<pubDate>Sat, 01 Nov 2008 05:41:32 +0000</pubDate> 
<guid>http://www.phpobject.net/blog/read.php/146.htm</guid> 
<description>
<![CDATA[ 
	题目来源地址：http://blog.csdn.net/livelylittlefish/archive/2008/04/29/2344641.aspx<br/><br/><div class="code"><br/>题目：&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br/>给定一个正整数n，则在n所有的分解式中，求因子乘积最大的一个分解及此乘积。<br/>n=5时，有如下分解式： <br/>5=5 <br/>5=4+1 <br/>5=3+2 <br/>5=3+1+1 <br/>5=2+2+1 <br/>5=2+1+1+1 <br/>5=1+1+1+1+1&nbsp;&nbsp;<br/>在这些分解式中，3*2=6最大，这就是所要求的结果。&nbsp;&nbsp;<br/>若n = 12，最大为3*3*3*3 = 81。&nbsp;&nbsp;<br/></div><br/><br/>原文给出来一个解决方案，但我认为不是最优的。可以通过寻找规律。<br/>首先，大于3个数字，都可以分解，使得乘积大于原来的数字。所以，最大乘积的因子必然是由3，2，1几个数字租成，考虑到1没什么用，而且2×2》3。<br/>就可以得到更加简单的算法。<br/><br/>代码如下：<br/>·[codes=c]<br/>#include <stdio.h><br/>int getMaxCombination(int n)<br/>&#123;<br/>&nbsp;&nbsp;int modPlus,b,a,i;<br/>&nbsp;&nbsp;int rs;<br/>&nbsp;&nbsp;if(n<3)return 1;<br/>&nbsp;&nbsp;b = n/3;<br/>&nbsp;&nbsp;modPlus = n%3;<br/>&nbsp;&nbsp;if(modPlus == 1)&#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;b--;<br/>&nbsp;&nbsp;&nbsp;&nbsp;a = 2;<br/>&nbsp;&nbsp;&#125;else&#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;if(modPlus == 2)&#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;a = 1;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&#125;else&#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;a = 0;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&#125;<br/>&nbsp;&nbsp;&#125;<br/>&nbsp;&nbsp;//out put<br/>&nbsp;&nbsp;rs = 1;<br/>&nbsp;&nbsp;for(i=0;i<a;i++)rs = rs*2;<br/>&nbsp;&nbsp;for(i=0;i<b;i++) rs = rs*3;<br/>&nbsp;&nbsp;printf("%d:%d&nbsp;&nbsp;contain %d num of 2 and %d num of 3 &#92;n",n,rs,a,b);<br/>&nbsp;&nbsp;return rs;<br/>&#125;<br/>[/codes]<br/><br/>在ubuntu gcc eclipse下测试通过。<br/><br/>测试3-50的结果如下：<br/>3:3&nbsp;&nbsp;contain 0 num of 2 and 1 num of 3 <br/>4:4&nbsp;&nbsp;contain 2 num of 2 and 0 num of 3 <br/>5:6&nbsp;&nbsp;contain 1 num of 2 and 1 num of 3 <br/>6:9&nbsp;&nbsp;contain 0 num of 2 and 2 num of 3 <br/>7:12&nbsp;&nbsp;contain 2 num of 2 and 1 num of 3 <br/>8:18&nbsp;&nbsp;contain 1 num of 2 and 2 num of 3 <br/>9:27&nbsp;&nbsp;contain 0 num of 2 and 3 num of 3 <br/>10:36&nbsp;&nbsp;contain 2 num of 2 and 2 num of 3 <br/>11:54&nbsp;&nbsp;contain 1 num of 2 and 3 num of 3 <br/>12:81&nbsp;&nbsp;contain 0 num of 2 and 4 num of 3 <br/>13:108&nbsp;&nbsp;contain 2 num of 2 and 3 num of 3 <br/>14:162&nbsp;&nbsp;contain 1 num of 2 and 4 num of 3 <br/>15:243&nbsp;&nbsp;contain 0 num of 2 and 5 num of 3 <br/>16:324&nbsp;&nbsp;contain 2 num of 2 and 4 num of 3 <br/>17:486&nbsp;&nbsp;contain 1 num of 2 and 5 num of 3 <br/>18:729&nbsp;&nbsp;contain 0 num of 2 and 6 num of 3 <br/>19:972&nbsp;&nbsp;contain 2 num of 2 and 5 num of 3 <br/>20:1458&nbsp;&nbsp;contain 1 num of 2 and 6 num of 3 <br/>21:2187&nbsp;&nbsp;contain 0 num of 2 and 7 num of 3 <br/>22:2916&nbsp;&nbsp;contain 2 num of 2 and 6 num of 3 <br/>23:4374&nbsp;&nbsp;contain 1 num of 2 and 7 num of 3 <br/>24:6561&nbsp;&nbsp;contain 0 num of 2 and 8 num of 3 <br/>25:8748&nbsp;&nbsp;contain 2 num of 2 and 7 num of 3 <br/>26:13122&nbsp;&nbsp;contain 1 num of 2 and 8 num of 3 <br/>27:19683&nbsp;&nbsp;contain 0 num of 2 and 9 num of 3 <br/>28:26244&nbsp;&nbsp;contain 2 num of 2 and 8 num of 3 <br/>29:39366&nbsp;&nbsp;contain 1 num of 2 and 9 num of 3 <br/>30:59049&nbsp;&nbsp;contain 0 num of 2 and 10 num of 3 <br/>31:78732&nbsp;&nbsp;contain 2 num of 2 and 9 num of 3 <br/>32:118098&nbsp;&nbsp;contain 1 num of 2 and 10 num of 3 <br/>33:177147&nbsp;&nbsp;contain 0 num of 2 and 11 num of 3 <br/>34:236196&nbsp;&nbsp;contain 2 num of 2 and 10 num of 3 <br/>35:354294&nbsp;&nbsp;contain 1 num of 2 and 11 num of 3 <br/>36:531441&nbsp;&nbsp;contain 0 num of 2 and 12 num of 3 <br/>37:708588&nbsp;&nbsp;contain 2 num of 2 and 11 num of 3 <br/>38:1062882&nbsp;&nbsp;contain 1 num of 2 and 12 num of 3 <br/>39:1594323&nbsp;&nbsp;contain 0 num of 2 and 13 num of 3 <br/>40:2125764&nbsp;&nbsp;contain 2 num of 2 and 12 num of 3 <br/>41:3188646&nbsp;&nbsp;contain 1 num of 2 and 13 num of 3 <br/>42:4782969&nbsp;&nbsp;contain 0 num of 2 and 14 num of 3 <br/>43:6377292&nbsp;&nbsp;contain 2 num of 2 and 13 num of 3 <br/>44:9565938&nbsp;&nbsp;contain 1 num of 2 and 14 num of 3 <br/>45:14348907&nbsp;&nbsp;contain 0 num of 2 and 15 num of 3 <br/>46:19131876&nbsp;&nbsp;contain 2 num of 2 and 14 num of 3 <br/>47:28697814&nbsp;&nbsp;contain 1 num of 2 and 15 num of 3 <br/>48:43046721&nbsp;&nbsp;contain 0 num of 2 and 16 num of 3 <br/>49:57395628&nbsp;&nbsp;contain 2 num of 2 and 15 num of 3 <br/>50:86093442&nbsp;&nbsp;contain 1 num of 2 and 16 num of 3 <br/><br/>Tags - <a href="http://www.phpobject.net/blog/go.php/tags/%25E7%25AE%2597%25E6%25B3%2595/" rel="tag">算法</a> , <a href="http://www.phpobject.net/blog/go.php/tags/c/" rel="tag">c</a>
]]>
</description>
</item><item>
<link>http://www.phpobject.net/blog/read.php/145.htm</link>
<title><![CDATA[google2009在华南地区笔试题目之二]]></title> 
<author>feifengxlq &lt;feifengxlq@gmail.com&gt;</author>
<category><![CDATA[PHP相关]]></category>
<pubDate>Wed, 24 Sep 2008 02:54:45 +0000</pubDate> 
<guid>http://www.phpobject.net/blog/read.php/145.htm</guid> 
<description>
<![CDATA[ 
	google第二道笔试题<br/>题目要求大致意思：<br/> * 给定一个集合A=[0,1,3,8](该集合中的元素都是在0，9之间的数字，但未必全部包含)，指定任意一个正整数K，请用A中的元素组成一个大于K的最小正整数。<br/> * 比如，A=[1,0] K=21 那么输出结构应该为100<br/><br/>我在笔试的时候，想到非递归方法的思路，但由于时间关系，居然也没有写完（C太不熟悉了，写的太少了，现在加紧恢复中。。。）<br/><br/>现在提供一个PHP非递归实现的程序。<br/><br/>[codes=php]<br/><?php<br/>/**<br/> * google第二道笔试题<br/> * 题目要求大致意思：<br/> * 给定一个集合A=[0,1,3,8](该集合中的元素都是在0，9之间的数字，但未必全部包含)，指定任意一个正整数K，请用A中的元素组成一个大于K的最小正整数。<br/> * 比如，A=[1,0] K=21 那么输出结构应该为100<br/> */<br/><br/>/**<br/> * 获取数组中的最大值<br/> *<br/> * @param 数组 $a<br/> * @return 最大值<br/> */<br/>function getMaxNum($a)<br/>&#123;<br/>&nbsp;&nbsp;return max($a);<br/>&#125;<br/>/**<br/> * 获取数组中的最小值<br/> *<br/> * @param 数组 $a<br/> * @return 最小值<br/> */<br/>function getMinNum($a)&#123;<br/>&nbsp;&nbsp;return min($a);<br/>&#125;<br/>/**<br/> * 从数组中$a中找出不小于$c且最接近$c的元素<br/> *<br/> * @param 数组 $a<br/> * @param 数字 $c<br/> * @param 是否允许相等的值 $allowEqual<br/> * @return 最接近的元素<br/> */<br/>function getMinNumByNum($a,$c,$allowEqual = TRUE)&#123;<br/>&nbsp;&nbsp;$min = 10;<br/>&nbsp;&nbsp;$minA = -1;<br/>&nbsp;&nbsp;foreach ($a as $num)<br/>&nbsp;&nbsp;&#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;$tmp = $num - $c;<br/>&nbsp;&nbsp;&nbsp;&nbsp;if( (!$allowEqual) && ($tmp == 0) )continue;<br/>&nbsp;&nbsp;&nbsp;&nbsp;if ( $tmp>=0 && $tmp<$min )&#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$min = $tmp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$minA = $num;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&#125;<br/>&nbsp;&nbsp;&#125;<br/>&nbsp;&nbsp;return $minA;<br/>&#125;<br/>/**<br/> * 求模<br/> *<br/> * @param 数字一 $num1<br/> * @param 数字二 $num2<br/> * @return 模值<br/> */<br/>function mod($num1,$num2=10)<br/>&#123;<br/>&nbsp;&nbsp;return $num1 % $num2;<br/>&#125;<br/>/**<br/> * 求余值<br/> *<br/> * @param 数字1 $num1<br/> * @param 数字2 $num2<br/> * @return 余值<br/> */<br/>function plus($num1,$num2=10)<br/>&#123;<br/>&nbsp;&nbsp;return floor( $num1/$num2 );<br/>&#125;<br/>/**<br/> * 更新数组到制定值<br/> *<br/> * @param 数组 $rs<br/> * @param 指定值 $num<br/> * @param 数组结束位置 $end<br/> * @return 更新后的数组<br/> */<br/>function updateRs($rs,$num,$end)<br/>&#123;<br/>&nbsp;&nbsp;if ( $end>0 )&#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;for ($i=0;$i<$end;$i++)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$rs[$i] = $num;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&#125;<br/>&nbsp;&nbsp;&#125;<br/>&nbsp;&nbsp;return $rs;<br/>&#125;<br/>/**<br/> * 非递归方法<br/> *<br/> * @param 元素集合 数组 $a<br/> * @param 指定的正整数 $k<br/> */<br/>function getMinMax($a,$k)<br/>&#123;<br/>&nbsp;&nbsp;$rs = array();//把结果保存到数组中，从低位到高位<br/>&nbsp;&nbsp;$maxA = getMaxNum($a);<br/>&nbsp;&nbsp;$minA = getMinNum($a);<br/>&nbsp;&nbsp;$minA2 = getMinNum(array_filter($a));//$a集合中去掉0的最小值<br/>&nbsp;&nbsp;<br/>&nbsp;&nbsp;$isMax = FALSE;<br/>&nbsp;&nbsp;while ($k>0)&#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;$tmp = mod($k);<br/>&nbsp;&nbsp;&nbsp;&nbsp;$k = plus($k);<br/>&nbsp;&nbsp;&nbsp;&nbsp;//echo $tmp . ' ' . $k . "&#92;n";<br/>&nbsp;&nbsp;&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;if ( $tmp > $maxA )&#123;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//小于 修正后面的数字<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$rs = updateRs($rs,$minA,count($rs));<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$isMax = FALSE;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$rs[] = $minA;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&#125;else&#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//找出最接近$a的值<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if ( $isMax == FALSE )&#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//找出大于$tmp的最小值<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$tRs = getMinNumByNum($a,$tmp,FALSE);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#125;else&#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//找出不小于$tmp的最小值<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$tRs = getMinNumByNum($a,$tmp);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#125;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if ( $tRs == -1 )&#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$tRs = $tmp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#125;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if ( $tRs == $tmp )&#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//相等<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#125;else if ( $tRs > $tmp )&#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//大于，则修正低位数字为最小<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$rs = updateRs($rs,$minA,count($rs));<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$isMax = TRUE;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#125;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$rs[] = $tRs;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&#125;<br/>&nbsp;&nbsp;&#125;<br/>&nbsp;&nbsp;//修正<br/>&nbsp;&nbsp;if ( !$isMax )&#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;//首位小于$k的首位，需要增加位数，同时其他置最小<br/>&nbsp;&nbsp;&nbsp;&nbsp;$rs = updateRs($rs,$minA,count($rs));<br/>&nbsp;&nbsp;&nbsp;&nbsp;$rs[] = $minA2;<br/>&nbsp;&nbsp;&#125;&nbsp;&nbsp;<br/>&nbsp;&nbsp;print_r($rs);<br/>&#125;<br/><br/>$a = array(0,1,2,3,5);<br/>$k = 832;<br/>//echo getMinNumByNum($a,2);<br/>getMinMax($a,$k);<br/>?><br/>[/codes]<br/>Tags - <a href="http://www.phpobject.net/blog/go.php/tags/google/" rel="tag">google</a> , <a href="http://www.phpobject.net/blog/go.php/tags/php/" rel="tag">php</a>
]]>
</description>
</item>
</channel>
</rss>