﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-我的漫漫程序之旅-文章分类-数据结构与算法</title><link>http://www.blogjava.net/supercrsky/category/28440.html</link><description>专注于JavaWeb开发</description><language>zh-cn</language><lastBuildDate>Mon, 12 May 2008 18:42:55 GMT</lastBuildDate><pubDate>Mon, 12 May 2008 18:42:55 GMT</pubDate><ttl>60</ttl><item><title>关于蚂蚁问题（Ants）</title><link>http://www.blogjava.net/supercrsky/articles/199930.html</link><dc:creator>々上善若水々</dc:creator><author>々上善若水々</author><pubDate>Mon, 12 May 2008 01:07:00 GMT</pubDate><guid>http://www.blogjava.net/supercrsky/articles/199930.html</guid><wfw:comment>http://www.blogjava.net/supercrsky/comments/199930.html</wfw:comment><comments>http://www.blogjava.net/supercrsky/articles/199930.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/supercrsky/comments/commentRss/199930.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/supercrsky/services/trackbacks/199930.html</trackback:ping><description><![CDATA[原文地址:<br />
http://www.blogjava.net/dreamingnest/archive/2008/05/10/199672.html<br />
<br />
之前看有的朋友谈百度的一道面试试题－<strong>蚂蚁问题</strong>（有一根27厘米的细木杆，在第3厘米、7厘米、11厘米、17厘米、23厘米这五个位置上各有一只蚂蚁。木杆很细，不能同时通过一只蚂蚁。开始时，蚂蚁的头朝左还是朝右是任意的，它们只会朝前走或调头，但不会后退。当任意两只蚂蚁碰头时，两只蚂蚁会同时调头朝反方向走。假设蚂蚁们每秒钟可以走一厘米的距离。编写程序，求所有蚂蚁都离开木杆的最小时间和最大时间）。关于这道题目，网上给出了很多的解释，但从整体来看，基本都是用到了等价置换（等量代换）的思想。要求最小时间，即为&#8220;最不容易&#8221;先到达两端的蚂蚁以最短的时间到达，所以我们只需找到所有蚂蚁中间的一只（共奇数只蚂蚁）或两只（共偶数只蚂蚁）到达一端的最短时间。比较麻烦的是求最长时间，有人会觉得当有很多只蚂蚁时，中间的蚂蚁们相互碰撞的次数多些会增加时间，感觉上比较复杂，可如果我们用等量代换的思想来解释就比较容易。假设中间的任意两只相邻蚂蚁即将发生碰撞，如：A －&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&lt;－B，当A，B发生碰撞后，便有&lt;－A&nbsp;&nbsp;&nbsp; B－&gt;。A，B反向相当于&lt;－B&nbsp;&nbsp; A －&gt;&nbsp;，即二者继续向着原来的方向前进，对于任意相邻的发生碰撞的蚂蚁都适用，所以只需求最两端的两只蚂蚁距离两端的最远距离。由以上分析可知，如果出这样的问题，我们可以不用通过程序便能说出结果：5个点，中间蚂蚁的位置为11，即0－11－27，显然最小为11，最两端蚂蚁，0－3－27，最大为24，0－23－27，最大为23，所以最大为24。对于这个题，给出如下Java代码（随便写了几句，不符合面向对象思想）。<br />
<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><img id="Codehighlighter1_17_369_Open_Image" onclick="this.style.display='none'; Codehighlighter1_17_369_Open_Text.style.display='none'; Codehighlighter1_17_369_Closed_Image.style.display='inline'; Codehighlighter1_17_369_Closed_Text.style.display='inline';" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedBlockStart.gif" align="top" /><img id="Codehighlighter1_17_369_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_17_369_Closed_Text.style.display='none'; Codehighlighter1_17_369_Open_Image.style.display='inline'; Codehighlighter1_17_369_Open_Text.style.display='inline';" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/ContractedBlock.gif" align="top" /><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">class</span><span style="color: #000000">&nbsp;Ant&nbsp;</span><span id="Codehighlighter1_17_369_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img alt="" src="http://www.blogjava.net/Images/dot.gif" /></span><span id="Codehighlighter1_17_369_Open_Text"><span style="color: #000000">{<br />
<img id="Codehighlighter1_58_367_Open_Image" onclick="this.style.display='none'; Codehighlighter1_58_367_Open_Text.style.display='none'; Codehighlighter1_58_367_Closed_Image.style.display='inline'; Codehighlighter1_58_367_Closed_Text.style.display='inline';" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_58_367_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_58_367_Closed_Text.style.display='none'; Codehighlighter1_58_367_Open_Image.style.display='inline'; Codehighlighter1_58_367_Open_Text.style.display='inline';" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/ContractedSubBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">static</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;main(String[]&nbsp;args)</span><span id="Codehighlighter1_58_367_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img alt="" src="http://www.blogjava.net/Images/dot.gif" /></span><span id="Codehighlighter1_58_367_Open_Text"><span style="color: #000000">{<br />
<img alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;length</span><span style="color: #000000">=</span><span style="color: #000000">27</span><span style="color: #000000">,points</span><span style="color: #000000">=</span><span style="color: #000000">5</span><span style="color: #000000">,min</span><span style="color: #000000">=</span><span style="color: #000000">0</span><span style="color: #000000">,max</span><span style="color: #000000">=</span><span style="color: #000000">0</span><span style="color: #000000">,temp_min</span><span style="color: #000000">=</span><span style="color: #000000">0</span><span style="color: #000000">,temp_max</span><span style="color: #000000">=</span><span style="color: #000000">0</span><span style="color: #000000">;<br />
<img id="Codehighlighter1_132_145_Open_Image" onclick="this.style.display='none'; Codehighlighter1_132_145_Open_Text.style.display='none'; Codehighlighter1_132_145_Closed_Image.style.display='inline'; Codehighlighter1_132_145_Closed_Text.style.display='inline';" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_132_145_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_132_145_Closed_Text.style.display='none'; Codehighlighter1_132_145_Open_Image.style.display='inline'; Codehighlighter1_132_145_Open_Text.style.display='inline';" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/ContractedSubBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">[]&nbsp;pos</span><span style="color: #000000">=</span><span id="Codehighlighter1_132_145_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img alt="" src="http://www.blogjava.net/Images/dot.gif" /></span><span id="Codehighlighter1_132_145_Open_Text"><span style="color: #000000">{</span><span style="color: #000000">3</span><span style="color: #000000">,</span><span style="color: #000000">7</span><span style="color: #000000">,</span><span style="color: #000000">11</span><span style="color: #000000">,</span><span style="color: #000000">17</span><span style="color: #000000">,</span><span style="color: #000000">23</span><span style="color: #000000">}</span></span><span style="color: #000000">;<br />
<img id="Codehighlighter1_165_315_Open_Image" onclick="this.style.display='none'; Codehighlighter1_165_315_Open_Text.style.display='none'; Codehighlighter1_165_315_Closed_Image.style.display='inline'; Codehighlighter1_165_315_Closed_Text.style.display='inline';" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_165_315_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_165_315_Closed_Text.style.display='none'; Codehighlighter1_165_315_Open_Image.style.display='inline'; Codehighlighter1_165_315_Open_Text.style.display='inline';" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/ContractedSubBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">for</span><span style="color: #000000">(</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;i:&nbsp;pos)</span><span id="Codehighlighter1_165_315_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img alt="" src="http://www.blogjava.net/Images/dot.gif" /></span><span id="Codehighlighter1_165_315_Open_Text"><span style="color: #000000">{<br />
<img alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;temp_min</span><span style="color: #000000">=</span><span style="color: #000000">i</span><span style="color: #000000">&gt;</span><span style="color: #000000">length</span><span style="color: #000000">-</span><span style="color: #000000">i</span><span style="color: #000000">?</span><span style="color: #000000">length</span><span style="color: #000000">-</span><span style="color: #000000">i:i;<br />
<img alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;temp_max</span><span style="color: #000000">=</span><span style="color: #000000">i</span><span style="color: #000000">&lt;</span><span style="color: #000000">length</span><span style="color: #000000">-</span><span style="color: #000000">i</span><span style="color: #000000">?</span><span style="color: #000000">length</span><span style="color: #000000">-</span><span style="color: #000000">i:i;<br />
<img alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">(temp_min</span><span style="color: #000000">&gt;</span><span style="color: #000000">min)<br />
<img alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;min</span><span style="color: #000000">=</span><span style="color: #000000">temp_min;<br />
<img alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">(temp_max</span><span style="color: #000000">&gt;</span><span style="color: #000000">max)<br />
<img alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;max</span><span style="color: #000000">=</span><span style="color: #000000">temp_max;<br />
<img alt="" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br />
<img alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(</span><span style="color: #000000">"</span><span style="color: #000000">最短时间:</span><span style="color: #000000">"</span><span style="color: #000000">+</span><span style="color: #000000">min</span><span style="color: #000000">+</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;&nbsp;最长时间:</span><span style="color: #000000">"</span><span style="color: #000000">+</span><span style="color: #000000">max);<br />
<img alt="" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br />
<img alt="" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" />}</span></span></div>
有了如上的想法，我们能做出判断，为什么还要写代码呢？其实这个问题出自Waterloo Local Contest Sep.19,2004 准确描述如下：<br />
<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><img alt="" src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align="top" /><span style="color: #000000">An&nbsp;army&nbsp;of&nbsp;ants&nbsp;walk&nbsp;on&nbsp;a&nbsp;horizontal&nbsp;pole&nbsp;of&nbsp;length&nbsp;l&nbsp;cm,&nbsp;each&nbsp;with&nbsp;a&nbsp;constant&nbsp;speed&nbsp;of&nbsp;</span><span style="color: #000000">1</span><span style="color: #000000">&nbsp;cm</span><span style="color: #000000">/</span><span style="color: #000000">s.&nbsp;When&nbsp;a&nbsp;walking&nbsp;ant&nbsp;reaches&nbsp;an&nbsp;end&nbsp;of&nbsp;the&nbsp;pole,&nbsp;it&nbsp;immediatelly&nbsp;falls&nbsp;off&nbsp;it.&nbsp;When&nbsp;two&nbsp;ants&nbsp;meet&nbsp;they&nbsp;turn&nbsp;back&nbsp;and&nbsp;start&nbsp;walking&nbsp;in&nbsp;opposite&nbsp;directions.&nbsp;We&nbsp;know&nbsp;the&nbsp;original&nbsp;positions&nbsp;of&nbsp;ants&nbsp;on&nbsp;the&nbsp;pole,&nbsp;unfortunately,&nbsp;we&nbsp;</span><span style="color: #0000ff">do</span><span style="color: #000000">&nbsp;not&nbsp;know&nbsp;the&nbsp;directions&nbsp;in&nbsp;which&nbsp;the&nbsp;ants&nbsp;are&nbsp;walking.&nbsp;Your&nbsp;task&nbsp;is&nbsp;to&nbsp;compute&nbsp;the&nbsp;earliest&nbsp;and&nbsp;the&nbsp;latest&nbsp;possible&nbsp;times&nbsp;needed&nbsp;</span><span style="color: #0000ff">for</span><span style="color: #000000">&nbsp;all&nbsp;ants&nbsp;to&nbsp;fall&nbsp;off&nbsp;the&nbsp;pole.&nbsp;<br />
<img alt="" src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align="top" />The&nbsp;first&nbsp;line&nbsp;of&nbsp;input&nbsp;contains&nbsp;one&nbsp;integer&nbsp;giving&nbsp;the&nbsp;number&nbsp;of&nbsp;cases&nbsp;that&nbsp;follow.&nbsp;The&nbsp;data&nbsp;</span><span style="color: #0000ff">for</span><span style="color: #000000">&nbsp;each&nbsp;</span><span style="color: #0000ff">case</span><span style="color: #000000">&nbsp;start&nbsp;with&nbsp;two&nbsp;integer&nbsp;numbers:&nbsp;the&nbsp;length&nbsp;of&nbsp;the&nbsp;pole&nbsp;(in&nbsp;cm)&nbsp;and&nbsp;n,&nbsp;the&nbsp;number&nbsp;of&nbsp;ants&nbsp;residing&nbsp;on&nbsp;the&nbsp;pole.&nbsp;These&nbsp;two&nbsp;numbers&nbsp;are&nbsp;followed&nbsp;by&nbsp;n&nbsp;integers&nbsp;giving&nbsp;the&nbsp;position&nbsp;of&nbsp;each&nbsp;ant&nbsp;on&nbsp;the&nbsp;pole&nbsp;as&nbsp;the&nbsp;distance&nbsp;measured&nbsp;from&nbsp;the&nbsp;left&nbsp;end&nbsp;of&nbsp;the&nbsp;pole,&nbsp;in&nbsp;no&nbsp;particular&nbsp;order.&nbsp;All&nbsp;input&nbsp;integers&nbsp;are&nbsp;not&nbsp;bigger&nbsp;than&nbsp;</span><span style="color: #000000">1000000</span><span style="color: #000000">&nbsp;and&nbsp;they&nbsp;are&nbsp;separated&nbsp;by&nbsp;whitespace.&nbsp;<br />
<img alt="" src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align="top" /><br />
<img alt="" src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align="top" />For&nbsp;each&nbsp;</span><span style="color: #0000ff">case</span><span style="color: #000000">&nbsp;of&nbsp;input,&nbsp;output&nbsp;two&nbsp;numbers&nbsp;separated&nbsp;by&nbsp;a&nbsp;single&nbsp;space.&nbsp;The&nbsp;first&nbsp;number&nbsp;is&nbsp;the&nbsp;earliest&nbsp;possible&nbsp;time&nbsp;when&nbsp;all&nbsp;ants&nbsp;fall&nbsp;off&nbsp;the&nbsp;pole&nbsp;(</span><span style="color: #0000ff">if</span><span style="color: #000000">&nbsp;the&nbsp;directions&nbsp;of&nbsp;their&nbsp;walks&nbsp;are&nbsp;chosen&nbsp;appropriately)&nbsp;and&nbsp;the&nbsp;second&nbsp;number&nbsp;is&nbsp;the&nbsp;latest&nbsp;possible&nbsp;such&nbsp;time.&nbsp;<br />
<img alt="" src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align="top" /><br />
<img alt="" src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align="top" />Sample&nbsp;Input<br />
<img alt="" src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align="top" /></span><span style="color: #000000">2</span><span style="color: #000000"><br />
<img alt="" src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align="top" /></span><span style="color: #000000">10</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">3</span><span style="color: #000000"><br />
<img alt="" src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align="top" /></span><span style="color: #000000">2</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">6</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">7</span><span style="color: #000000"><br />
<img alt="" src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align="top" /></span><span style="color: #000000">214</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">7</span><span style="color: #000000"><br />
<img alt="" src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align="top" /></span><span style="color: #000000">11</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">12</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">7</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">13</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">176</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">23</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">191</span><span style="color: #000000"><br />
<img alt="" src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align="top" /><br />
<img alt="" src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align="top" />Sample&nbsp;Output<br />
<img alt="" src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align="top" /></span><span style="color: #000000">4</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">8</span><span style="color: #000000"><br />
<img alt="" src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align="top" /></span><span style="color: #000000">38</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">207</span><span style="color: #000000"><br />
<img alt="" src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align="top" /><br />
<img alt="" src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align="top" /></span></div>
在这里给出相应的c++代码：<br />
<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><img alt="" src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align="top" /><span style="color: #000000">#include</span><span style="color: #000000">&lt;</span><span style="color: #000000">iostream</span><span style="color: #000000">&gt;</span><span style="color: #000000"><br />
<img alt="" src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align="top" /></span><span style="color: #0000ff">using</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">namespace</span><span style="color: #000000">&nbsp;std;<br />
<img alt="" src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align="top" /></span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;main()<br />
<img id="Codehighlighter1_51_381_Open_Image" onclick="this.style.display='none'; Codehighlighter1_51_381_Open_Text.style.display='none'; Codehighlighter1_51_381_Closed_Image.style.display='inline'; Codehighlighter1_51_381_Closed_Text.style.display='inline';" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedBlockStart.gif" align="top" /><img id="Codehighlighter1_51_381_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_51_381_Closed_Text.style.display='none'; Codehighlighter1_51_381_Open_Image.style.display='inline'; Codehighlighter1_51_381_Open_Text.style.display='inline';" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/ContractedBlock.gif" align="top" /></span><span id="Codehighlighter1_51_381_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img alt="" src="http://www.blogjava.net/Images/dot.gif" /></span><span id="Codehighlighter1_51_381_Open_Text"><span style="color: #000000">{<br />
<img alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;cases,l,n,min,max,temp_min,temp_max,pos;<br />
<img alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;cin</span><span style="color: #000000">&gt;&gt;</span><span style="color: #000000">cases;<br />
<img alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">while</span><span style="color: #000000">(cases</span><span style="color: #000000">--</span><span style="color: #000000">)<br />
<img id="Codehighlighter1_129_368_Open_Image" onclick="this.style.display='none'; Codehighlighter1_129_368_Open_Text.style.display='none'; Codehighlighter1_129_368_Closed_Image.style.display='inline'; Codehighlighter1_129_368_Closed_Text.style.display='inline';" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_129_368_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_129_368_Closed_Text.style.display='none'; Codehighlighter1_129_368_Open_Image.style.display='inline'; Codehighlighter1_129_368_Open_Text.style.display='inline';" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/ContractedSubBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span id="Codehighlighter1_129_368_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img alt="" src="http://www.blogjava.net/Images/dot.gif" /></span><span id="Codehighlighter1_129_368_Open_Text"><span style="color: #000000">{<br />
<img alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cin</span><span style="color: #000000">&gt;&gt;</span><span style="color: #000000">l</span><span style="color: #000000">&gt;&gt;</span><span style="color: #000000">n;<br />
<img alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;min</span><span style="color: #000000">=</span><span style="color: #000000">0</span><span style="color: #000000">;<br />
<img alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;max</span><span style="color: #000000">=</span><span style="color: #000000">0</span><span style="color: #000000">;<br />
<img alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">while</span><span style="color: #000000">(n</span><span style="color: #000000">--</span><span style="color: #000000">)<br />
<img id="Codehighlighter1_177_336_Open_Image" onclick="this.style.display='none'; Codehighlighter1_177_336_Open_Text.style.display='none'; Codehighlighter1_177_336_Closed_Image.style.display='inline'; Codehighlighter1_177_336_Closed_Text.style.display='inline';" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_177_336_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_177_336_Closed_Text.style.display='none'; Codehighlighter1_177_336_Open_Image.style.display='inline'; Codehighlighter1_177_336_Open_Text.style.display='inline';" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/ContractedSubBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span id="Codehighlighter1_177_336_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img alt="" src="http://www.blogjava.net/Images/dot.gif" /></span><span id="Codehighlighter1_177_336_Open_Text"><span style="color: #000000">{<br />
<img alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cin</span><span style="color: #000000">&gt;&gt;</span><span style="color: #000000">pos;<br />
<img alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;temp_min</span><span style="color: #000000">=</span><span style="color: #000000">pos</span><span style="color: #000000">&gt;</span><span style="color: #000000">l</span><span style="color: #000000">-</span><span style="color: #000000">pos</span><span style="color: #000000">?</span><span style="color: #000000">l</span><span style="color: #000000">-</span><span style="color: #000000">pos:pos;<br />
<img alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;temp_max</span><span style="color: #000000">=</span><span style="color: #000000">pos</span><span style="color: #000000">&lt;</span><span style="color: #000000">l</span><span style="color: #000000">-</span><span style="color: #000000">pos</span><span style="color: #000000">?</span><span style="color: #000000">l</span><span style="color: #000000">-</span><span style="color: #000000">pos:pos;<br />
<img alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">(temp_min</span><span style="color: #000000">&gt;</span><span style="color: #000000">min)<br />
<img alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;min</span><span style="color: #000000">=</span><span style="color: #000000">temp_min;<br />
<img alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">(temp_max</span><span style="color: #000000">&gt;</span><span style="color: #000000">max)<br />
<img alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;max</span><span style="color: #000000">=</span><span style="color: #000000">temp_max;<br />
<img alt="" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br />
<img alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cout</span><span style="color: #000000">&lt;&lt;</span><span style="color: #000000">min</span><span style="color: #000000">&lt;&lt;</span><span style="color: #000000">'</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">'</span><span style="color: #000000">&lt;&lt;</span><span style="color: #000000">max</span><span style="color: #000000">&lt;&lt;</span><span style="color: #000000">endl;<br />
<img alt="" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br />
<img alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">0</span><span style="color: #000000">;<br />
<img alt="" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" />}</span></span></div>
<img src ="http://www.blogjava.net/supercrsky/aggbug/199930.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/supercrsky/" target="_blank">々上善若水々</a> 2008-05-12 09:07 <a href="http://www.blogjava.net/supercrsky/articles/199930.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>B树、B-树、B+树、B*树详解</title><link>http://www.blogjava.net/supercrsky/articles/185167.html</link><dc:creator>々上善若水々</dc:creator><author>々上善若水々</author><pubDate>Mon, 10 Mar 2008 10:29:00 GMT</pubDate><guid>http://www.blogjava.net/supercrsky/articles/185167.html</guid><wfw:comment>http://www.blogjava.net/supercrsky/comments/185167.html</wfw:comment><comments>http://www.blogjava.net/supercrsky/articles/185167.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/supercrsky/comments/commentRss/185167.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/supercrsky/services/trackbacks/185167.html</trackback:ping><description><![CDATA[<p style="margin: 0cm 0cm 0pt"><font size="2"><strong><font face="Times New Roman">B</font><span style="font-family: 宋体">树</span></strong></font></p>
<p style="margin: 0cm 0cm 0pt"><font size="2"><font face="Times New Roman">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </font><span style="font-family: 宋体">即二叉搜索树：</span></font></p>
<p style="margin: 0cm 0cm 0pt"><font size="2"><font face="Times New Roman">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1.</font><span style="font-family: 宋体">所有非叶子结点至多拥有两个儿子（</span><font face="Times New Roman">Left</font><span style="font-family: 宋体">和</span><font face="Times New Roman">Right</font><span style="font-family: 宋体">）；</span></font></p>
<p style="margin: 0cm 0cm 0pt"><font size="2"><font face="Times New Roman">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2.</font><span style="font-family: 宋体">所有结点存储一个关键字；</span></font></p>
<p style="margin: 0cm 0cm 0pt"><font size="2"><font face="Times New Roman">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 3.</font><span style="font-family: 宋体">非叶子结点的左指针指向小于其关键字的子树，右指针指向大于其关键字的子树；</span></font></p>
<p style="margin: 0cm 0cm 0pt"><font size="2"><font face="Times New Roman">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </font><span style="font-family: 宋体">如：</span></font></p>
<p style="margin: 0cm 0cm 0pt"><font size="2"><font face="Times New Roman">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font></font></p>
<p style="margin: 0cm 0cm 0pt" align="center"><img alt="" src="http://p.blog.csdn.net/images/p_blog_csdn_net/manesking/1.JPG" /></p>
<p style="margin: 0cm 0cm 0pt"><font size="2"><font face="Times New Roman">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; B</font><span style="font-family: 宋体">树的搜索，从根结点开始，如果查询的关键字与结点的关键字相等，那么就命中；否则，如果查询关键字比结点关键字小，就进入左儿子；如果比结点关键字大，就进入右儿子；如果左儿子或右儿子的指针为空，则报告找不到相应的关键字；</span></font></p>
<p style="margin: 0cm 0cm 0pt"><font size="2"><font face="Times New Roman">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </font><span style="font-family: 宋体">如果</span><font face="Times New Roman">B</font><span style="font-family: 宋体">树的所有非叶子结点的左右子树的结点数目均保持差不多（平衡），那么</span><font face="Times New Roman">B</font><span style="font-family: 宋体">树的搜索性能逼近二分查找；但它比连续内存空间的二分查找的优点是，改变</span><font face="Times New Roman">B</font><span style="font-family: 宋体">树结构（插入与删除结点）不需要移动大段的内存数据，甚至通常是常数开销；</span></font></p>
<p style="margin: 0cm 0cm 0pt"><font size="2"><font face="Times New Roman">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </font><span style="font-family: 宋体">如：</span></font></p>
<p style="margin: 0cm 0cm 0pt"><font size="2"><font face="Times New Roman">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </font></font></p>
<p style="margin: 0cm 0cm 0pt" align="center"><img alt="" src="http://p.blog.csdn.net/images/p_blog_csdn_net/manesking/2.JPG" /></p>
<p style="margin: 0cm 0cm 0pt"><font size="2"><span style="font-family: 宋体">&nbsp;&nbsp;&nbsp;但</span><font face="Times New Roman">B</font><span style="font-family: 宋体">树在经过多次插入与删除后，有可能导致不同的结构：</span></font></p>
<p style="margin: 0cm 0cm 0pt" align="center"><font size="2"><span style="font-family: 宋体"><img alt="" src="http://p.blog.csdn.net/images/p_blog_csdn_net/manesking/31.JPG" /></span></font></p>
<span>
<p style="margin: 0cm 0cm 0pt" align="left"><font size="2"><font face="Times New Roman"><span style="font-family: 宋体">&nbsp;&nbsp; 右边也是一个<font face="Times New Roman">B</font><span style="font-family: 宋体">树，但它的搜索性能已经是线性的了；同样的关键字集合有可能导致不同的树结构索引；所以，使用<font face="Times New Roman">B</font><span style="font-family: 宋体">树还要考虑尽可能让</span><font face="Times New Roman">B</font><span style="font-family: 宋体">树保持左图的结构，和避免右图的结构，也就是所谓的&#8220;平衡&#8221;问题；</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </font></span></span></font></p>
<p style="margin: 0cm 0cm 0pt" align="left"><font size="2"><font face="Times New Roman">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </font><span style="font-family: 宋体">实际使用的</span><font face="Times New Roman">B</font><span style="font-family: 宋体">树都是在原</span><font face="Times New Roman">B</font><span style="font-family: 宋体">树的基础上加上平衡算法，即&#8220;平衡二叉树&#8221;；如何保持</span><font face="Times New Roman">B</font><span style="font-family: 宋体">树结点分布均匀的平衡算法是平衡二叉树的关键；平衡算法是一种在</span><font face="Times New Roman">B</font><span style="font-family: 宋体">树中插入和删除结点的策略；</span></font></p>
<p style="margin: 0cm 0cm 0pt"><font face="Times New Roman" size="2">&nbsp;</font></p>
<p style="margin: 0cm 0cm 0pt"><font size="2"><strong><font face="Times New Roman">B-</font><span style="font-family: 宋体">树</span></strong></font></p>
<p style="margin: 0cm 0cm 0pt"><font size="2"><font face="Times New Roman">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </font><span style="font-family: 宋体">是一种多路搜索树（并不是二叉的）：</span></font></p>
<p style="margin: 0cm 0cm 0pt"><font size="2"><font face="Times New Roman">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1.</font><span style="font-family: 宋体">定义任意非叶子结点最多只有</span><font face="Times New Roman">M</font><span style="font-family: 宋体">个儿子；且</span><font face="Times New Roman">M&gt;2</font><span style="font-family: 宋体">；</span></font></p>
<p style="margin: 0cm 0cm 0pt"><font size="2"><font face="Times New Roman">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2.</font><span style="font-family: 宋体">根结点的儿子数为</span><font face="Times New Roman">[2, M]</font><span style="font-family: 宋体">；</span></font></p>
<p style="margin: 0cm 0cm 0pt"><font size="2"><font face="Times New Roman">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 3.</font><span style="font-family: 宋体">除根结点以外的非叶子结点的儿子数为</span><font face="Times New Roman">[M/2, M]</font><span style="font-family: 宋体">；</span></font></p>
<p style="margin: 0cm 0cm 0pt"><font size="2"><font face="Times New Roman">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 4.</font><span style="font-family: 宋体">每个结点存放至少</span><font face="Times New Roman">M/2-1</font><span style="font-family: 宋体">（取上整）和至多</span><font face="Times New Roman">M-1</font><span style="font-family: 宋体">个关键字；（至少</span><font face="Times New Roman">2</font><span style="font-family: 宋体">个关键字）</span></font></p>
<p style="margin: 0cm 0cm 0pt"><font size="2"><font face="Times New Roman">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 5.</font><span style="font-family: 宋体">非叶子结点的关键字个数</span><font face="Times New Roman">=</font><span style="font-family: 宋体">指向儿子的指针个数</span><font face="Times New Roman">-1</font><span style="font-family: 宋体">；</span></font></p>
<p style="margin: 0cm 0cm 0pt"><font size="2"><font face="Times New Roman">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 6.</font><span style="font-family: 宋体">非叶子结点的关键字：</span><font face="Times New Roman">K[1], K[2], &#8230;, K[M-1]</font><span style="font-family: 宋体">；且</span><font face="Times New Roman">K[i] &lt; K[i+1]</font><span style="font-family: 宋体">；</span></font></p>
<p style="margin: 0cm 0cm 0pt"><font size="2"><font face="Times New Roman">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 7.</font><span style="font-family: 宋体">非叶子结点的指针：</span><font face="Times New Roman">P[1], P[2], &#8230;, P[M]</font><span style="font-family: 宋体">；其中</span><font face="Times New Roman">P[1]</font><span style="font-family: 宋体">指向关键字小于</span><font face="Times New Roman">K[1]</font><span style="font-family: 宋体">的子树，</span><font face="Times New Roman">P[M]</font><span style="font-family: 宋体">指向关键字大于</span><font face="Times New Roman">K[M-1]</font><span style="font-family: 宋体">的子树，其它</span><font face="Times New Roman">P[i]</font><span style="font-family: 宋体">指向关键字属于</span><font face="Times New Roman">(K[i-1], K[i])</font><span style="font-family: 宋体">的子树；</span></font></p>
<p style="margin: 0cm 0cm 0pt"><font size="2"><font face="Times New Roman">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 8.</font><span style="font-family: 宋体">所有叶子结点位于同一层；</span></font></p>
<p style="margin: 0cm 0cm 0pt"><font size="2"><font face="Times New Roman">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </font><span style="font-family: 宋体">如：（</span><font face="Times New Roman">M=3</font><span style="font-family: 宋体">）</span></font></p>
<p style="margin: 0cm 0cm 0pt" align="center"><font size="2"><span style="font-family: 宋体"><span style="font-family: 宋体"><img alt="" src="http://p.blog.csdn.net/images/p_blog_csdn_net/manesking/4.JPG" /></span></span></font></p>
<p style="margin: 0cm 0cm 0pt" align="left"><font size="2"><font face="Times New Roman">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; B-</font><span style="font-family: 宋体">树的搜索，从根结点开始，对结点内的关键字（有序）序列进行二分查找，如果命中则结束，否则进入查询关键字所属范围的儿子结点；重复，直到所对应的儿子指针为空，或已经是叶子结点；</font></span></p>
<p style="margin: 0cm 0cm 0pt; text-indent: 21pt"><font size="2"><font face="Times New Roman">B-</font><span style="font-family: 宋体">树的特性：</span></font></p>
<p style="margin: 0cm 0cm 0pt"><font size="2"><font face="Times New Roman">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1.</font><span style="font-family: 宋体">关键字集合分布在整颗树中；</span></font></p>
<p style="margin: 0cm 0cm 0pt"><font size="2"><font face="Times New Roman">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2.</font><span style="font-family: 宋体">任何一个关键字出现且只出现在一个结点中；</span></font></p>
<p style="margin: 0cm 0cm 0pt"><font size="2"><font face="Times New Roman">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 3.</font><span style="font-family: 宋体">搜索有可能在非叶子结点结束；</span></font></p>
<p style="margin: 0cm 0cm 0pt"><font size="2"><font face="Times New Roman">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 4.</font><span style="font-family: 宋体">其搜索性能等价于在关键字全集内做一次二分查找；</span></font></p>
<p style="margin: 0cm 0cm 0pt"><font size="2"><font face="Times New Roman">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 5.</font><span style="font-family: 宋体">自动层次控制；</span></font></p>
<p style="margin: 0cm 0cm 0pt"><font size="2"><font face="Times New Roman">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </font><span style="font-family: 宋体">由于限制了除根结点以外的非叶子结点，至少含有</span><font face="Times New Roman">M/2</font><span style="font-family: 宋体">个儿子，确保了结点的至少利用率，其最底搜索性能为：</span></font></p>
<p style="margin: 0cm 0cm 0pt" align="center"><font face="Times New Roman"><font size="2"><img alt="" src="http://p.blog.csdn.net/images/p_blog_csdn_net/manesking/0.JPG" /></font></font></p>
<p style="margin: 0cm 0cm 0pt"><font size="2"><font face="Times New Roman">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </font><span style="font-family: 宋体">其中，</span><font face="Times New Roman">M</font><span style="font-family: 宋体">为设定的非叶子结点最多子树个数，</span><font face="Times New Roman">N</font><span style="font-family: 宋体">为关键字总数；</span></font></p>
<p style="margin: 0cm 0cm 0pt"><font size="2"><font face="Times New Roman">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </font><span style="font-family: 宋体">所以</span><font face="Times New Roman">B-</font><span style="font-family: 宋体">树的性能总是等价于二分查找（与</span><font face="Times New Roman">M</font><span style="font-family: 宋体">值无关），也就没有</span><font face="Times New Roman">B</font><span style="font-family: 宋体">树平衡的问题；</span></font></p>
<p style="margin: 0cm 0cm 0pt"><font size="2"><font face="Times New Roman">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </font><span style="font-family: 宋体">由于</span><font face="Times New Roman">M/2</font><span style="font-family: 宋体">的限制，在插入结点时，如果结点已满，需要将结点分裂为两个各占</span><font face="Times New Roman">M/2</font><span style="font-family: 宋体">的结点；删除结点时，需将两个不足</span><font face="Times New Roman">M/2</font><span style="font-family: 宋体">的兄弟结点合并；</span></font></p>
<p style="margin: 0cm 0cm 0pt"><font face="Times New Roman" size="2">&nbsp;</font></p>
<p style="margin: 0cm 0cm 0pt"><font size="2"><strong><font face="Times New Roman">B+</font><span style="font-family: 宋体">树</span></strong></font></p>
<p style="margin: 0cm 0cm 0pt"><font size="2"><font face="Times New Roman">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; B+</font><span style="font-family: 宋体">树是</span><font face="Times New Roman">B-</font><span style="font-family: 宋体">树的变体，也是一种多路搜索树：</span></font></p>
<p style="margin: 0cm 0cm 0pt"><font size="2"><font face="Times New Roman">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1.</font><span style="font-family: 宋体">其定义基本与</span><font face="Times New Roman">B-</font><span style="font-family: 宋体">树同，除了：</span></font></p>
<p style="margin: 0cm 0cm 0pt"><font size="2"><font face="Times New Roman">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2.</font><span style="font-family: 宋体">非叶子结点的子树指针与关键字个数相同；</span></font></p>
<p style="margin: 0cm 0cm 0pt"><font size="2"><font face="Times New Roman">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 3.</font><span style="font-family: 宋体">非叶子结点的子树指针</span><font face="Times New Roman">P[i]</font><span style="font-family: 宋体">，指向关键字值属于</span><font face="Times New Roman">[K[i], K[i+1])</font><span style="font-family: 宋体">的子树（</span><font face="Times New Roman">B-</font><span style="font-family: 宋体">树是开区间）；</span></font></p>
<p style="margin: 0cm 0cm 0pt"><font size="2"><font face="Times New Roman">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 5.</font><span style="font-family: 宋体">为所有叶子结点增加一个链指针；</span></font></p>
<p style="margin: 0cm 0cm 0pt"><font size="2"><font face="Times New Roman">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 6.</font><span style="font-family: 宋体">所有关键字都在叶子结点出现；</span></font></p>
<p style="margin: 0cm 0cm 0pt"><font size="2"><font face="Times New Roman">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </font><span style="font-family: 宋体">如：（</span><font face="Times New Roman">M=3</font><span style="font-family: 宋体">）</span></font></p>
<p style="margin: 0cm 0cm 0pt" align="center"><font size="2"><span style="font-family: 宋体"><span style="font-family: 宋体"><img alt="" src="http://p.blog.csdn.net/images/p_blog_csdn_net/manesking/5.JPG" /></span></span></font></p>
<p style="margin: 0cm 0cm 0pt"><font size="2"><span style="font-family: 宋体">&nbsp;&nbsp; </span></font><font size="2"><font face="Times New Roman">B+</font><span style="font-family: 宋体">的搜索与</span><font face="Times New Roman">B-</font><span style="font-family: 宋体">树也基本相同，区别是</span><font face="Times New Roman">B+</font><span style="font-family: 宋体">树只有达到叶子结点才命中（</span><font face="Times New Roman">B-</font><span style="font-family: 宋体">树可以在非叶子结点命中），其性能也等价于在关键字全集做一次二分查找；</span></font></p>
<p style="margin: 0cm 0cm 0pt"><font size="2"><font face="Times New Roman">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; B+</font><span style="font-family: 宋体">的特性：</span></font></p>
<p style="margin: 0cm 0cm 0pt"><font size="2"><font face="Times New Roman">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1.</font><span style="font-family: 宋体">所有关键字都出现在叶子结点的链表中（稠密索引），且链表中的关键字恰好是有序的；</span></font></p>
<p style="margin: 0cm 0cm 0pt"><font size="2"><font face="Times New Roman">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2.</font><span style="font-family: 宋体">不可能在非叶子结点命中；</span></font></p>
<p style="margin: 0cm 0cm 0pt"><font size="2"><font face="Times New Roman">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 3.</font><span style="font-family: 宋体">非叶子结点相当于是叶子结点的索引（稀疏索引），叶子结点相当于是存储（关键字）数据的数据层；</span></font></p>
<p style="margin: 0cm 0cm 0pt"><font size="2"><font face="Times New Roman">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 4.</font><span style="font-family: 宋体">更适合文件索引系统；</span></font></p>
<p style="margin: 0cm 0cm 0pt"><font face="Times New Roman" size="2">&nbsp;</font><font face="Times New Roman" size="2">&nbsp;</font></p>
<p style="margin: 0cm 0cm 0pt"><font size="2"><strong><font face="Times New Roman">B*</font><span style="font-family: 宋体">树</span></strong></font></p>
<p style="margin: 0cm 0cm 0pt"><font size="2"><font face="Times New Roman">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </font><span style="font-family: 宋体">是</span><font face="Times New Roman">B+</font><span style="font-family: 宋体">树的变体，在</span><font face="Times New Roman">B+</font><span style="font-family: 宋体">树的非根和非叶子结点再增加指向兄弟的指针；</span></font></p>
<p style="margin: 0cm 0cm 0pt" align="center"><font size="2"><span style="font-family: 宋体"><span style="font-family: 宋体"><img alt="" src="http://p.blog.csdn.net/images/p_blog_csdn_net/manesking/6.JPG" /></span></span></font></p>
<p style="margin: 0cm 0cm 0pt"><font size="2"><span style="font-family: 宋体">&nbsp;&nbsp; </span></font><font size="2"><font face="Times New Roman">B*</font><span style="font-family: 宋体">树定义了非叶子结点关键字个数至少为</span><font face="Times New Roman">(2/3)*M</font><span style="font-family: 宋体">，即块的最低使用率为</span><font face="Times New Roman">2/3</font><span style="font-family: 宋体">（代替</span><font face="Times New Roman">B+</font><span style="font-family: 宋体">树的</span><font face="Times New Roman">1/2</font><span style="font-family: 宋体">）；</span></font></p>
<p style="margin: 0cm 0cm 0pt"><font size="2"><font face="Times New Roman">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; B+</font><span style="font-family: 宋体">树的分裂：当一个结点满时，分配一个新的结点，并将原结点中</span><font face="Times New Roman">1/2</font><span style="font-family: 宋体">的数据复制到新结点，最后在父结点中增加新结点的指针；</span><font face="Times New Roman">B+</font><span style="font-family: 宋体">树的分裂只影响原结点和父结点，而不会影响兄弟结点，所以它不需要指向兄弟的指针；</span></font></p>
<p style="margin: 0cm 0cm 0pt"><font size="2"><font face="Times New Roman">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; B*</font><span style="font-family: 宋体">树的分裂：当一个结点满时，如果它的下一个兄弟结点未满，那么将一部分数据移到兄弟结点中，再在原结点插入关键字，最后修改父结点中兄弟结点的关键字（因为兄弟结点的关键字范围改变了）；如果兄弟也满了，则在原结点与兄弟结点之间增加新结点，并各复制</span><font face="Times New Roman">1/3</font><span style="font-family: 宋体">的数据到新结点，最后在父结点增加新结点的指针；</span></font></p>
<p style="margin: 0cm 0cm 0pt"><font size="2"><font face="Times New Roman">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </font><span style="font-family: 宋体">所以，</span><font face="Times New Roman">B*</font><span style="font-family: 宋体">树分配新结点的概率比</span><font face="Times New Roman">B+</font><span style="font-family: 宋体">树要低，空间使用率更高；</span></font></p>
<p style="margin: 0cm 0cm 0pt"><font face="Times New Roman" size="2">&nbsp;</font><font face="Times New Roman" size="2">&nbsp;</font></p>
<p style="margin: 0cm 0cm 0pt"><span style="font-family: 宋体"><font size="2"><strong>小结</strong></font></span></p>
<p style="margin: 0cm 0cm 0pt"><font size="2"><font face="Times New Roman">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; B</font><span style="font-family: 宋体">树：二叉树，每个结点只存储一个关键字，等于则命中，小于走左结点，大于走右结点；</span></font></p>
<p style="margin: 0cm 0cm 0pt"><font size="2"><font face="Times New Roman">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; B-</font><span style="font-family: 宋体">树：多路搜索树，每个结点存储</span><font face="Times New Roman">M/2</font><span style="font-family: 宋体">到</span><font face="Times New Roman">M</font><span style="font-family: 宋体">个关键字，非叶子结点存储指向关键字范围的子结点；</span></font></p>
<p style="margin: 0cm 0cm 0pt"><font size="2"><font face="Times New Roman">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </font><span style="font-family: 宋体">所有关键字在整颗树中出现，且只出现一次，非叶子结点可以命中；</span></font></p>
<p style="margin: 0cm 0cm 0pt"><font size="2"><font face="Times New Roman">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; B+</font><span style="font-family: 宋体">树：在</span><font face="Times New Roman">B-</font><span style="font-family: 宋体">树基础上，为叶子结点增加链表指针，所有关键字都在叶子结点中出现，非叶子结点作为叶子结点的索引；</span><font face="Times New Roman">B+</font><span style="font-family: 宋体">树总是到叶子结点才命中；</span></font></p>
<p style="margin: 0cm 0cm 0pt"><font size="2"><font face="Times New Roman">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; B*</font><span style="font-family: 宋体">树：在</span><font face="Times New Roman">B+</font><span style="font-family: 宋体">树基础上，为非叶子结点也增加链表指针，将结点的最低利用率从</span><font face="Times New Roman">1/2</font><span style="font-family: 宋体">提高到</span><font face="Times New Roman">2/3</font><span style="font-family: 宋体">；</span></font></span></p>
<img src ="http://www.blogjava.net/supercrsky/aggbug/185167.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/supercrsky/" target="_blank">々上善若水々</a> 2008-03-10 18:29 <a href="http://www.blogjava.net/supercrsky/articles/185167.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>策略模式及实现</title><link>http://www.blogjava.net/supercrsky/articles/184403.html</link><dc:creator>々上善若水々</dc:creator><author>々上善若水々</author><pubDate>Fri, 07 Mar 2008 01:39:00 GMT</pubDate><guid>http://www.blogjava.net/supercrsky/articles/184403.html</guid><wfw:comment>http://www.blogjava.net/supercrsky/comments/184403.html</wfw:comment><comments>http://www.blogjava.net/supercrsky/articles/184403.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/supercrsky/comments/commentRss/184403.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/supercrsky/services/trackbacks/184403.html</trackback:ping><description><![CDATA[&nbsp;<span class="blog_content">策略模式，又叫算法簇模式，就是定义了不同的算法族，并且之间可以互相替换，此模式让算法的变化独立于使用算法的客户。 <br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;策略模式的好处在于你可以动态的改变对象的行为。 设计原则是把一个类中经常改变或者将来可能改变的部分提取出来，作为一个接口（c++z中可以用虚类），然后在类中包含这个对象的实例，这样类的实例在运行时就可以随意调用实现了这个接口的类的行为。下面是一个例子。 <br />
<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><img id="Codehighlighter1_0_49_Open_Image" onclick="this.style.display='none'; Codehighlighter1_0_49_Open_Text.style.display='none'; Codehighlighter1_0_49_Closed_Image.style.display='inline'; Codehighlighter1_0_49_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_0_49_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_0_49_Closed_Text.style.display='none'; Codehighlighter1_0_49_Open_Image.style.display='inline'; Codehighlighter1_0_49_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top"  alt="" /><span id="Codehighlighter1_0_49_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff">/**/</span><span id="Codehighlighter1_0_49_Open_Text"><span style="color: #008000">/*</span><span style="color: #008000">&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />这是一个表现僧人和道士的程序，僧人光头，使用棍子做武器，道士长小胡子，使用拂尘作武器&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top"  alt="" /></span><span style="color: #008000">*/</span></span><span style="color: #000000">&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #008000">//</span><span style="color: #008000">处理长相接口&nbsp;</span><span style="color: #008000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #0000ff">interface</span><span style="color: #000000">&nbsp;LooksBehavier&nbsp;<br />
<img id="Codehighlighter1_88_117_Open_Image" onclick="this.style.display='none'; Codehighlighter1_88_117_Open_Text.style.display='none'; Codehighlighter1_88_117_Closed_Image.style.display='inline'; Codehighlighter1_88_117_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_88_117_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_88_117_Closed_Text.style.display='none'; Codehighlighter1_88_117_Open_Image.style.display='inline'; Codehighlighter1_88_117_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top"  alt="" /></span><span id="Codehighlighter1_88_117_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_88_117_Open_Text"><span style="color: #000000">{&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;display();&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top"  alt="" />}</span></span><span style="color: #000000">&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #008000">//</span><span style="color: #008000">处理所使用的武器接口&nbsp;</span><span style="color: #008000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #0000ff">interface</span><span style="color: #000000">&nbsp;WeaponBehavier&nbsp;<br />
<img id="Codehighlighter1_163_193_Open_Image" onclick="this.style.display='none'; Codehighlighter1_163_193_Open_Text.style.display='none'; Codehighlighter1_163_193_Closed_Image.style.display='inline'; Codehighlighter1_163_193_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_163_193_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_163_193_Closed_Text.style.display='none'; Codehighlighter1_163_193_Open_Image.style.display='inline'; Codehighlighter1_163_193_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top"  alt="" /></span><span id="Codehighlighter1_163_193_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_163_193_Open_Text"><span style="color: #000000">{&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;useWeapon();&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top"  alt="" />}</span></span><span style="color: #000000">&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #008000">//</span><span style="color: #008000">角色基类&nbsp;</span><span style="color: #008000"><br />
<img id="Codehighlighter1_216_484_Open_Image" onclick="this.style.display='none'; Codehighlighter1_216_484_Open_Text.style.display='none'; Codehighlighter1_216_484_Closed_Image.style.display='inline'; Codehighlighter1_216_484_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_216_484_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_216_484_Closed_Text.style.display='none'; Codehighlighter1_216_484_Open_Image.style.display='inline'; Codehighlighter1_216_484_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top"  alt="" /></span><span style="color: #0000ff">class</span><span style="color: #000000">&nbsp;Role&nbsp;</span><span id="Codehighlighter1_216_484_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_216_484_Open_Text"><span style="color: #000000">{&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;heght;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">身高&nbsp;</span><span style="color: #008000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" /></span><span style="color: #000000">&nbsp;&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;sex;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">性别&nbsp;</span><span style="color: #008000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" /></span><span style="color: #000000">&nbsp;&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;WeaponBehavier&nbsp;weapon;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">处理武器接口的实例&nbsp;</span><span style="color: #008000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" /></span><span style="color: #000000">&nbsp;&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;LooksBehavier&nbsp;looks;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">处理长相的接口的实例&nbsp;</span><span style="color: #008000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" /></span><span style="color: #000000">&nbsp;&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;display()&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">显示长相&nbsp;</span><span style="color: #008000"><br />
<img id="Codehighlighter1_392_419_Open_Image" onclick="this.style.display='none'; Codehighlighter1_392_419_Open_Text.style.display='none'; Codehighlighter1_392_419_Closed_Image.style.display='inline'; Codehighlighter1_392_419_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_392_419_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_392_419_Closed_Text.style.display='none'; Codehighlighter1_392_419_Open_Image.style.display='inline'; Codehighlighter1_392_419_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top"  alt="" /></span><span style="color: #000000">&nbsp;&nbsp;</span><span id="Codehighlighter1_392_419_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_392_419_Open_Text"><span style="color: #000000">{&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;looks.display();&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top"  alt="" />&nbsp;&nbsp;}</span></span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" /><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" /></span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;weapon()&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">设置所使用的武器&nbsp;</span><span style="color: #008000"><br />
<img id="Codehighlighter1_455_481_Open_Image" onclick="this.style.display='none'; Codehighlighter1_455_481_Open_Text.style.display='none'; Codehighlighter1_455_481_Closed_Image.style.display='inline'; Codehighlighter1_455_481_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_455_481_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_455_481_Closed_Text.style.display='none'; Codehighlighter1_455_481_Open_Image.style.display='inline'; Codehighlighter1_455_481_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top"  alt="" /></span><span id="Codehighlighter1_455_481_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_455_481_Open_Text"><span style="color: #000000">{&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;weapon.useWeapon();&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top"  alt="" />}</span></span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" /><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top"  alt="" />}</span></span><span style="color: #000000">&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #008000">//</span><span style="color: #008000">道士长相类，实现了长相接口&nbsp;</span><span style="color: #008000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #0000ff">class</span><span style="color: #000000">&nbsp;TaoistBehavier&nbsp;</span><span style="color: #0000ff">implements</span><span style="color: #000000">&nbsp;LooksBehavier&nbsp;<br />
<img id="Codehighlighter1_552_659_Open_Image" onclick="this.style.display='none'; Codehighlighter1_552_659_Open_Text.style.display='none'; Codehighlighter1_552_659_Closed_Image.style.display='inline'; Codehighlighter1_552_659_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_552_659_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_552_659_Closed_Text.style.display='none'; Codehighlighter1_552_659_Open_Image.style.display='inline'; Codehighlighter1_552_659_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top"  alt="" /></span><span id="Codehighlighter1_552_659_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_552_659_Open_Text"><span style="color: #000000">{&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;display()&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">实现接口函数&nbsp;</span><span style="color: #008000"><br />
<img id="Codehighlighter1_589_655_Open_Image" onclick="this.style.display='none'; Codehighlighter1_589_655_Open_Text.style.display='none'; Codehighlighter1_589_655_Closed_Image.style.display='inline'; Codehighlighter1_589_655_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_589_655_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_589_655_Closed_Text.style.display='none'; Codehighlighter1_589_655_Open_Image.style.display='inline'; Codehighlighter1_589_655_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top"  alt="" /></span><span id="Codehighlighter1_589_655_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_589_655_Open_Text"><span style="color: #000000">{&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;System.out.println(</span><span style="color: #000000">"</span><span style="color: #000000">I'm&nbsp;a&nbsp;taolist&nbsp;with&nbsp;long&nbsp;white&nbsp;goatee</span><span style="color: #000000">"</span><span style="color: #000000">);&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top"  alt="" />}</span></span><span style="color: #000000">&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" /><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top"  alt="" />}</span></span><span style="color: #000000">&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #008000">//</span><span style="color: #008000">和尚长相类，实现了长相接口&nbsp;</span><span style="color: #008000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #0000ff">class</span><span style="color: #000000">&nbsp;BonzeBehavier&nbsp;</span><span style="color: #0000ff">implements</span><span style="color: #000000">&nbsp;LooksBehavier&nbsp;<br />
<img id="Codehighlighter1_726_827_Open_Image" onclick="this.style.display='none'; Codehighlighter1_726_827_Open_Text.style.display='none'; Codehighlighter1_726_827_Closed_Image.style.display='inline'; Codehighlighter1_726_827_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_726_827_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_726_827_Closed_Text.style.display='none'; Codehighlighter1_726_827_Open_Image.style.display='inline'; Codehighlighter1_726_827_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top"  alt="" /></span><span id="Codehighlighter1_726_827_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_726_827_Open_Text"><span style="color: #000000">{&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;display()&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">实现接口函数&nbsp;</span><span style="color: #008000"><br />
<img id="Codehighlighter1_765_823_Open_Image" onclick="this.style.display='none'; Codehighlighter1_765_823_Open_Text.style.display='none'; Codehighlighter1_765_823_Closed_Image.style.display='inline'; Codehighlighter1_765_823_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_765_823_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_765_823_Closed_Text.style.display='none'; Codehighlighter1_765_823_Open_Image.style.display='inline'; Codehighlighter1_765_823_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top"  alt="" /></span><span style="color: #000000">&nbsp;&nbsp;</span><span id="Codehighlighter1_765_823_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_765_823_Open_Text"><span style="color: #000000">{&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(</span><span style="color: #000000">"</span><span style="color: #000000">I'm&nbsp;a&nbsp;Bonze&nbsp;with&nbsp;no&nbsp;hair</span><span style="color: #000000">"</span><span style="color: #000000">);&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top"  alt="" />&nbsp;&nbsp;}</span></span><span style="color: #000000">&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" /><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top"  alt="" />}</span></span><span style="color: #000000">&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #008000">//</span><span style="color: #008000">道士武器类，实现了处理武器接口&nbsp;</span><span style="color: #008000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #0000ff">class</span><span style="color: #000000">&nbsp;TaoistWeapon&nbsp;</span><span style="color: #0000ff">implements</span><span style="color: #000000">&nbsp;WeaponBehavier&nbsp;<br />
<img id="Codehighlighter1_896_1008_Open_Image" onclick="this.style.display='none'; Codehighlighter1_896_1008_Open_Text.style.display='none'; Codehighlighter1_896_1008_Closed_Image.style.display='inline'; Codehighlighter1_896_1008_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_896_1008_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_896_1008_Closed_Text.style.display='none'; Codehighlighter1_896_1008_Open_Image.style.display='inline'; Codehighlighter1_896_1008_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top"  alt="" /></span><span id="Codehighlighter1_896_1008_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_896_1008_Open_Text"><span style="color: #000000">{&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;useWeapon()&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">实现了处理武器接口函数&nbsp;</span><span style="color: #008000"><br />
<img id="Codehighlighter1_942_1005_Open_Image" onclick="this.style.display='none'; Codehighlighter1_942_1005_Open_Text.style.display='none'; Codehighlighter1_942_1005_Closed_Image.style.display='inline'; Codehighlighter1_942_1005_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_942_1005_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_942_1005_Closed_Text.style.display='none'; Codehighlighter1_942_1005_Open_Image.style.display='inline'; Codehighlighter1_942_1005_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top"  alt="" /></span><span style="color: #000000">&nbsp;&nbsp;</span><span id="Codehighlighter1_942_1005_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_942_1005_Open_Text"><span style="color: #000000">{&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(</span><span style="color: #000000">"</span><span style="color: #000000">My&nbsp;weapon&nbsp;is&nbsp;horsetail&nbsp;whisk</span><span style="color: #000000">"</span><span style="color: #000000">);;&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top"  alt="" />&nbsp;&nbsp;}</span></span><span style="color: #000000">&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top"  alt="" />}</span></span><span style="color: #000000">&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #008000">//</span><span style="color: #008000">和尚武器类，实现了处理武器接口&nbsp;</span><span style="color: #008000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #0000ff">class</span><span style="color: #000000">&nbsp;BonzeWeapon&nbsp;</span><span style="color: #0000ff">implements</span><span style="color: #000000">&nbsp;WeaponBehavier&nbsp;<br />
<img id="Codehighlighter1_1076_1176_Open_Image" onclick="this.style.display='none'; Codehighlighter1_1076_1176_Open_Text.style.display='none'; Codehighlighter1_1076_1176_Closed_Image.style.display='inline'; Codehighlighter1_1076_1176_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_1076_1176_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_1076_1176_Closed_Text.style.display='none'; Codehighlighter1_1076_1176_Open_Image.style.display='inline'; Codehighlighter1_1076_1176_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top"  alt="" /></span><span id="Codehighlighter1_1076_1176_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_1076_1176_Open_Text"><span style="color: #000000">{&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;useWeapon()&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">实现了处理武器接口函数&nbsp;</span><span style="color: #008000"><br />
<img id="Codehighlighter1_1120_1173_Open_Image" onclick="this.style.display='none'; Codehighlighter1_1120_1173_Open_Text.style.display='none'; Codehighlighter1_1120_1173_Closed_Image.style.display='inline'; Codehighlighter1_1120_1173_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_1120_1173_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_1120_1173_Closed_Text.style.display='none'; Codehighlighter1_1120_1173_Open_Image.style.display='inline'; Codehighlighter1_1120_1173_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top"  alt="" /></span><span id="Codehighlighter1_1120_1173_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_1120_1173_Open_Text"><span style="color: #000000">{&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;System.out.println(</span><span style="color: #000000">"</span><span style="color: #000000">My&nbsp;weapon&nbsp;is&nbsp;truncheon</span><span style="color: #000000">"</span><span style="color: #000000">);;&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top"  alt="" />}</span></span><span style="color: #000000">&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top"  alt="" />}</span></span><span style="color: #000000">&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #008000">//</span><span style="color: #008000">道士&nbsp;</span><span style="color: #008000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #0000ff">class</span><span style="color: #000000">&nbsp;Taoist&nbsp;</span><span style="color: #0000ff">extends</span><span style="color: #000000">&nbsp;Role&nbsp;<br />
<img id="Codehighlighter1_1213_1307_Open_Image" onclick="this.style.display='none'; Codehighlighter1_1213_1307_Open_Text.style.display='none'; Codehighlighter1_1213_1307_Closed_Image.style.display='inline'; Codehighlighter1_1213_1307_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_1213_1307_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_1213_1307_Closed_Text.style.display='none'; Codehighlighter1_1213_1307_Open_Image.style.display='inline'; Codehighlighter1_1213_1307_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top"  alt="" /></span><span id="Codehighlighter1_1213_1307_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_1213_1307_Open_Text"><span style="color: #000000">{&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;Taoist()&nbsp;<br />
<img id="Codehighlighter1_1235_1304_Open_Image" onclick="this.style.display='none'; Codehighlighter1_1235_1304_Open_Text.style.display='none'; Codehighlighter1_1235_1304_Closed_Image.style.display='inline'; Codehighlighter1_1235_1304_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_1235_1304_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_1235_1304_Closed_Text.style.display='none'; Codehighlighter1_1235_1304_Open_Image.style.display='inline'; Codehighlighter1_1235_1304_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top"  alt="" /></span><span id="Codehighlighter1_1235_1304_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_1235_1304_Open_Text"><span style="color: #000000">{&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;looks&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;TaoistBehavier();&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;weapon&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;TaoistWeapon();&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top"  alt="" />&nbsp;}</span></span><span style="color: #000000">&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top"  alt="" />}</span></span><span style="color: #000000">&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #008000">//</span><span style="color: #008000">和尚&nbsp;</span><span style="color: #008000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #0000ff">class</span><span style="color: #000000">&nbsp;Bonze&nbsp;</span><span style="color: #0000ff">extends</span><span style="color: #000000">&nbsp;Role&nbsp;<br />
<img id="Codehighlighter1_1343_1547_Open_Image" onclick="this.style.display='none'; Codehighlighter1_1343_1547_Open_Text.style.display='none'; Codehighlighter1_1343_1547_Closed_Image.style.display='inline'; Codehighlighter1_1343_1547_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_1343_1547_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_1343_1547_Closed_Text.style.display='none'; Codehighlighter1_1343_1547_Open_Image.style.display='inline'; Codehighlighter1_1343_1547_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top"  alt="" /></span><span id="Codehighlighter1_1343_1547_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_1343_1547_Open_Text"><span style="color: #000000">{&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;Bonze()&nbsp;<br />
<img id="Codehighlighter1_1366_1436_Open_Image" onclick="this.style.display='none'; Codehighlighter1_1366_1436_Open_Text.style.display='none'; Codehighlighter1_1366_1436_Closed_Image.style.display='inline'; Codehighlighter1_1366_1436_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_1366_1436_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_1366_1436_Closed_Text.style.display='none'; Codehighlighter1_1366_1436_Open_Image.style.display='inline'; Codehighlighter1_1366_1436_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top"  alt="" />&nbsp;&nbsp;</span><span id="Codehighlighter1_1366_1436_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_1366_1436_Open_Text"><span style="color: #000000">{&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;looks&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;BonzeBehavier();&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;weapon&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;BonzeWeapon();&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top"  alt="" />&nbsp;&nbsp;}</span></span><span style="color: #000000">&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;changeWeapon()&nbsp;<br />
<img id="Codehighlighter1_1468_1544_Open_Image" onclick="this.style.display='none'; Codehighlighter1_1468_1544_Open_Text.style.display='none'; Codehighlighter1_1468_1544_Closed_Image.style.display='inline'; Codehighlighter1_1468_1544_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_1468_1544_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_1468_1544_Closed_Text.style.display='none'; Codehighlighter1_1468_1544_Open_Image.style.display='inline'; Codehighlighter1_1468_1544_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top"  alt="" /></span><span id="Codehighlighter1_1468_1544_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_1468_1544_Open_Text"><span style="color: #000000">{&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;weapon&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;TaoistWeapon();&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;System.out.println(</span><span style="color: #000000">"</span><span style="color: #000000">change&nbsp;weapon</span><span style="color: #000000">"</span><span style="color: #000000">);&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top"  alt="" />&nbsp;}</span></span><span style="color: #000000">&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top"  alt="" />}</span></span><span style="color: #000000">&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><br />
<img id="Codehighlighter1_1572_1866_Open_Image" onclick="this.style.display='none'; Codehighlighter1_1572_1866_Open_Text.style.display='none'; Codehighlighter1_1572_1866_Closed_Image.style.display='inline'; Codehighlighter1_1572_1866_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_1572_1866_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_1572_1866_Closed_Text.style.display='none'; Codehighlighter1_1572_1866_Open_Image.style.display='inline'; Codehighlighter1_1572_1866_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top"  alt="" /></span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">class</span><span style="color: #000000">&nbsp;RoleBase</span><span id="Codehighlighter1_1572_1866_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_1572_1866_Open_Text"><span style="color: #000000">{&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">static</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;main(String&nbsp;[]&nbsp;arg)&nbsp;<br />
<img id="Codehighlighter1_1619_1863_Open_Image" onclick="this.style.display='none'; Codehighlighter1_1619_1863_Open_Text.style.display='none'; Codehighlighter1_1619_1863_Closed_Image.style.display='inline'; Codehighlighter1_1619_1863_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_1619_1863_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_1619_1863_Closed_Text.style.display='none'; Codehighlighter1_1619_1863_Open_Image.style.display='inline'; Codehighlighter1_1619_1863_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top"  alt="" />&nbsp;&nbsp;</span><span id="Codehighlighter1_1619_1863_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_1619_1863_Open_Text"><span style="color: #000000">{&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;Taoist&nbsp;taoistObj&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;Taoist();&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;Bonze&nbsp;bonzeObj&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;Bonze();&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;taoistObj.display();&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;taoistObj.weapon();&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;bonzeObj.display();&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;bonzeObj.weapon();&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;bonzeObj.changeWeapon();&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">改变和尚使用的武器&nbsp;</span><span style="color: #008000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" /></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;bonzeObj.weapon();&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top"  alt="" />&nbsp;&nbsp;}</span></span><span style="color: #000000">&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top"  alt="" />}</span></span><span style="color: #000000">&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span></div>
<br />
输出结果为:<br />
<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><span style="color: #000000">I</span><span style="color: #000000">'</span><span style="color: #000000">m&nbsp;a&nbsp;taolist&nbsp;with&nbsp;long&nbsp;white&nbsp;goatee&nbsp;</span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #000000">My&nbsp;weapon&nbsp;is&nbsp;horsetail&nbsp;whisk&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />I</span><span style="color: #000000">'</span><span style="color: #000000">m&nbsp;a&nbsp;Bonze&nbsp;with&nbsp;no&nbsp;hair&nbsp;</span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #000000">My&nbsp;weapon&nbsp;is&nbsp;truncheon&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />change&nbsp;weapon&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />My&nbsp;weapon&nbsp;is&nbsp;horsetail&nbsp;whisk&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span></div>
</span>
<img src ="http://www.blogjava.net/supercrsky/aggbug/184403.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/supercrsky/" target="_blank">々上善若水々</a> 2008-03-07 09:39 <a href="http://www.blogjava.net/supercrsky/articles/184403.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>以单向循环链表求解约瑟夫环问题Java版</title><link>http://www.blogjava.net/supercrsky/articles/171805.html</link><dc:creator>々上善若水々</dc:creator><author>々上善若水々</author><pubDate>Mon, 31 Dec 2007 01:59:00 GMT</pubDate><guid>http://www.blogjava.net/supercrsky/articles/171805.html</guid><wfw:comment>http://www.blogjava.net/supercrsky/comments/171805.html</wfw:comment><comments>http://www.blogjava.net/supercrsky/articles/171805.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/supercrsky/comments/commentRss/171805.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/supercrsky/services/trackbacks/171805.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 约瑟夫环（Josephus）问题：古代某法官要判决n个犯人的死刑，他有一条荒唐的法律，将犯人站成一个圆圈，从第s个人开始数起，每数到第d个犯人，就拉出来处决，然后再数d个，数到的人再处决&#8230;&#8230;直到剩下的最后一个可赦免.结点类:OneLinkNode:package&nbsp;com;/**&nbsp;*//**&nbsp;*&nbsp;结点类&nbsp;*...&nbsp;&nbsp;<a href='http://www.blogjava.net/supercrsky/articles/171805.html'>阅读全文</a><img src ="http://www.blogjava.net/supercrsky/aggbug/171805.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/supercrsky/" target="_blank">々上善若水々</a> 2007-12-31 09:59 <a href="http://www.blogjava.net/supercrsky/articles/171805.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>单向链表的简单实现</title><link>http://www.blogjava.net/supercrsky/articles/171460.html</link><dc:creator>々上善若水々</dc:creator><author>々上善若水々</author><pubDate>Sat, 29 Dec 2007 04:08:00 GMT</pubDate><guid>http://www.blogjava.net/supercrsky/articles/171460.html</guid><wfw:comment>http://www.blogjava.net/supercrsky/comments/171460.html</wfw:comment><comments>http://www.blogjava.net/supercrsky/articles/171460.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/supercrsky/comments/commentRss/171460.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/supercrsky/services/trackbacks/171460.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 要求:写一个示例程序,显示一个单链表.这个链表的功能:1.在链表头插入一个数据项2.在链表头删除一个数据项3.遍历链表显示它的内容实现代码如下:package&nbsp;com;/**&nbsp;*//**&nbsp;*&nbsp;结点类&nbsp;*&nbsp;@author&nbsp;zdw&nbsp;*&nbsp;*/class&nbsp;Link...&nbsp;&nbsp;<a href='http://www.blogjava.net/supercrsky/articles/171460.html'>阅读全文</a><img src ="http://www.blogjava.net/supercrsky/aggbug/171460.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/supercrsky/" target="_blank">々上善若水々</a> 2007-12-29 12:08 <a href="http://www.blogjava.net/supercrsky/articles/171460.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>以顺序表求解约瑟夫环问题的Java实现</title><link>http://www.blogjava.net/supercrsky/articles/171315.html</link><dc:creator>々上善若水々</dc:creator><author>々上善若水々</author><pubDate>Fri, 28 Dec 2007 12:35:00 GMT</pubDate><guid>http://www.blogjava.net/supercrsky/articles/171315.html</guid><wfw:comment>http://www.blogjava.net/supercrsky/comments/171315.html</wfw:comment><comments>http://www.blogjava.net/supercrsky/articles/171315.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/supercrsky/comments/commentRss/171315.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/supercrsky/services/trackbacks/171315.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 约瑟夫环（Josephus）问题：古代某法官要判决n个犯人的死刑，他有一条荒唐的法律，将犯人站成一个圆圈，从第s个人开始数起，每数到第d个犯人，就拉出来处决，然后再数d个，数到的人再处决&#8230;&#8230;直到剩下的最后一个可赦免。 LinearList:package&nbsp;com;/**&nbsp;*//**&nbsp;*&nbsp;线性表的存储结构&nbsp;...&nbsp;&nbsp;<a href='http://www.blogjava.net/supercrsky/articles/171315.html'>阅读全文</a><img src ="http://www.blogjava.net/supercrsky/aggbug/171315.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/supercrsky/" target="_blank">々上善若水々</a> 2007-12-28 20:35 <a href="http://www.blogjava.net/supercrsky/articles/171315.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>辗转相除法原理及Java实现</title><link>http://www.blogjava.net/supercrsky/articles/171145.html</link><dc:creator>々上善若水々</dc:creator><author>々上善若水々</author><pubDate>Fri, 28 Dec 2007 04:41:00 GMT</pubDate><guid>http://www.blogjava.net/supercrsky/articles/171145.html</guid><wfw:comment>http://www.blogjava.net/supercrsky/comments/171145.html</wfw:comment><comments>http://www.blogjava.net/supercrsky/articles/171145.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/supercrsky/comments/commentRss/171145.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/supercrsky/services/trackbacks/171145.html</trackback:ping><description><![CDATA[<p align="left"><span style="font-size: 14pt; font-family: Comic Sans MS">辗转相除法 <br style="font-family: " />
「辗转相除法」又叫做「欧几里得算法」,是公元前 300 年左右的希腊数学家欧几里得在他的著作《几何原本》提出的.利用这个方法,可以较快地求出两个自然数的最大公因数,即 HCF 或叫做 gcd.<br />
最大公约数（greatest common divisor，简写为gcd；或highest common factor，简写为hcf)<br />
所谓最大公因数,是指几个数的共有的因数之中最大的一个,例如 8 和 12 的最大公因数是 4,记作 gcd(8,12)=4. <br style="font-family: " />
在介绍这个方法之前,先说明整除性的一些特点,注以下文的所有数都是正整数,以后不再重覆. <br style="font-family: " />
我们可以这样给出整除以的定义: <br style="font-family: " />
对於两个自然数 a 和 b,若存在正整数 q,使得 a=bq,则 b 能整除 a,记作 b | a,我们叫 b 是 a 的因数,而 a 是 b 的倍数. <br style="font-family: " />
那麼如果 c | a,而且 c | b,则 c 是 a 和 b 的公因数. <br style="font-family: " />
由此,我们可以得出以下一些推论: <br style="font-family: " />
推论一:如果 a | b,若 k 是整数,则 a | kb.因为由 a | b 可知 ha=b,所以 (hk)a=kb,即 a | kb. <br style="font-family: " />
推论二:如果 a | b 以及 a | c,则 a | (b&#177;c).因为由 a | b 以及 a | c,可知 ha=b,ka=c,二式相加,得 (h+k)a=b+c,即 a | (b+c).同样把二式相减可得 a | (b-c). <br style="font-family: " />
推论三:如果 a | b 以及 b | a,则 a=b.因为由 a | b 以及 b | a,可知 ha=b,a=kb,因此 a=k(ha),hk=1,由於 h 和 k 都是正整数,故 h=k=1,因此 a=b. <br style="font-family: " />
辗转相除法是用来计算两个数的最大公因数,在数值很大时尤其有用而且应用在电脑程式上也十分简单.其理论如下: <br style="font-family: " />
如果 q 和 r 是 m 除以 n 的商及余数,即 m=nq+r,则 gcd(m,n)=gcd(n,r). <br style="font-family: " />
证明是这样的: <br style="font-family: " />
设 a=gcd(m,n),b=gcd(n,r) <br style="font-family: " />
则有 a | m 及 a | n,因此 a | (m-nq)(这是由推论一及推论二得出的),即 a | r 及 a | n,所以 a | b <br style="font-family: " />
又 b | r 及 b | n,所以 b | (nq+r),即 b | m 及 b | n,所以b | a.因为 a | b 并且 b | a,所以 a=b,即 gcd(m,n)=gcd(n,r). <br style="font-family: " />
例如计算 gcd(546, 429),由於 546=1(429)+117,429=3(117)+78,117=1(78)+39,78=2(39),因此 <br style="font-family: " />
gcd(546, 429) <br style="font-family: " />
=gcd(429, 117) <br style="font-family: " />
=gcd(117, 78) <br style="font-family: " />
=gcd(78, 39) <br style="font-family: " />
=39 <br />
<br />
Java实现代码如下:<br />
</p>
<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><span style="color: #0000ff">package</span><span style="color: #000000">&nbsp;com;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">class</span><span style="color: #000000">&nbsp;GcdTest<br />
<img id="Codehighlighter1_35_573_Open_Image" onclick="this.style.display='none'; Codehighlighter1_35_573_Open_Text.style.display='none'; Codehighlighter1_35_573_Closed_Image.style.display='inline'; Codehighlighter1_35_573_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_35_573_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_35_573_Closed_Text.style.display='none'; Codehighlighter1_35_573_Open_Image.style.display='inline'; Codehighlighter1_35_573_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top"  alt="" /></span><span id="Codehighlighter1_35_573_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_35_573_Open_Text"><span style="color: #000000">{<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">循环实现</span><span style="color: #008000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" /></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;gcd1(</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;a,&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;b)<br />
<img id="Codehighlighter1_70_216_Open_Image" onclick="this.style.display='none'; Codehighlighter1_70_216_Open_Text.style.display='none'; Codehighlighter1_70_216_Closed_Image.style.display='inline'; Codehighlighter1_70_216_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_70_216_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_70_216_Closed_Text.style.display='none'; Codehighlighter1_70_216_Open_Image.style.display='inline'; Codehighlighter1_70_216_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span id="Codehighlighter1_70_216_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_70_216_Open_Text"><span style="color: #000000">{<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;k&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">0</span><span style="color: #000000">;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">do</span><span style="color: #000000"><br />
<img id="Codehighlighter1_92_175_Open_Image" onclick="this.style.display='none'; Codehighlighter1_92_175_Open_Text.style.display='none'; Codehighlighter1_92_175_Closed_Image.style.display='inline'; Codehighlighter1_92_175_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_92_175_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_92_175_Closed_Text.style.display='none'; Codehighlighter1_92_175_Open_Image.style.display='inline'; Codehighlighter1_92_175_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span id="Codehighlighter1_92_175_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_92_175_Open_Text"><span style="color: #000000">{<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">得到余数</span><span style="color: #008000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" /></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;k&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;a&nbsp;</span><span style="color: #000000">%</span><span style="color: #000000">&nbsp;b;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">根据辗转相除法,把被除数赋给除数</span><span style="color: #008000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" /></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;a&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;b;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">余数赋给被除数</span><span style="color: #008000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" /></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;b&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;k;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">while</span><span style="color: #000000">&nbsp;(k&nbsp;</span><span style="color: #000000">!=</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">0</span><span style="color: #000000">);<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">返回被除数</span><span style="color: #008000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" /></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;a;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">逆归实现</span><span style="color: #008000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" /></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;gcd2(</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;a,</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;b)<br />
<img id="Codehighlighter1_250_411_Open_Image" onclick="this.style.display='none'; Codehighlighter1_250_411_Open_Text.style.display='none'; Codehighlighter1_250_411_Closed_Image.style.display='inline'; Codehighlighter1_250_411_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_250_411_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_250_411_Closed_Text.style.display='none'; Codehighlighter1_250_411_Open_Image.style.display='inline'; Codehighlighter1_250_411_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span id="Codehighlighter1_250_411_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_250_411_Open_Text"><span style="color: #000000">{<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">直到满足此条件逆归退出</span><span style="color: #008000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" /></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">(b&nbsp;</span><span style="color: #000000">==</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">0</span><span style="color: #000000">)<br />
<img id="Codehighlighter1_283_300_Open_Image" onclick="this.style.display='none'; Codehighlighter1_283_300_Open_Text.style.display='none'; Codehighlighter1_283_300_Closed_Image.style.display='inline'; Codehighlighter1_283_300_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_283_300_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_283_300_Closed_Text.style.display='none'; Codehighlighter1_283_300_Open_Image.style.display='inline'; Codehighlighter1_283_300_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span id="Codehighlighter1_283_300_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_283_300_Open_Text"><span style="color: #000000">{<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;a;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">(a&nbsp;</span><span style="color: #000000">&lt;</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">0</span><span style="color: #000000">)<br />
<img id="Codehighlighter1_316_342_Open_Image" onclick="this.style.display='none'; Codehighlighter1_316_342_Open_Text.style.display='none'; Codehighlighter1_316_342_Closed_Image.style.display='inline'; Codehighlighter1_316_342_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_316_342_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_316_342_Closed_Text.style.display='none'; Codehighlighter1_316_342_Open_Image.style.display='inline'; Codehighlighter1_316_342_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span id="Codehighlighter1_316_342_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_316_342_Open_Text"><span style="color: #000000">{<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;gcd2(</span><span style="color: #000000">-</span><span style="color: #000000">a,b);<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">(b&nbsp;</span><span style="color: #000000">&lt;</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">0</span><span style="color: #000000">)<br />
<img id="Codehighlighter1_358_384_Open_Image" onclick="this.style.display='none'; Codehighlighter1_358_384_Open_Text.style.display='none'; Codehighlighter1_358_384_Closed_Image.style.display='inline'; Codehighlighter1_358_384_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_358_384_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_358_384_Closed_Text.style.display='none'; Codehighlighter1_358_384_Open_Image.style.display='inline'; Codehighlighter1_358_384_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span id="Codehighlighter1_358_384_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_358_384_Open_Text"><span style="color: #000000">{<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;gcd2(a,</span><span style="color: #000000">-</span><span style="color: #000000">b);<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;gcd2(b,a&nbsp;</span><span style="color: #000000">%</span><span style="color: #000000">&nbsp;b);<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">static</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;main(String[]&nbsp;args)<br />
<img id="Codehighlighter1_456_570_Open_Image" onclick="this.style.display='none'; Codehighlighter1_456_570_Open_Text.style.display='none'; Codehighlighter1_456_570_Closed_Image.style.display='inline'; Codehighlighter1_456_570_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_456_570_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_456_570_Closed_Text.style.display='none'; Codehighlighter1_456_570_Open_Image.style.display='inline'; Codehighlighter1_456_570_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span id="Codehighlighter1_456_570_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_456_570_Open_Text"><span style="color: #000000">{<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;GcdTest&nbsp;gt&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;GcdTest();<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(gt.gcd1(</span><span style="color: #000000">888</span><span style="color: #000000">,</span><span style="color: #000000">458</span><span style="color: #000000">));<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(gt.gcd2(</span><span style="color: #000000">888</span><span style="color: #000000">,&nbsp;</span><span style="color: #000000">458</span><span style="color: #000000">));<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" /><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top"  alt="" />}</span></span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span></div>
</span>
<img src ="http://www.blogjava.net/supercrsky/aggbug/171145.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/supercrsky/" target="_blank">々上善若水々</a> 2007-12-28 12:41 <a href="http://www.blogjava.net/supercrsky/articles/171145.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>