﻿<?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>C++博客-首页原创精华区</title><link>http://www.cppblog.com/</link><description>专注于C++技术</description><language>zh-cn</language><lastBuildDate>Sat, 04 Jul 2009 03:19:30 GMT</lastBuildDate><pubDate>Sat, 04 Jul 2009 03:19:30 GMT</pubDate><ttl>60</ttl><item><title>实现C++远程调用类的操作。</title><link>http://www.cppblog.com/vczh/archive/2009/07/04/89211.html</link><dc:creator>陈梓瀚(vczh)</dc:creator><author>陈梓瀚(vczh)</author><pubDate>Sat, 04 Jul 2009 02:07:00 GMT</pubDate><guid>http://www.cppblog.com/vczh/archive/2009/07/04/89211.html</guid><wfw:comment>http://www.cppblog.com/vczh/comments/89211.html</wfw:comment><comments>http://www.cppblog.com/vczh/archive/2009/07/04/89211.html#Feedback</comments><slash:comments>3</slash:comments><wfw:commentRss>http://www.cppblog.com/vczh/comments/commentRss/89211.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/vczh/services/trackbacks/89211.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 这次展示如何将一个服务器端的C++类让客户端调用。使用早上刚刚开发完的工具，用户可以不用处理任何传输过程中的连接和编码解码等操作。这次实现一个四则运算的语法分析器，客户端发送表达式，服务器端传回语法树（继承树那个模型），客户端将语法树传回去，服务器端传回运算结果。&nbsp;&nbsp;<a href='http://www.cppblog.com/vczh/archive/2009/07/04/89211.html'>阅读全文</a><img src ="http://www.cppblog.com/vczh/aggbug/89211.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/vczh/" target="_blank">陈梓瀚(vczh)</a> 2009-07-04 10:07 <a href="http://www.cppblog.com/vczh/archive/2009/07/04/89211.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>mktags0.3版本发布--支持指定某个目录的搜索深度</title><link>http://www.cppblog.com/converse/archive/2009/07/02/89101.html</link><dc:creator>那谁</dc:creator><author>那谁</author><pubDate>Thu, 02 Jul 2009 11:51:00 GMT</pubDate><guid>http://www.cppblog.com/converse/archive/2009/07/02/89101.html</guid><wfw:comment>http://www.cppblog.com/converse/comments/89101.html</wfw:comment><comments>http://www.cppblog.com/converse/archive/2009/07/02/89101.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/converse/comments/commentRss/89101.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/converse/services/trackbacks/89101.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: &nbsp;&nbsp;<a href='http://www.cppblog.com/converse/archive/2009/07/02/89101.html'>阅读全文</a><img src ="http://www.cppblog.com/converse/aggbug/89101.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/converse/" target="_blank">那谁</a> 2009-07-02 19:51 <a href="http://www.cppblog.com/converse/archive/2009/07/02/89101.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>基类角色之对象管理器</title><link>http://www.cppblog.com/xmli/archive/2009/07/02/89064.html</link><dc:creator>李现民</dc:creator><author>李现民</author><pubDate>Thu, 02 Jul 2009 04:49:00 GMT</pubDate><guid>http://www.cppblog.com/xmli/archive/2009/07/02/89064.html</guid><wfw:comment>http://www.cppblog.com/xmli/comments/89064.html</wfw:comment><comments>http://www.cppblog.com/xmli/archive/2009/07/02/89064.html#Feedback</comments><slash:comments>10</slash:comments><wfw:commentRss>http://www.cppblog.com/xmli/comments/commentRss/89064.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/xmli/services/trackbacks/89064.html</trackback:ping><description><![CDATA[<meta http-equiv="CONTENT-TYPE" content="text/html; charset=" utf-8="">
<title></title>
<meta name="GENERATOR" content="OpenOffice.org 3.0  (Win32)"><style type="text/css">
<!--
@page { margin: 2cm }
H3 { margin-top: 0cm; margin-bottom: 0cm; page-break-inside: avoid }
H3.western { font-family: "Times New Roman", serif; font-size: 12pt }
H3.cjk { font-family: "Lucida Sans Unicode"; font-size: 12pt; font-style: normal }
H3.ctl { font-family: "Tahoma"; font-size: 16pt }
P { margin-bottom: 0.21cm }
-->
</style>
<p style="margin-bottom: 0cm;" align="CENTER" lang="zh-CN"><font color="#000000"><font style="font-size: 16pt;" size="4"><strong>基类角色之对象管理器</strong></font></font></p>
<p style="margin-bottom: 0cm;" align="CENTER">版本：<font face="Times New Roman, serif">0.1</font></p>
<p style="margin-bottom: 0cm;" align="CENTER">最后修改：<font face="Times New Roman, serif">2009-07-02</font></p>
<p style="margin-bottom: 0cm;" align="CENTER">撰写：李现民</p>
<p style="margin-bottom: 0cm;" align="CENTER"><br>
</p>
<h3 class="cjk">问题描述</h3>
<p style="margin-bottom: 0cm;"><font face="Times New Roman, serif">	C++</font><span lang="zh-CN">程序设计中，保存一个生命周期不是由类对象自己维护的其它对象的指针通常是个坏主意，因为程序逻辑很难判断在使用该指针的时刻其所指对象是否已经被销毁。这种应用需求很常见，例如在网游设计中，由于华丽的装备加载需要进行大量硬盘</span><font face="Times New Roman, serif">I/O</font><span lang="zh-CN">，因此加载过程通常由一个独立的加载线程执行，由于在装备加载完成的时刻该玩家很可能已经下线，因此加载线程就需要能够去判断此时玩家对象是否仍然有效。</span></p>
<p style="margin-bottom: 0cm;"><font face="Times New Roman, serif">	</font><span lang="zh-CN">为了解决该问题，通常会设计一个</span><font face="Times New Roman, serif">PlayerManager</font><span lang="zh-CN">类用于跟踪管理当前所有的玩家对象，而加载线程通过提供玩家</span><font face="Times New Roman, serif">id</font><span lang="zh-CN">以确认该玩家对象仍然存在。此种设计方案需要一个独立的</span><font face="Times New Roman, serif">PlayerManager</font><span lang="zh-CN">类，并提供一个全局的</span><font face="Times New Roman, serif">PlayerManager</font><span lang="zh-CN">类对象以跟踪当前的所有玩家对象。</span></p>
<p style="margin-bottom: 0cm;"><font face="Times New Roman, serif">	</font><span lang="zh-CN">出于代码复用的目的，我希望实现一个通用基类解决此类问题。该基类需要为子类对象至少提供以下几方面的能力：</span></p>
<ol>
    <li>
    <p style="margin-bottom: 0cm;"><span lang="zh-CN">为所有的对象分配一个全局唯一的</span><font face="Times New Roman, serif">index</font><span lang="zh-CN">，通过该</span><font face="Times New Roman, serif">index</font><span lang="zh-CN">能够（尽可能快的）获取到拥有该</span><font face="Times New Roman, serif"><span style="font-style: normal;">index</span></font><span lang="zh-CN"><span style="font-style: normal;">的类</span></span><span lang="zh-CN">对象（或</span><font face="Times New Roman, serif">NULL</font><span lang="zh-CN">）；</span></p>
    </li>
    <li>
    <p style="margin-bottom: 0cm;" lang="zh-CN">自动跟踪类对象的生成与销毁，不需要手工编写额外代码；</p>
    </li>
    <li>
    <p style="margin-bottom: 0cm;" lang="zh-CN">实现迭代器，提供遍历当前所有有效对象的能力；</p>
    </li>
    <li>
    <p style="margin-bottom: 0cm;" lang="zh-CN">提供&#8220;移除&#8221;接口，使得对象可以主动要求放弃被对象管理器跟踪；</p>
    </li>
    <li>
    <p style="margin-bottom: 0cm;" lang="zh-CN">各子类实现拥有完全独立的管理器逻辑；</p>
    </li>
</ol>
<p style="margin-bottom: 0cm;"><br>
</p>
<h3 class="cjk">解决方案</h3>
<p style="margin-bottom: 0cm;"><font face="Times New Roman, serif">	</font><span lang="zh-CN">将实现代码保存为</span><font face="Times New Roman, serif">objectman.hpp</font>，内容<span lang="zh-CN">如下：</span></p>
<div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; background-color: #eeeeee; font-size: 13px; width: 98%;"><!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>--><span style="color: #008000;">/*</span><span style="color: #008000;">*******************************************************************<br>created:&nbsp;&nbsp;&nbsp;&nbsp;2009-06-29<br>author:&nbsp;&nbsp;&nbsp;&nbsp;lixianmin<br><br>purpose:&nbsp;&nbsp;&nbsp;&nbsp;base&nbsp;class&nbsp;for&nbsp;object&nbsp;manager<br>Copyright&nbsp;(C)&nbsp;2009&nbsp;-&nbsp;All&nbsp;Rights&nbsp;Reserved<br>********************************************************************</span><span style="color: #008000;">*/</span><span style="color: #000000;"><br>#ifndef&nbsp;_LIB_OBJECT_MAN_HPP_INCLUDED_<br></span><span style="color: #0000ff;">#define</span><span style="color: #000000;">&nbsp;_LIB_OBJECT_MAN_HPP_INCLUDED_</span><span style="color: #000000;"><br>#include&nbsp;</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">cassert</span><span style="color: #000000;">&gt;</span><span style="color: #000000;"><br>#include&nbsp;</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">map</span><span style="color: #000000;">&gt;</span><span style="color: #000000;"><br><br></span><span style="color: #0000ff;">namespace</span><span style="color: #000000;">&nbsp;lib<br>{<br>&nbsp;&nbsp;&nbsp;&nbsp;template</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">typename&nbsp;T</span><span style="color: #000000;">&gt;</span><span style="color: #000000;"><br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">class</span><span style="color: #000000;">&nbsp;objectman<br>&nbsp;&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">public</span><span style="color: #000000;">:<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;typedef&nbsp;</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;index_t;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">//</span><span style="color: #008000;">&nbsp;索引类型</span><span style="color: #008000;"><br></span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;typedef&nbsp;std::map</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">index_t,&nbsp;T</span><span style="color: #000000;">*&gt;</span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;object_map;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="color: #008000;">//</span><span style="color: #008000;">&nbsp;容器类型</span><span style="color: #008000;"><br></span><span style="color: #000000;"><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">enum</span><span style="color: #000000;">&nbsp;{&nbsp;INVAID_INDEX</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">0</span><span style="color: #000000;">};&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp; &nbsp;&nbsp; </span><span style="color: #008000;">//</span><span style="color: #008000;">&nbsp;无效索引</span><span style="color: #008000;"><br></span><span style="color: #000000;"><br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">public</span><span style="color: #000000;">:<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">//</span><span style="color: #008000;">&nbsp;迭代器</span><span style="color: #008000;"><br></span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">class</span><span style="color: #000000;">&nbsp;iterator<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">public</span><span style="color: #000000;">:<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;iterator(</span><span style="color: #0000ff;">void</span><span style="color: #000000;">):&nbsp;_iter(_mObjects.begin()){}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp;&nbsp; </span><span style="color: #008000;">//</span><span style="color: #008000;">&nbsp;构造函数</span><span style="color: #008000;"><br></span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">bool</span><span style="color: #000000;">&nbsp;has_next(</span><span style="color: #0000ff;">void</span><span style="color: #000000;">)&nbsp;</span><span style="color: #0000ff;">const</span><span style="color: #000000;">&nbsp;{&nbsp;</span><span style="color: #0000ff;">return</span><span style="color: #000000;">&nbsp;(_mObjects.end()</span><span style="color: #000000;">!=</span><span style="color: #000000;">&nbsp;_iter);&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">//</span><span style="color: #008000;">&nbsp;测试是否还有下一个对象</span><span style="color: #008000;"><br></span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;T</span><span style="color: #000000;">*</span><span style="color: #000000;">&nbsp;next(</span><span style="color: #0000ff;">void</span><span style="color: #000000;">)&nbsp;{&nbsp;</span><span style="color: #0000ff;">return</span><span style="color: #000000;">&nbsp;has_next()</span><span style="color: #000000;">?</span><span style="color: #000000;">&nbsp;(_iter</span><span style="color: #000000;">++-&gt;</span><span style="color: #000000;">second):&nbsp;NULL;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp; </span><span style="color: #008000;">//</span><span style="color: #008000;">&nbsp;获取下一个对象指针</span><span style="color: #008000;"><br></span><span style="color: #000000;"><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">private</span><span style="color: #000000;">:<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;typename&nbsp;object_map::iterator&nbsp;_iter;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;};<br><br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">public</span><span style="color: #000000;">:<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">//</span><span style="color: #008000;">&nbsp;构造函数</span><span style="color: #008000;"><br></span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;objectman(</span><span style="color: #0000ff;">void</span><span style="color: #000000;">)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;enable_index();<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">//</span><span style="color: #008000;">&nbsp;copy&nbsp;构造函数</span><span style="color: #008000;"><br></span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;objectman(</span><span style="color: #0000ff;">const</span><span style="color: #000000;">&nbsp;objectman</span><span style="color: #000000;">&amp;</span><span style="color: #000000;">&nbsp;rhs)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;enable_index();<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">//</span><span style="color: #008000;">&nbsp;析构函数</span><span style="color: #008000;"><br></span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">virtual</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">~</span><span style="color: #000000;">objectman(</span><span style="color: #0000ff;">void</span><span style="color: #000000;">)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;disable_index();<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">//</span><span style="color: #008000;">&nbsp;赋值操作符</span><span style="color: #008000;"><br></span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;objectman</span><span style="color: #000000;">&amp;</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">operator</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;(</span><span style="color: #0000ff;">const</span><span style="color: #000000;">&nbsp;objectman</span><span style="color: #000000;">&amp;</span><span style="color: #000000;">&nbsp;rhs)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">//</span><span style="color: #008000;">&nbsp;通过索引获取对象</span><span style="color: #008000;"><br></span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">static</span><span style="color: #000000;">&nbsp;T</span><span style="color: #000000;">*</span><span style="color: #000000;">&nbsp;get_by_index(index_t&nbsp;index)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;object_map::iterator&nbsp;iter</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;_mObjects.find(index);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">&nbsp;(_mObjects.end()</span><span style="color: #000000;">!=</span><span style="color: #000000;">&nbsp;iter)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;T</span><span style="color: #000000;">*</span><span style="color: #000000;">&nbsp;pObject</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;iter</span><span style="color: #000000;">-&gt;</span><span style="color: #000000;">second;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;assert(NULL</span><span style="color: #000000;">!=</span><span style="color: #000000;">&nbsp;pObject);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">return</span><span style="color: #000000;">&nbsp;pObject;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">return</span><span style="color: #000000;">&nbsp;NULL;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">//</span><span style="color: #008000;">&nbsp;获取对象索引</span><span style="color: #008000;"><br></span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;index_t&nbsp;get_index(</span><span style="color: #0000ff;">void</span><span style="color: #000000;">)&nbsp;</span><span style="color: #0000ff;">const</span><span style="color: #000000;">&nbsp;{&nbsp;</span><span style="color: #0000ff;">return</span><span style="color: #000000;">&nbsp;_idxObject;&nbsp;}<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">//</span><span style="color: #008000;">&nbsp;生成索引（使能被对象管理器遍历到）</span><span style="color: #008000;"><br></span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">void</span><span style="color: #000000;">&nbsp;enable_index(</span><span style="color: #0000ff;">void</span><span style="color: #000000;">)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;_idxObject</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">++</span><span style="color: #000000;">_idxGenderator;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;assert(get_index()</span><span style="color: #000000;">!=</span><span style="color: #000000;">&nbsp;INVAID_INDEX);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;assert(_mObjects.find(get_index())</span><span style="color: #000000;">==</span><span style="color: #000000;">&nbsp;_mObjects.end());<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;_mObjects.insert(std::make_pair(get_index(),&nbsp;static_cast</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">T</span><span style="color: #000000;">*&gt;</span><span style="color: #000000;">(</span><span style="color: #0000ff;">this</span><span style="color: #000000;">)));<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">//</span><span style="color: #008000;">&nbsp;移除索引（使不能被对象管理器遍历到）</span><span style="color: #008000;"><br></span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">void</span><span style="color: #000000;">&nbsp;disable_index(</span><span style="color: #0000ff;">void</span><span style="color: #000000;">)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">&nbsp;(get_index()</span><span style="color: #000000;">!=</span><span style="color: #000000;">&nbsp;INVAID_INDEX)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;assert(_mObjects.find(get_index())</span><span style="color: #000000;">!=</span><span style="color: #000000;">&nbsp;_mObjects.end());<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;_mObjects.erase(get_index());<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;_idxObject</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;INVAID_INDEX;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br><br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">private</span><span style="color: #000000;">:<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;friend&nbsp;</span><span style="color: #0000ff;">class</span><span style="color: #000000;">&nbsp;iterator;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">static</span><span style="color: #000000;">&nbsp;object_map&nbsp;&nbsp;&nbsp;&nbsp;_mObjects;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp; &nbsp; </span><span style="color: #008000;">//</span><span style="color: #008000;">&nbsp;对象容器</span><span style="color: #008000;"><br></span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">static</span><span style="color: #000000;">&nbsp;index_t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;_idxGenderator;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">//</span><span style="color: #008000;">&nbsp;索引发生器</span><span style="color: #008000;"><br></span><span style="color: #000000;"><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;index_t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;_idxObject;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp; </span><span style="color: #008000;">//</span><span style="color: #008000;">&nbsp;对象索引</span><span style="color: #008000;"><br></span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;};<br><br>&nbsp;&nbsp;&nbsp;&nbsp;template</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">typename&nbsp;T</span><span style="color: #000000;">&gt;</span><span style="color: #000000;"><br>&nbsp;&nbsp;&nbsp;&nbsp;typename&nbsp;objectman</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">T</span><span style="color: #000000;">&gt;</span><span style="color: #000000;">::object_map&nbsp;objectman</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">T</span><span style="color: #000000;">&gt;</span><span style="color: #000000;">::_mObjects;<br><br>&nbsp;&nbsp;&nbsp;&nbsp;template</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">typename&nbsp;T</span><span style="color: #000000;">&gt;</span><span style="color: #000000;"><br>&nbsp;&nbsp;&nbsp;&nbsp;typename&nbsp;objectman</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">T</span><span style="color: #000000;">&gt;</span><span style="color: #000000;">::index_t&nbsp;objectman</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">T</span><span style="color: #000000;">&gt;</span><span style="color: #000000;">::_idxGenderator</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">0</span><span style="color: #000000;">;<br>}<br><br></span><span style="color: #0000ff;">#endif</span><span style="color: #000000;"><br></span></div>
<br>
<p style="margin-bottom: 0cm;" lang="zh-CN">
<meta http-equiv="CONTENT-TYPE" content="text/html; charset="utf-8"">
<title></title>
<meta name="GENERATOR" content="OpenOffice.org 3.0  (Win32)"><style type="text/css">
<!--
@page { margin: 2cm }
H3 { margin-top: 0cm; margin-bottom: 0cm; page-break-inside: avoid }
H3.western { font-family: "Times New Roman", serif; font-size: 12pt }
H3.cjk { font-family: "Lucida Sans Unicode"; font-size: 12pt; font-style: normal }
H3.ctl { font-family: "Tahoma"; font-size: 16pt }
P { margin-bottom: 0.21cm }
-->
</style>
<h3 class="cjk">测试代码</h3>
<p style="margin-bottom: 0cm;" lang="zh-CN"><font face="Times New Roman, serif">	</font>测试代码如下：</p>
</p>
<p style="margin-bottom: 0cm;" lang="zh-CN">
<div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; background-color: #eeeeee; font-size: 13px; width: 98%;"><!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>--><span style="color: #000000;">#include&nbsp;</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">cassert</span><span style="color: #000000;">&gt;</span><span style="color: #000000;"><br>#include&nbsp;</span><span style="color: #000000;">"</span><span style="color: #000000;">objectman.hpp</span><span style="color: #000000;">"</span><span style="color: #000000;"><br></span><span style="color: #008000;">//</span><span style="color: #008000;">&nbsp;声明一个类</span><span style="color: #008000;"><br></span><span style="color: #0000ff;">class</span><span style="color: #000000;">&nbsp;Player:</span><span style="color: #0000ff;">public</span><span style="color: #000000;">&nbsp;lib::objectman</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">Player</span><span style="color: #000000;">&gt;</span><span style="color: #000000;"><br>{<br><br>};<br><br></span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;main(</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;argc,&nbsp;</span><span style="color: #0000ff;">char</span><span style="color: #000000;">*</span><span style="color: #000000;">&nbsp;argv[])<br>{<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">const</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;idxDisabled</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">5</span><span style="color: #000000;">;<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">//</span><span style="color: #008000;">&nbsp;生成对象</span><span style="color: #008000;"><br></span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">for</span><span style="color: #000000;">&nbsp;(</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;i</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">0</span><span style="color: #000000;">;&nbsp;i</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">10</span><span style="color: #000000;">;&nbsp;</span><span style="color: #000000;">++</span><span style="color: #000000;">i)<br>&nbsp;&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Player</span><span style="color: #000000;">*</span><span style="color: #000000;">&nbsp;pPlayer</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">new</span><span style="color: #000000;">&nbsp;Player;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">&nbsp;(idxDisabled</span><span style="color: #000000;">==</span><span style="color: #000000;">&nbsp;pPlayer</span><span style="color: #000000;">-&gt;</span><span style="color: #000000;">get_index())<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">//</span><span style="color: #008000;">&nbsp;从对象管理器中移除该对象</span><span style="color: #008000;"><br></span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pPlayer</span><span style="color: #000000;">-&gt;</span><span style="color: #000000;">disable_index();<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">//</span><span style="color: #008000;">使用迭代器遍历类对象</span><span style="color: #008000;"><br></span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;Player::iterator&nbsp;iter;<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">while</span><span style="color: #000000;">(iter.has_next())<br>&nbsp;&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Player</span><span style="color: #000000;">*</span><span style="color: #000000;">&nbsp;pPlayer</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;iter.next();<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">const</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;idxPlayer</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;pPlayer</span><span style="color: #000000;">-&gt;</span><span style="color: #000000;">get_index();<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">//</span><span style="color: #008000;">&nbsp;断言之：遍历不到已经移除的对象</span><span style="color: #008000;"><br></span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;assert(idxPlayer</span><span style="color: #000000;">!=</span><span style="color: #000000;">&nbsp;idxDisabled);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">//</span><span style="color: #008000;">&nbsp;断言之：可以通过idxPerson取得对象指针</span><span style="color: #008000;"><br></span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;assert(pPlayer</span><span style="color: #000000;">==</span><span style="color: #000000;">&nbsp;Player::get_by_index(idxPlayer));<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">//</span><span style="color: #008000;">&nbsp;回收对象</span><span style="color: #008000;"><br></span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;delete&nbsp;pPlayer;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pPlayer</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;NULL;<br>&nbsp;&nbsp;&nbsp;&nbsp;}<br><br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">//</span><span style="color: #008000;">&nbsp;断言之：所有对象均已被删除</span><span style="color: #008000;"><br></span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;Player::iterator&nbsp;iter2;<br>&nbsp;&nbsp;&nbsp;&nbsp;assert(</span><span style="color: #000000;">!</span><span style="color: #000000;">iter2.has_next());<br><br>&nbsp;&nbsp;&nbsp;&nbsp;system(</span><span style="color: #000000;">"</span><span style="color: #000000;">pause</span><span style="color: #000000;">"</span><span style="color: #000000;">);<br>&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;">;&nbsp;<br>}</span></div>
</p>
<p style="margin-bottom: 0cm;" lang="zh-CN">
<meta http-equiv="CONTENT-TYPE" content="text/html; charset="utf-8"">
<title></title>
<meta name="GENERATOR" content="OpenOffice.org 3.0  (Win32)"><style type="text/css">
<!--
@page { margin: 2cm }
H3 { margin-top: 0cm; margin-bottom: 0cm; page-break-inside: avoid }
H3.western { font-family: "Times New Roman", serif; font-size: 12pt }
H3.cjk { font-family: "Lucida Sans Unicode"; font-size: 12pt; font-style: normal }
H3.ctl { font-family: "Tahoma"; font-size: 16pt }
P { margin-bottom: 0.21cm }
-->
</style>
<p style="margin-bottom: 0cm;" lang="zh-CN"><font face="Times New Roman, serif">	vs2008</font>下所有断言均动作通过。</p>
<p style="margin-bottom: 0cm;" lang="zh-CN"><br>
</p>
<h3 class="cjk">已知问题</h3>
<ol>
    <li>
    <p style="margin-bottom: 0cm;" lang="zh-CN">在大量生成对象的情况下，<font face="Times New Roman, serif">index</font>索引空间（代码定义为<font face="Times New Roman, serif">int</font>的范围）有可能使用殆尽，甚至产生重复，这会导致两个对象拥有相同<font face="Times New Roman, serif">index</font>的严重错误；</p>
    </li>
    <li>
    <p style="margin-bottom: 0cm;" lang="zh-CN"><font face="Times New Roman, serif">std::map</font>的查找速度不是特别另人满意；</p>
    </li>
</ol>
<p style="margin-bottom: 0cm;" lang="zh-CN"><br>
</p>
</p>
<p style="margin-bottom: 0cm;" lang="zh-CN"><br></p>
<p style="margin-bottom: 0cm;" lang="zh-CN"><br>
</p>
<p style="margin-bottom: 0cm;" lang="zh-CN"><br>
</p>
<p style="margin-bottom: 0cm;" lang="zh-CN"><br>
</p><img src ="http://www.cppblog.com/xmli/aggbug/89064.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/xmli/" target="_blank">李现民</a> 2009-07-02 12:49 <a href="http://www.cppblog.com/xmli/archive/2009/07/02/89064.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>关于ECLIPSE中j2me程序运行时报ALERT: java/lang/ClassFormatError: Bad version information.错误</title><link>http://www.cppblog.com/kaisne/archive/2009/07/02/89048.html</link><dc:creator>kaisne</dc:creator><author>kaisne</author><pubDate>Thu, 02 Jul 2009 03:13:00 GMT</pubDate><guid>http://www.cppblog.com/kaisne/archive/2009/07/02/89048.html</guid><wfw:comment>http://www.cppblog.com/kaisne/comments/89048.html</wfw:comment><comments>http://www.cppblog.com/kaisne/archive/2009/07/02/89048.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/kaisne/comments/commentRss/89048.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/kaisne/services/trackbacks/89048.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 今天在ECLIPSE中写的j2me程序运行时候，报ALERT: java/lang/ClassFormatError: Bad version information.一个错误。开始一直以为是自己的程序问题。后来查了一下才知道，原来是Eclipse中设置版本的编译级别的问题。<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 解决方法：<br>选择eclipse中的"window"-&gt;preferences-&gt;设置jdk complier compliance leve为1.3或1.4,因为j2me不支持jdk5,6.设置好后就OK了.
<img src ="http://www.cppblog.com/kaisne/aggbug/89048.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/kaisne/" target="_blank">kaisne</a> 2009-07-02 11:13 <a href="http://www.cppblog.com/kaisne/archive/2009/07/02/89048.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>C代码中符合标准的方式输出中文</title><link>http://www.cppblog.com/CornerZhang/archive/2009/07/01/89011.html</link><dc:creator>Corner Zhang</dc:creator><author>Corner Zhang</author><pubDate>Wed, 01 Jul 2009 09:58:00 GMT</pubDate><guid>http://www.cppblog.com/CornerZhang/archive/2009/07/01/89011.html</guid><wfw:comment>http://www.cppblog.com/CornerZhang/comments/89011.html</wfw:comment><comments>http://www.cppblog.com/CornerZhang/archive/2009/07/01/89011.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.cppblog.com/CornerZhang/comments/commentRss/89011.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/CornerZhang/services/trackbacks/89011.html</trackback:ping><description><![CDATA[wchat_t str[40] = { L"我的英文名为Corner Zhang!\n" };
<br />
setlocale(LC_ALL, "chs');
<br />
wprintf(L"%s", str);<img src ="http://www.cppblog.com/CornerZhang/aggbug/89011.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/CornerZhang/" target="_blank">Corner Zhang</a> 2009-07-01 17:58 <a href="http://www.cppblog.com/CornerZhang/archive/2009/07/01/89011.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>编程时经常使用到的标点符号列表!</title><link>http://www.cppblog.com/CornerZhang/archive/2009/07/01/89009.html</link><dc:creator>Corner Zhang</dc:creator><author>Corner Zhang</author><pubDate>Wed, 01 Jul 2009 09:44:00 GMT</pubDate><guid>http://www.cppblog.com/CornerZhang/archive/2009/07/01/89009.html</guid><wfw:comment>http://www.cppblog.com/CornerZhang/comments/89009.html</wfw:comment><comments>http://www.cppblog.com/CornerZhang/archive/2009/07/01/89009.html#Feedback</comments><slash:comments>8</slash:comments><wfw:commentRss>http://www.cppblog.com/CornerZhang/comments/commentRss/89009.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/CornerZhang/services/trackbacks/89009.html</trackback:ping><description><![CDATA[Punctuation type:<br /> ~ -- waveline 波浪线 <br />! -- bang 叹号 <br />@ -- at ??? <br /># -- pond 井号 <br />$ -- dollar 美元符 <br />%-- percent 百分号 <br />^ -- accent 幂 <br />&amp; -- and 和 <br />* -- star 星号 <br />( -- open round 左括号<br />）-- close round 右括号 <br />+ -- plus 加 <br />- -- sub 减 <br />= -- equal 等于 <br />_ -- underline 下划线 <br />\ -- backslash 反斜线 <br />| -- vertical 竖线 <br />{ -- open brace 左花括号 <br />} -- close brace 右花括号 <br />[ -- open quad 左方括号 <br />] -- close quad 左方括号 <br />: -- colon 冒号 <br />; -- semicolon 分号 <br />" -- quote 引号 <br />' -- single quote 单引号 <br />? -- question 问号 <br />/ -- slash 斜线 <br />&lt; -- open angle 左尖括号 <br />&gt; -- close angle 右尖括号 <br />, -- comma 逗号 <br />. -- dot 点号<br /><br />还有空白符: <br />' ' -- space 空格<br />'\n' -- newline 换行<br />'\t' -- table 制表符<br />\r' -- return ？？？<img src ="http://www.cppblog.com/CornerZhang/aggbug/89009.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/CornerZhang/" target="_blank">Corner Zhang</a> 2009-07-01 17:44 <a href="http://www.cppblog.com/CornerZhang/archive/2009/07/01/89009.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>NO.7 信令系统基本功能结构</title><link>http://www.cppblog.com/Khan/archive/2009/07/01/88998.html</link><dc:creator>Khan's Notebook</dc:creator><author>Khan's Notebook</author><pubDate>Wed, 01 Jul 2009 08:16:00 GMT</pubDate><guid>http://www.cppblog.com/Khan/archive/2009/07/01/88998.html</guid><wfw:comment>http://www.cppblog.com/Khan/comments/88998.html</wfw:comment><comments>http://www.cppblog.com/Khan/archive/2009/07/01/88998.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/Khan/comments/commentRss/88998.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/Khan/services/trackbacks/88998.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: No.7  SS7&nbsp;&nbsp;<a href='http://www.cppblog.com/Khan/archive/2009/07/01/88998.html'>阅读全文</a><img src ="http://www.cppblog.com/Khan/aggbug/88998.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/Khan/" target="_blank">Khan's Notebook</a> 2009-07-01 16:16 <a href="http://www.cppblog.com/Khan/archive/2009/07/01/88998.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>关于boost库中shared_ptr执行速度的简单测试</title><link>http://www.cppblog.com/hitme/archive/2009/06/30/88935.html</link><dc:creator>HIT@ME</dc:creator><author>HIT@ME</author><pubDate>Tue, 30 Jun 2009 13:09:00 GMT</pubDate><guid>http://www.cppblog.com/hitme/archive/2009/06/30/88935.html</guid><wfw:comment>http://www.cppblog.com/hitme/comments/88935.html</wfw:comment><comments>http://www.cppblog.com/hitme/archive/2009/06/30/88935.html#Feedback</comments><slash:comments>10</slash:comments><wfw:commentRss>http://www.cppblog.com/hitme/comments/commentRss/88935.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/hitme/services/trackbacks/88935.html</trackback:ping><description><![CDATA[<p>记得以前在一本书上看过boost::shared_ptr的回带来一定的效率损失,但是并不大.今天闲来无事,编译了一个BOOST并简单测试了一下,看看到底有多少性能损失.测试代码和结果如下:<br><br>比较函数<br>template &lt;class T&gt; <br>class compareP<br>{<br>public:<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; bool operator() (const T lh,const T rh) const<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return *lh&lt;*rh;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br><br>};<br><br><br>boost:<br>int _tmain(int argc, _TCHAR* argv[])<br>{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; DWORD oldtime = GetTickCount();<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; typedef map&lt;boost::shared_ptr&lt;string&gt;,size_t,compareP&lt;boost::shared_ptr&lt;string&gt; &gt; &gt; container_type;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; typedef container_type::iterator iterator;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; container_type container;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for (size_t i(0) ; i&lt;500000 ; ++i)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; boost::shared_ptr&lt;string&gt; pstr(new string);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; char buffer[32];<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; *pstr = itoa(i,buffer,10);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; container[pstr]=0;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; cout&lt;&lt;GetTickCount() - oldtime &lt;&lt;endl;<br>return EXIT_SUCCESS;<br>}<br><br>boost结果:<br>2000<br>2015<br>2015<br>2016<br>2017<br><br><br>指针:<br>int _tmain(int argc, _TCHAR* argv[])<br>{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; DWORD oldtime = GetTickCount();<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; typedef map&lt;string*,size_t,compareP&lt;string*&gt; &gt; container_type;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; typedef container_type::iterator iterator;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; container_type container;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for (size_t i(0) ; i&lt;500000 ; ++i)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; string *pstr = new string;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; char buffer[32];<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; *pstr = itoa(i,buffer,10);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; container[pstr]=0;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; cout&lt;&lt;GetTickCount() - oldtime &lt;&lt;endl;<br>return EXIT_SUCCESS;<br>}<br><br>指针结果:<br>937<br>938<br>954<br>953<br>953<br><br>执行速度已经相差一倍了.自动内存管理的代价啊!~~~~<br>环境:Q8200 2.33GHZ 4G内存<br><br>以上只是简单的测试,仅拱参考</p>
<p><br></p>
<p><span style="COLOR: red; FONT-SIZE: 36pt">补充说明：</span></p>
<p>很多朋友流言说在MAP中存放string*没有意义。可是我上一个项目就需要这么做。</p>
<p>试想我现在有10篇文档，现在需要统计每篇文档当中每个字出现的次数，还需要统计全部文章中全部字出现的次数。为了保证效率，应当保证每个字在内存当中只留一份拷贝（因为以后有可能统计每个词，甚至每句话出现的次数）。要实现这个功能，是否还有更好的算法？</p>
<p><br></p>
<p>还有朋友流言说指针版没有销毁string指针。可是在这个程序中执行cout&lt;&lt;GetTickCount() - oldtime &lt;&lt;endl;之前shared_ptr也没有释放资源。所以资源的释放不会造成误差。</p>
<p>luck朋友的方法最为有效，把比较函数变成：</p>
<p>bool operator() (const T &amp;lh,const T &amp;rh) const</p>
<p>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;{</p>
<p>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;return *lh&lt;*rh;</p>
<p>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;}</p>
<p>下面是shared_ptr执行5次的时间：</p>
<p>968</p>
<p>969</p>
<p>985</p>
<p>969</p>
<p>969</p>
<p><br></p>
<p>下面是string*执行5次的时间：</p>
<p>859</p>
<p>875</p>
<p>860</p>
<p>859</p>
<p>860</p>
<p><br></p>
<p>看来即使是小对象也不能放松！当很多小对象发生构造和析构时所耗费的时间还是不容小视的！~</p>
<img src ="http://www.cppblog.com/hitme/aggbug/88935.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/hitme/" target="_blank">HIT@ME</a> 2009-06-30 21:09 <a href="http://www.cppblog.com/hitme/archive/2009/06/30/88935.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>用gdb跟踪函数栈桢的变化情况</title><link>http://www.cppblog.com/converse/archive/2009/06/30/88925.html</link><dc:creator>那谁</dc:creator><author>那谁</author><pubDate>Tue, 30 Jun 2009 12:43:00 GMT</pubDate><guid>http://www.cppblog.com/converse/archive/2009/06/30/88925.html</guid><wfw:comment>http://www.cppblog.com/converse/comments/88925.html</wfw:comment><comments>http://www.cppblog.com/converse/archive/2009/06/30/88925.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.cppblog.com/converse/comments/commentRss/88925.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/converse/services/trackbacks/88925.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: &nbsp;&nbsp;<a href='http://www.cppblog.com/converse/archive/2009/06/30/88925.html'>阅读全文</a><img src ="http://www.cppblog.com/converse/aggbug/88925.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/converse/" target="_blank">那谁</a> 2009-06-30 20:43 <a href="http://www.cppblog.com/converse/archive/2009/06/30/88925.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>USACO 3.1 Stamps</title><link>http://www.cppblog.com/yuziyu/archive/2009/06/30/88924.html</link><dc:creator>YZY</dc:creator><author>YZY</author><pubDate>Tue, 30 Jun 2009 12:37:00 GMT</pubDate><guid>http://www.cppblog.com/yuziyu/archive/2009/06/30/88924.html</guid><wfw:comment>http://www.cppblog.com/yuziyu/comments/88924.html</wfw:comment><comments>http://www.cppblog.com/yuziyu/archive/2009/06/30/88924.html#Feedback</comments><slash:comments>8</slash:comments><wfw:commentRss>http://www.cppblog.com/yuziyu/comments/commentRss/88924.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/yuziyu/services/trackbacks/88924.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 动态规划题&nbsp;&nbsp;<a href='http://www.cppblog.com/yuziyu/archive/2009/06/30/88924.html'>阅读全文</a><img src ="http://www.cppblog.com/yuziyu/aggbug/88924.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/yuziyu/" target="_blank">YZY</a> 2009-06-30 20:37 <a href="http://www.cppblog.com/yuziyu/archive/2009/06/30/88924.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>之前做的LOD动态地形</title><link>http://www.cppblog.com/jedi-CY/archive/2009/06/30/88882.html</link><dc:creator>陈昱(CY)</dc:creator><author>陈昱(CY)</author><pubDate>Tue, 30 Jun 2009 04:53:00 GMT</pubDate><guid>http://www.cppblog.com/jedi-CY/archive/2009/06/30/88882.html</guid><wfw:comment>http://www.cppblog.com/jedi-CY/comments/88882.html</wfw:comment><comments>http://www.cppblog.com/jedi-CY/archive/2009/06/30/88882.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.cppblog.com/jedi-CY/comments/commentRss/88882.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/jedi-CY/services/trackbacks/88882.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 看了何咏的文章（http://www.graphixer.com.cn/ShowWorks.asp?Type=1&amp;ID=28）后，再找到了最原始的那篇论文，也实现了一个，仅仅实现了动态地形优化部分，纹理等其它无关算法的内容没有加上去。使用OpenGL渲染，即以前做毕业设计时的框架，顺便也可以改进一下以前的游戏框架~这里就不说算法了，读者可以找找何咏说到的那篇论文，个人觉得主要难点是理解消除...&nbsp;&nbsp;<a href='http://www.cppblog.com/jedi-CY/archive/2009/06/30/88882.html'>阅读全文</a><img src ="http://www.cppblog.com/jedi-CY/aggbug/88882.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/jedi-CY/" target="_blank">陈昱(CY)</a> 2009-06-30 12:53 <a href="http://www.cppblog.com/jedi-CY/archive/2009/06/30/88882.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>C++基于类似反射机制的函数调用完成</title><link>http://www.cppblog.com/vczh/archive/2009/06/30/88880.html</link><dc:creator>陈梓瀚(vczh)</dc:creator><author>陈梓瀚(vczh)</author><pubDate>Tue, 30 Jun 2009 04:47:00 GMT</pubDate><guid>http://www.cppblog.com/vczh/archive/2009/06/30/88880.html</guid><wfw:comment>http://www.cppblog.com/vczh/comments/88880.html</wfw:comment><comments>http://www.cppblog.com/vczh/archive/2009/06/30/88880.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/vczh/comments/commentRss/88880.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/vczh/services/trackbacks/88880.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 现在不仅可以阅读类的成员，也可以用函数名的字符串去调用函数并取得结果了。代码与这篇文章的实例类似，因此只贴出更改的部分以及程序截图。&nbsp;&nbsp;<a href='http://www.cppblog.com/vczh/archive/2009/06/30/88880.html'>阅读全文</a><img src ="http://www.cppblog.com/vczh/aggbug/88880.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/vczh/" target="_blank">陈梓瀚(vczh)</a> 2009-06-30 12:47 <a href="http://www.cppblog.com/vczh/archive/2009/06/30/88880.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>USACO 3.1 Humble Numbers</title><link>http://www.cppblog.com/yuziyu/archive/2009/06/30/88846.html</link><dc:creator>YZY</dc:creator><author>YZY</author><pubDate>Mon, 29 Jun 2009 16:05:00 GMT</pubDate><guid>http://www.cppblog.com/yuziyu/archive/2009/06/30/88846.html</guid><wfw:comment>http://www.cppblog.com/yuziyu/comments/88846.html</wfw:comment><comments>http://www.cppblog.com/yuziyu/archive/2009/06/30/88846.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/yuziyu/comments/commentRss/88846.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/yuziyu/services/trackbacks/88846.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 二分法&nbsp;&nbsp;<a href='http://www.cppblog.com/yuziyu/archive/2009/06/30/88846.html'>阅读全文</a><img src ="http://www.cppblog.com/yuziyu/aggbug/88846.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/yuziyu/" target="_blank">YZY</a> 2009-06-30 00:05 <a href="http://www.cppblog.com/yuziyu/archive/2009/06/30/88846.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>USACO 3.1 Score Inflation</title><link>http://www.cppblog.com/yuziyu/archive/2009/06/29/88840.html</link><dc:creator>YZY</dc:creator><author>YZY</author><pubDate>Mon, 29 Jun 2009 14:21:00 GMT</pubDate><guid>http://www.cppblog.com/yuziyu/archive/2009/06/29/88840.html</guid><wfw:comment>http://www.cppblog.com/yuziyu/comments/88840.html</wfw:comment><comments>http://www.cppblog.com/yuziyu/archive/2009/06/29/88840.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/yuziyu/comments/commentRss/88840.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/yuziyu/services/trackbacks/88840.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 背包问题&nbsp;&nbsp;<a href='http://www.cppblog.com/yuziyu/archive/2009/06/29/88840.html'>阅读全文</a><img src ="http://www.cppblog.com/yuziyu/aggbug/88840.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/yuziyu/" target="_blank">YZY</a> 2009-06-29 22:21 <a href="http://www.cppblog.com/yuziyu/archive/2009/06/29/88840.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>USACO 3.1 Agri-Net</title><link>http://www.cppblog.com/yuziyu/archive/2009/06/29/88836.html</link><dc:creator>YZY</dc:creator><author>YZY</author><pubDate>Mon, 29 Jun 2009 13:48:00 GMT</pubDate><guid>http://www.cppblog.com/yuziyu/archive/2009/06/29/88836.html</guid><wfw:comment>http://www.cppblog.com/yuziyu/comments/88836.html</wfw:comment><comments>http://www.cppblog.com/yuziyu/archive/2009/06/29/88836.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/yuziyu/comments/commentRss/88836.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/yuziyu/services/trackbacks/88836.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 最小生成树问题<br>&nbsp;&nbsp;<a href='http://www.cppblog.com/yuziyu/archive/2009/06/29/88836.html'>阅读全文</a><img src ="http://www.cppblog.com/yuziyu/aggbug/88836.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/yuziyu/" target="_blank">YZY</a> 2009-06-29 21:48 <a href="http://www.cppblog.com/yuziyu/archive/2009/06/29/88836.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>残废版HTTP Server之小试牛刀</title><link>http://www.cppblog.com/vczh/archive/2009/06/29/88834.html</link><dc:creator>陈梓瀚(vczh)</dc:creator><author>陈梓瀚(vczh)</author><pubDate>Mon, 29 Jun 2009 13:19:00 GMT</pubDate><guid>http://www.cppblog.com/vczh/archive/2009/06/29/88834.html</guid><wfw:comment>http://www.cppblog.com/vczh/comments/88834.html</wfw:comment><comments>http://www.cppblog.com/vczh/archive/2009/06/29/88834.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.cppblog.com/vczh/comments/commentRss/88834.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/vczh/services/trackbacks/88834.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 为了给C++的反射做Demo，不得不研究一下HTTP的协议。后来发现Windows自带了API可以用，于是就写了个小东西。程序打开之后，如果检测到【http://localhost:8080/vczh/FILENAME】这样子的请求，就将一个目录下面的东西读出来，然后返回。于是就可以用IE来运行某个地方的网页了。代码如下：&nbsp;&nbsp;<a href='http://www.cppblog.com/vczh/archive/2009/06/29/88834.html'>阅读全文</a><img src ="http://www.cppblog.com/vczh/aggbug/88834.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/vczh/" target="_blank">陈梓瀚(vczh)</a> 2009-06-29 21:19 <a href="http://www.cppblog.com/vczh/archive/2009/06/29/88834.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>这是我向往的生活</title><link>http://www.cppblog.com/rise-worlds/archive/2009/06/29/88772.html</link><dc:creator>Condor</dc:creator><author>Condor</author><pubDate>Mon, 29 Jun 2009 06:34:00 GMT</pubDate><guid>http://www.cppblog.com/rise-worlds/archive/2009/06/29/88772.html</guid><wfw:comment>http://www.cppblog.com/rise-worlds/comments/88772.html</wfw:comment><comments>http://www.cppblog.com/rise-worlds/archive/2009/06/29/88772.html#Feedback</comments><slash:comments>9</slash:comments><wfw:commentRss>http://www.cppblog.com/rise-worlds/comments/commentRss/88772.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/rise-worlds/services/trackbacks/88772.html</trackback:ping><description><![CDATA[<p>　　我不向往苏轼那种“大江东去，浪淘尽，千古风流人物”的豪迈气概，也不向往易安那种“才下眉头，却上心头”的婉约凄凉，更不具有杜甫“大庇天下寒士俱欢颜”的伟大胸怀，因为现实不是这样的时代。我所向往的生活，就是快乐幸福、安定和谐。 <br>　　“燕草如碧丝，秦桑低绿枝。”在风和日丽的春天，伴着清脆的鸟鸣，携着飘香的鲜花，和一群知心的朋友在和煦的阳光下，嬉戏、玩耍。让碧丝般的小草，轻抚我们疲倦的身体；让轻柔的春风，抹去我们心中的烦恼；让悦耳的鸟鸣，唤醒我们青春的活力。这是我神往的生活。 <br>　　“接天莲叶无穷碧，映日荷花别样红。”在烈日炎炎的夏天，最快不过于伙伴们像鱼儿一般在水中自由自在地穿梭，你追我，我赶你，时儿水花四溅，时儿欢声笑语。让清凉的溪水冲刷快要蒸发的身体，使我们依旧像新生的嫩叶一般鲜亮；让水花和笑声一起飞溅，使我们仍然充满生机地迎接下一步的挑战。这是我追求的生活。 <br>　　“人道天凉好个秋。”秋高气爽的天气里，拿本书，音乐在耳中穿梭，迎着习习的凉风，坐在窗台边享受闲适的午后，忘了生活的烦恼，忘了学习的压力，忘了时间的流逝，就这样安静的看着书，听着音乐，好好体验一番“少年不识愁滋味”。这是多么惬意的生活啊，我向往！ <br>　　“梅须逊雪三分白，雪却输梅一段香。”我没有雪一般的洁白，也不会有梅的百里飘香。在这个老鼠都不愿意出来偷吃的季节，我没有梅与雪的情操，我所向往的只是能像冬眠的动物一般，蜷缩在自己那个温暖而又温馨的空间里，做上一个甜甜的美梦，隐约听到妈妈不停的叫唤时，睁开朦胧的双眼，迎着厨房里飘出的阵阵清香舒展。“睡觉睡到自然醒”一定是人生一件快事。在寒假里让我睡个饱觉吧，这是我渴望的生活！！ <br>　　让和煦的阳光抚慰我疲倦的心灵吧；让清凉的溪水冲刷去一身的烦恼吧；让恬静的秋意抚平我内心的躁动吧，让充足的睡眠为我的生活加煤加炭吧！我向往这样的生活！ <br>　　听竹声瑟瑟，看世事萧萧。  <img src ="http://www.cppblog.com/rise-worlds/aggbug/88772.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/rise-worlds/" target="_blank">Condor</a> 2009-06-29 14:34 <a href="http://www.cppblog.com/rise-worlds/archive/2009/06/29/88772.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>mktags0.2版本发布</title><link>http://www.cppblog.com/converse/archive/2009/06/29/88759.html</link><dc:creator>那谁</dc:creator><author>那谁</author><pubDate>Mon, 29 Jun 2009 04:38:00 GMT</pubDate><guid>http://www.cppblog.com/converse/archive/2009/06/29/88759.html</guid><wfw:comment>http://www.cppblog.com/converse/comments/88759.html</wfw:comment><comments>http://www.cppblog.com/converse/archive/2009/06/29/88759.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/converse/comments/commentRss/88759.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/converse/services/trackbacks/88759.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: &nbsp;&nbsp;<a href='http://www.cppblog.com/converse/archive/2009/06/29/88759.html'>阅读全文</a><img src ="http://www.cppblog.com/converse/aggbug/88759.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/converse/" target="_blank">那谁</a> 2009-06-29 12:38 <a href="http://www.cppblog.com/converse/archive/2009/06/29/88759.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>C++基于类似反射机制的XML序列化和反序列化完成</title><link>http://www.cppblog.com/vczh/archive/2009/06/29/88758.html</link><dc:creator>陈梓瀚(vczh)</dc:creator><author>陈梓瀚(vczh)</author><pubDate>Mon, 29 Jun 2009 04:12:00 GMT</pubDate><guid>http://www.cppblog.com/vczh/archive/2009/06/29/88758.html</guid><wfw:comment>http://www.cppblog.com/vczh/comments/88758.html</wfw:comment><comments>http://www.cppblog.com/vczh/archive/2009/06/29/88758.html#Feedback</comments><slash:comments>10</slash:comments><wfw:commentRss>http://www.cppblog.com/vczh/comments/commentRss/88758.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/vczh/services/trackbacks/88758.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 跟上一篇文章一样，一样的数据结构，但是添加了对数组、列表和映射的更多的支持。首先是代码，然后是序列化后的XML文件。&nbsp;&nbsp;<a href='http://www.cppblog.com/vczh/archive/2009/06/29/88758.html'>阅读全文</a><img src ="http://www.cppblog.com/vczh/aggbug/88758.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/vczh/" target="_blank">陈梓瀚(vczh)</a> 2009-06-29 12:12 <a href="http://www.cppblog.com/vczh/archive/2009/06/29/88758.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>以前写的一个N连看</title><link>http://www.cppblog.com/jedi-CY/archive/2009/06/28/88712.html</link><dc:creator>陈昱(CY)</dc:creator><author>陈昱(CY)</author><pubDate>Sun, 28 Jun 2009 11:50:00 GMT</pubDate><guid>http://www.cppblog.com/jedi-CY/archive/2009/06/28/88712.html</guid><wfw:comment>http://www.cppblog.com/jedi-CY/comments/88712.html</wfw:comment><comments>http://www.cppblog.com/jedi-CY/archive/2009/06/28/88712.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.cppblog.com/jedi-CY/comments/commentRss/88712.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/jedi-CY/services/trackbacks/88712.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 这一周，我写好了一个连连看，在设计连连看的算法的过程中，我设计了一个可以控制连数的连连看算法，并把连连看改成了&#8220;n连看&#8221;，然后经过算法优化，使我的连连看算法在20连、无解、矩阵是13*11、最坏情况（一个周围空旷，一个被包围）下，运算速度仅2秒左右。而经过优化之前，到了6连的最坏情况下就已经慢得无法接受了。基本的算法是这样的：先写一个函数f1，判断点1和点2能否经过某个方向...&nbsp;&nbsp;<a href='http://www.cppblog.com/jedi-CY/archive/2009/06/28/88712.html'>阅读全文</a><img src ="http://www.cppblog.com/jedi-CY/aggbug/88712.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/jedi-CY/" target="_blank">陈昱(CY)</a> 2009-06-28 19:50 <a href="http://www.cppblog.com/jedi-CY/archive/2009/06/28/88712.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>USACO 2.4 Fractions to Decimals</title><link>http://www.cppblog.com/yuziyu/archive/2009/06/28/88708.html</link><dc:creator>YZY</dc:creator><author>YZY</author><pubDate>Sun, 28 Jun 2009 10:49:00 GMT</pubDate><guid>http://www.cppblog.com/yuziyu/archive/2009/06/28/88708.html</guid><wfw:comment>http://www.cppblog.com/yuziyu/comments/88708.html</wfw:comment><comments>http://www.cppblog.com/yuziyu/archive/2009/06/28/88708.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/yuziyu/comments/commentRss/88708.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/yuziyu/services/trackbacks/88708.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 模拟题，将分数转换成带循环节小数形式。&nbsp;&nbsp;<a href='http://www.cppblog.com/yuziyu/archive/2009/06/28/88708.html'>阅读全文</a><img src ="http://www.cppblog.com/yuziyu/aggbug/88708.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/yuziyu/" target="_blank">YZY</a> 2009-06-28 18:49 <a href="http://www.cppblog.com/yuziyu/archive/2009/06/28/88708.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>USACO 2.4 Bessie Come Home</title><link>http://www.cppblog.com/yuziyu/archive/2009/06/28/88701.html</link><dc:creator>YZY</dc:creator><author>YZY</author><pubDate>Sun, 28 Jun 2009 09:25:00 GMT</pubDate><guid>http://www.cppblog.com/yuziyu/archive/2009/06/28/88701.html</guid><wfw:comment>http://www.cppblog.com/yuziyu/comments/88701.html</wfw:comment><comments>http://www.cppblog.com/yuziyu/archive/2009/06/28/88701.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/yuziyu/comments/commentRss/88701.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/yuziyu/services/trackbacks/88701.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 最短路径问题&nbsp;&nbsp;<a href='http://www.cppblog.com/yuziyu/archive/2009/06/28/88701.html'>阅读全文</a><img src ="http://www.cppblog.com/yuziyu/aggbug/88701.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/yuziyu/" target="_blank">YZY</a> 2009-06-28 17:25 <a href="http://www.cppblog.com/yuziyu/archive/2009/06/28/88701.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>USACO 2.4 Cow Tours</title><link>http://www.cppblog.com/yuziyu/archive/2009/06/27/88662.html</link><dc:creator>YZY</dc:creator><author>YZY</author><pubDate>Sat, 27 Jun 2009 14:10:00 GMT</pubDate><guid>http://www.cppblog.com/yuziyu/archive/2009/06/27/88662.html</guid><wfw:comment>http://www.cppblog.com/yuziyu/comments/88662.html</wfw:comment><comments>http://www.cppblog.com/yuziyu/archive/2009/06/27/88662.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/yuziyu/comments/commentRss/88662.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/yuziyu/services/trackbacks/88662.html</trackback:ping><description><![CDATA[
		<br />这题综合了dfs,floyd算法。<br /><br />首先用 floyd计算出两两之间的最短路径。然后用dfs将图着色。对每两两不同颜色的结点，我们把它们相连，然后看产生的图的直径的大小。<br />直径的大小只可能仍为原两连通图直径之一，或者是包括新添加的路径所产生的最长路径，取这三者中的最大值。新路径产生的最长路径只可能是两点的距离加上两点到其他点的最长距离。最开始的时候只考虑了新添加的路径，没考虑原直径会比新路径大的情况，wa了n次。。<br /><br /><div style="border: 1px solid rgb(204, 204, 204); padding: 4px 5px 4px 4px; background-color: rgb(238, 238, 238); font-size: 13px; width: 98%;"><!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>--><span style="color: rgb(0, 0, 0);">#include </span><span style="color: rgb(0, 0, 0);">&lt;</span><span style="color: rgb(0, 0, 0);">iostream</span><span style="color: rgb(0, 0, 0);">&gt;</span><span style="color: rgb(0, 0, 0);"><br />#include </span><span style="color: rgb(0, 0, 0);">&lt;</span><span style="color: rgb(0, 0, 0);">fstream</span><span style="color: rgb(0, 0, 0);">&gt;</span><span style="color: rgb(0, 0, 0);"><br /><br />#include </span><span style="color: rgb(0, 0, 0);">&lt;</span><span style="color: rgb(0, 0, 0);">cfloat</span><span style="color: rgb(0, 0, 0);">&gt;</span><span style="color: rgb(0, 0, 0);"><br />#include </span><span style="color: rgb(0, 0, 0);">&lt;</span><span style="color: rgb(0, 0, 0);">cmath</span><span style="color: rgb(0, 0, 0);">&gt;</span><span style="color: rgb(0, 0, 0);"><br /><br /></span><span style="color: rgb(0, 0, 255);">using</span><span style="color: rgb(0, 0, 0);"> </span><span style="color: rgb(0, 0, 255);">namespace</span><span style="color: rgb(0, 0, 0);"> std;<br /><br />ifstream fin(</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">cowtour.in</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">);<br />ofstream fout(</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">cowtour.out</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">);<br /><br />#ifdef _DEBUG<br /></span><span style="color: rgb(0, 0, 255);">#define</span><span style="color: rgb(0, 0, 0);"> out cout</span><span style="color: rgb(0, 0, 0);"><br /></span><span style="color: rgb(0, 0, 255);">#define</span><span style="color: rgb(0, 0, 0);"> in cin</span><span style="color: rgb(0, 0, 0);"><br /></span><span style="color: rgb(0, 0, 255);">#else</span><span style="color: rgb(0, 0, 0);"><br /></span><span style="color: rgb(0, 0, 255);">#define</span><span style="color: rgb(0, 0, 0);"> out fout</span><span style="color: rgb(0, 0, 0);"><br /></span><span style="color: rgb(0, 0, 255);">#define</span><span style="color: rgb(0, 0, 0);"> in fin</span><span style="color: rgb(0, 0, 0);"><br /></span><span style="color: rgb(0, 0, 255);">#endif</span><span style="color: rgb(0, 0, 0);"><br /><br /></span><span style="color: rgb(0, 0, 255);">double</span><span style="color: rgb(0, 0, 0);"> path[</span><span style="color: rgb(0, 0, 0);">150</span><span style="color: rgb(0, 0, 0);">][</span><span style="color: rgb(0, 0, 0);">150</span><span style="color: rgb(0, 0, 0);">];<br /><br /></span><span style="color: rgb(0, 0, 255);">char</span><span style="color: rgb(0, 0, 0);"> graph[</span><span style="color: rgb(0, 0, 0);">150</span><span style="color: rgb(0, 0, 0);">][</span><span style="color: rgb(0, 0, 0);">150</span><span style="color: rgb(0, 0, 0);">];<br /><br /></span><span style="color: rgb(0, 0, 255);">int</span><span style="color: rgb(0, 0, 0);"> x[</span><span style="color: rgb(0, 0, 0);">150</span><span style="color: rgb(0, 0, 0);">];<br /></span><span style="color: rgb(0, 0, 255);">int</span><span style="color: rgb(0, 0, 0);"> y[</span><span style="color: rgb(0, 0, 0);">150</span><span style="color: rgb(0, 0, 0);">];<br /><br /></span><span style="color: rgb(0, 0, 255);">int</span><span style="color: rgb(0, 0, 0);"> n;<br /><br /></span><span style="color: rgb(0, 0, 255);">int</span><span style="color: rgb(0, 0, 0);"> color[</span><span style="color: rgb(0, 0, 0);">150</span><span style="color: rgb(0, 0, 0);">];<br /><br /></span><span style="color: rgb(0, 0, 255);">double</span><span style="color: rgb(0, 0, 0);"> diameter[</span><span style="color: rgb(0, 0, 0);">150</span><span style="color: rgb(0, 0, 0);">];<br /></span><span style="color: rgb(0, 0, 255);">double</span><span style="color: rgb(0, 0, 0);"> maxPath[</span><span style="color: rgb(0, 0, 0);">150</span><span style="color: rgb(0, 0, 0);">];<br /><br /></span><span style="color: rgb(0, 0, 255);">void</span><span style="color: rgb(0, 0, 0);"> floyd()<br />{<br />    </span><span style="color: rgb(0, 0, 255);">for</span><span style="color: rgb(0, 0, 0);">(</span><span style="color: rgb(0, 0, 255);">int</span><span style="color: rgb(0, 0, 0);"> k</span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);">0</span><span style="color: rgb(0, 0, 0);">;k</span><span style="color: rgb(0, 0, 0);">&lt;</span><span style="color: rgb(0, 0, 0);">n;</span><span style="color: rgb(0, 0, 0);">++</span><span style="color: rgb(0, 0, 0);">k)<br />        </span><span style="color: rgb(0, 0, 255);">for</span><span style="color: rgb(0, 0, 0);">(</span><span style="color: rgb(0, 0, 255);">int</span><span style="color: rgb(0, 0, 0);"> i</span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);">0</span><span style="color: rgb(0, 0, 0);">;i</span><span style="color: rgb(0, 0, 0);">&lt;</span><span style="color: rgb(0, 0, 0);">n;</span><span style="color: rgb(0, 0, 0);">++</span><span style="color: rgb(0, 0, 0);">i)<br />            </span><span style="color: rgb(0, 0, 255);">for</span><span style="color: rgb(0, 0, 0);">(</span><span style="color: rgb(0, 0, 255);">int</span><span style="color: rgb(0, 0, 0);"> j</span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);">0</span><span style="color: rgb(0, 0, 0);">;j</span><span style="color: rgb(0, 0, 0);">&lt;</span><span style="color: rgb(0, 0, 0);">n;</span><span style="color: rgb(0, 0, 0);">++</span><span style="color: rgb(0, 0, 0);">j){<br />                </span><span style="color: rgb(0, 0, 255);">if</span><span style="color: rgb(0, 0, 0);">(i</span><span style="color: rgb(0, 0, 0);">!=</span><span style="color: rgb(0, 0, 0);">j){<br />                    path[i][j]</span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);">min(path[i][j],path[i][k]</span><span style="color: rgb(0, 0, 0);">+</span><span style="color: rgb(0, 0, 0);">path[k][j]);<br />                }<br />            }<br />}<br /><br /></span><span style="color: rgb(0, 0, 255);">void</span><span style="color: rgb(0, 0, 0);"> make_color(</span><span style="color: rgb(0, 0, 255);">int</span><span style="color: rgb(0, 0, 0);"> i,</span><span style="color: rgb(0, 0, 255);">int</span><span style="color: rgb(0, 0, 0);"> c)<br />{<br />    </span><span style="color: rgb(0, 0, 255);">if</span><span style="color: rgb(0, 0, 0);">( color[i]</span><span style="color: rgb(0, 0, 0);">!=</span><span style="color: rgb(0, 0, 0);">0</span><span style="color: rgb(0, 0, 0);"> )<br />        </span><span style="color: rgb(0, 0, 255);">return</span><span style="color: rgb(0, 0, 0);">;<br /><br />    color[i] </span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);"> c;<br /><br />    </span><span style="color: rgb(0, 0, 255);">for</span><span style="color: rgb(0, 0, 0);">(</span><span style="color: rgb(0, 0, 255);">int</span><span style="color: rgb(0, 0, 0);"> j</span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);">0</span><span style="color: rgb(0, 0, 0);">;j</span><span style="color: rgb(0, 0, 0);">&lt;</span><span style="color: rgb(0, 0, 0);">n;</span><span style="color: rgb(0, 0, 0);">++</span><span style="color: rgb(0, 0, 0);">j){<br />        </span><span style="color: rgb(0, 0, 255);">if</span><span style="color: rgb(0, 0, 0);">(color[j]</span><span style="color: rgb(0, 0, 0);">==</span><span style="color: rgb(0, 0, 0);">0</span><span style="color: rgb(0, 0, 0);">&amp;&amp;</span><span style="color: rgb(0, 0, 0);">graph[i][j])<br />            make_color(j,c);<br />    }<br />}<br /><br /><br /></span><span style="color: rgb(0, 0, 255);">void</span><span style="color: rgb(0, 0, 0);"> solve()<br />{<br />    </span><span style="color: rgb(0, 0, 255);">in</span><span style="color: rgb(0, 0, 0);">&gt;&gt;</span><span style="color: rgb(0, 0, 0);">n;<br /><br />    </span><span style="color: rgb(0, 0, 255);">for</span><span style="color: rgb(0, 0, 0);">(</span><span style="color: rgb(0, 0, 255);">int</span><span style="color: rgb(0, 0, 0);"> i</span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);">0</span><span style="color: rgb(0, 0, 0);">;i</span><span style="color: rgb(0, 0, 0);">&lt;</span><span style="color: rgb(0, 0, 0);">n;</span><span style="color: rgb(0, 0, 0);">++</span><span style="color: rgb(0, 0, 0);">i){<br />        </span><span style="color: rgb(0, 0, 255);">in</span><span style="color: rgb(0, 0, 0);">&gt;&gt;</span><span style="color: rgb(0, 0, 0);">x[i]</span><span style="color: rgb(0, 0, 0);">&gt;&gt;</span><span style="color: rgb(0, 0, 0);">y[i];<br />    }<br /><br />    </span><span style="color: rgb(0, 0, 255);">for</span><span style="color: rgb(0, 0, 0);">(</span><span style="color: rgb(0, 0, 255);">int</span><span style="color: rgb(0, 0, 0);"> i</span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);">0</span><span style="color: rgb(0, 0, 0);">;i</span><span style="color: rgb(0, 0, 0);">&lt;</span><span style="color: rgb(0, 0, 0);">n;</span><span style="color: rgb(0, 0, 0);">++</span><span style="color: rgb(0, 0, 0);">i){<br />        </span><span style="color: rgb(0, 0, 255);">string</span><span style="color: rgb(0, 0, 0);"> s;<br />        </span><span style="color: rgb(0, 0, 255);">in</span><span style="color: rgb(0, 0, 0);">&gt;&gt;</span><span style="color: rgb(0, 0, 0);">s;<br />        </span><span style="color: rgb(0, 0, 255);">for</span><span style="color: rgb(0, 0, 0);">(</span><span style="color: rgb(0, 0, 255);">int</span><span style="color: rgb(0, 0, 0);"> j</span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);">0</span><span style="color: rgb(0, 0, 0);">;j</span><span style="color: rgb(0, 0, 0);">&lt;</span><span style="color: rgb(0, 0, 0);">n;</span><span style="color: rgb(0, 0, 0);">++</span><span style="color: rgb(0, 0, 0);">j){<br />            graph[i][j]</span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);">s[j]</span><span style="color: rgb(0, 0, 0);">-</span><span style="color: rgb(0, 0, 0);">'</span><span style="color: rgb(0, 0, 0);">0</span><span style="color: rgb(0, 0, 0);">'</span><span style="color: rgb(0, 0, 0);">;<br />            </span><span style="color: rgb(0, 0, 255);">if</span><span style="color: rgb(0, 0, 0);">(graph[i][j]){<br />                path[i][j] </span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);"> sqrt( (x[i]</span><span style="color: rgb(0, 0, 0);">-</span><span style="color: rgb(0, 0, 0);">x[j])</span><span style="color: rgb(0, 0, 0);">*</span><span style="color: rgb(0, 0, 0);">(x[i]</span><span style="color: rgb(0, 0, 0);">-</span><span style="color: rgb(0, 0, 0);">x[j])<br />                    </span><span style="color: rgb(0, 0, 0);">+</span><span style="color: rgb(0, 0, 0);">(y[i]</span><span style="color: rgb(0, 0, 0);">-</span><span style="color: rgb(0, 0, 0);">y[j])</span><span style="color: rgb(0, 0, 0);">*</span><span style="color: rgb(0, 0, 0);">(y[i]</span><span style="color: rgb(0, 0, 0);">-</span><span style="color: rgb(0, 0, 0);">y[j]) );<br />            }</span><span style="color: rgb(0, 0, 255);">else</span><span style="color: rgb(0, 0, 0);">{<br />                path[i][j] </span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);"> DBL_MAX</span><span style="color: rgb(0, 0, 0);">/</span><span style="color: rgb(0, 0, 0);">4</span><span style="color: rgb(0, 0, 0);">;<br />            }<br />        }<br />    }<br /><br />    floyd();<br /><br />    </span><span style="color: rgb(0, 0, 255);">int</span><span style="color: rgb(0, 0, 0);"> c </span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);"> </span><span style="color: rgb(0, 0, 0);">0</span><span style="color: rgb(0, 0, 0);">;<br />    </span><span style="color: rgb(0, 0, 255);">for</span><span style="color: rgb(0, 0, 0);">(</span><span style="color: rgb(0, 0, 255);">int</span><span style="color: rgb(0, 0, 0);"> i</span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);">0</span><span style="color: rgb(0, 0, 0);">;i</span><span style="color: rgb(0, 0, 0);">&lt;</span><span style="color: rgb(0, 0, 0);">n;</span><span style="color: rgb(0, 0, 0);">++</span><span style="color: rgb(0, 0, 0);">i)<br />        </span><span style="color: rgb(0, 0, 255);">if</span><span style="color: rgb(0, 0, 0);">(color[i]</span><span style="color: rgb(0, 0, 0);">==</span><span style="color: rgb(0, 0, 0);">0</span><span style="color: rgb(0, 0, 0);">)<br />            make_color(i,</span><span style="color: rgb(0, 0, 0);">++</span><span style="color: rgb(0, 0, 0);">c);<br /><br /><br />    </span><span style="color: rgb(0, 0, 255);">for</span><span style="color: rgb(0, 0, 0);">(</span><span style="color: rgb(0, 0, 255);">int</span><span style="color: rgb(0, 0, 0);"> i</span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);">0</span><span style="color: rgb(0, 0, 0);">;i</span><span style="color: rgb(0, 0, 0);">&lt;</span><span style="color: rgb(0, 0, 0);">n;</span><span style="color: rgb(0, 0, 0);">++</span><span style="color: rgb(0, 0, 0);">i){<br />        maxPath[i] </span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);"> </span><span style="color: rgb(0, 0, 0);">0</span><span style="color: rgb(0, 0, 0);">;<br />        </span><span style="color: rgb(0, 0, 255);">for</span><span style="color: rgb(0, 0, 0);">(</span><span style="color: rgb(0, 0, 255);">int</span><span style="color: rgb(0, 0, 0);"> j</span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);">0</span><span style="color: rgb(0, 0, 0);">;j</span><span style="color: rgb(0, 0, 0);">&lt;</span><span style="color: rgb(0, 0, 0);">n;</span><span style="color: rgb(0, 0, 0);">++</span><span style="color: rgb(0, 0, 0);">j){<br />            </span><span style="color: rgb(0, 0, 255);">if</span><span style="color: rgb(0, 0, 0);">(i</span><span style="color: rgb(0, 0, 0);">!=</span><span style="color: rgb(0, 0, 0);">j</span><span style="color: rgb(0, 0, 0);">&amp;&amp;</span><span style="color: rgb(0, 0, 0);">color[i]</span><span style="color: rgb(0, 0, 0);">==</span><span style="color: rgb(0, 0, 0);">color[j]){<br />                maxPath[i] </span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);"> max(maxPath[i],path[i][j]);<br />            }<br />        }<br /><br />        diameter[color[i]] </span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);"> max(diameter[color[i]],maxPath[i]);<br />    }<br /><br /><br />    </span><span style="color: rgb(0, 0, 255);">double</span><span style="color: rgb(0, 0, 0);"> dia </span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);"> DBL_MAX;<br /><br />    </span><span style="color: rgb(0, 0, 255);">for</span><span style="color: rgb(0, 0, 0);">(</span><span style="color: rgb(0, 0, 255);">int</span><span style="color: rgb(0, 0, 0);"> i</span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);">0</span><span style="color: rgb(0, 0, 0);">;i</span><span style="color: rgb(0, 0, 0);">&lt;</span><span style="color: rgb(0, 0, 0);">n;</span><span style="color: rgb(0, 0, 0);">++</span><span style="color: rgb(0, 0, 0);">i)<br />        </span><span style="color: rgb(0, 0, 255);">for</span><span style="color: rgb(0, 0, 0);">(</span><span style="color: rgb(0, 0, 255);">int</span><span style="color: rgb(0, 0, 0);"> j</span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);">i</span><span style="color: rgb(0, 0, 0);">+</span><span style="color: rgb(0, 0, 0);">1</span><span style="color: rgb(0, 0, 0);">;j</span><span style="color: rgb(0, 0, 0);">&lt;</span><span style="color: rgb(0, 0, 0);">n;</span><span style="color: rgb(0, 0, 0);">++</span><span style="color: rgb(0, 0, 0);">j){<br /><br />            </span><span style="color: rgb(0, 0, 255);">if</span><span style="color: rgb(0, 0, 0);">(color[i]</span><span style="color: rgb(0, 0, 0);">==</span><span style="color: rgb(0, 0, 0);">color[j]) </span><span style="color: rgb(0, 0, 255);">continue</span><span style="color: rgb(0, 0, 0);">;<br /><br />            </span><span style="color: rgb(0, 0, 255);">double</span><span style="color: rgb(0, 0, 0);"> d1 </span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);"> </span><span style="color: rgb(0, 0, 0);">0</span><span style="color: rgb(0, 0, 0);">;<br />            </span><span style="color: rgb(0, 0, 255);">for</span><span style="color: rgb(0, 0, 0);">(</span><span style="color: rgb(0, 0, 255);">int</span><span style="color: rgb(0, 0, 0);"> p</span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);">0</span><span style="color: rgb(0, 0, 0);">;p</span><span style="color: rgb(0, 0, 0);">&lt;</span><span style="color: rgb(0, 0, 0);">n;</span><span style="color: rgb(0, 0, 0);">++</span><span style="color: rgb(0, 0, 0);">p){<br />                </span><span style="color: rgb(0, 0, 255);">if</span><span style="color: rgb(0, 0, 0);">(i</span><span style="color: rgb(0, 0, 0);">!=</span><span style="color: rgb(0, 0, 0);">p</span><span style="color: rgb(0, 0, 0);">&amp;&amp;</span><span style="color: rgb(0, 0, 0);">color[i]</span><span style="color: rgb(0, 0, 0);">==</span><span style="color: rgb(0, 0, 0);">color[p])<br />                    d1 </span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);"> max(d1,path[i][p]);<br />            }<br /><br />            </span><span style="color: rgb(0, 0, 255);">double</span><span style="color: rgb(0, 0, 0);"> d2 </span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);"> </span><span style="color: rgb(0, 0, 0);">0</span><span style="color: rgb(0, 0, 0);">;<br />            </span><span style="color: rgb(0, 0, 255);">for</span><span style="color: rgb(0, 0, 0);">(</span><span style="color: rgb(0, 0, 255);">int</span><span style="color: rgb(0, 0, 0);"> p</span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);">0</span><span style="color: rgb(0, 0, 0);">;p</span><span style="color: rgb(0, 0, 0);">&lt;</span><span style="color: rgb(0, 0, 0);">n;</span><span style="color: rgb(0, 0, 0);">++</span><span style="color: rgb(0, 0, 0);">p){<br />                </span><span style="color: rgb(0, 0, 255);">if</span><span style="color: rgb(0, 0, 0);">(j</span><span style="color: rgb(0, 0, 0);">!=</span><span style="color: rgb(0, 0, 0);">p</span><span style="color: rgb(0, 0, 0);">&amp;&amp;</span><span style="color: rgb(0, 0, 0);">color[j]</span><span style="color: rgb(0, 0, 0);">==</span><span style="color: rgb(0, 0, 0);">color[p])<br />                    d2 </span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);"> max(d2,path[j][p]);<br />            }<br /><br />            </span><span style="color: rgb(0, 0, 255);">double</span><span style="color: rgb(0, 0, 0);"> dist </span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);"> sqrt( (x[i]</span><span style="color: rgb(0, 0, 0);">-</span><span style="color: rgb(0, 0, 0);">x[j])</span><span style="color: rgb(0, 0, 0);">*</span><span style="color: rgb(0, 0, 0);">(x[i]</span><span style="color: rgb(0, 0, 0);">-</span><span style="color: rgb(0, 0, 0);">x[j])</span><span style="color: rgb(0, 0, 0);">+</span><span style="color: rgb(0, 0, 0);"><br />                    (y[i]</span><span style="color: rgb(0, 0, 0);">-</span><span style="color: rgb(0, 0, 0);">y[j])</span><span style="color: rgb(0, 0, 0);">*</span><span style="color: rgb(0, 0, 0);">(y[i]</span><span style="color: rgb(0, 0, 0);">-</span><span style="color: rgb(0, 0, 0);">y[j]) );<br /><br />            dia </span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);"> min(dia,max(d1</span><span style="color: rgb(0, 0, 0);">+</span><span style="color: rgb(0, 0, 0);">d2</span><span style="color: rgb(0, 0, 0);">+</span><span style="color: rgb(0, 0, 0);">dist,max(diameter[color[i]],diameter[color[j]])) );<br />        }<br /><br />    </span><span style="color: rgb(0, 0, 255);">out</span><span style="color: rgb(0, 0, 0);">.setf(ios::</span><span style="color: rgb(0, 0, 255);">fixed</span><span style="color: rgb(0, 0, 0);">,ios::floatfield);<br />    </span><span style="color: rgb(0, 0, 255);">out</span><span style="color: rgb(0, 0, 0);">.precision(</span><span style="color: rgb(0, 0, 0);">6</span><span style="color: rgb(0, 0, 0);">);<br />    </span><span style="color: rgb(0, 0, 255);">out</span><span style="color: rgb(0, 0, 0);">&lt;&lt;</span><span style="color: rgb(0, 0, 0);">dia</span><span style="color: rgb(0, 0, 0);">&lt;&lt;</span><span style="color: rgb(0, 0, 0);">endl;<br />}<br /><br /></span><span style="color: rgb(0, 0, 255);">int</span><span style="color: rgb(0, 0, 0);"> main(</span><span style="color: rgb(0, 0, 255);">int</span><span style="color: rgb(0, 0, 0);"> argc,</span><span style="color: rgb(0, 0, 255);">char</span><span style="color: rgb(0, 0, 0);"> </span><span style="color: rgb(0, 0, 0);">*</span><span style="color: rgb(0, 0, 0);">argv[])<br />{<br />    solve(); <br />    </span><span style="color: rgb(0, 0, 255);">return</span><span style="color: rgb(0, 0, 0);"> </span><span style="color: rgb(0, 0, 0);">0</span><span style="color: rgb(0, 0, 0);">;<br />}<br /><br /></span></div><br /><img src ="http://www.cppblog.com/yuziyu/aggbug/88662.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/yuziyu/" target="_blank">YZY</a> 2009-06-27 22:10 <a href="http://www.cppblog.com/yuziyu/archive/2009/06/27/88662.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>mktags--根据指定的文件路径以及文件类型生成ctags以及cscope索引文件的工具</title><link>http://www.cppblog.com/converse/archive/2009/06/27/88661.html</link><dc:creator>那谁</dc:creator><author>那谁</author><pubDate>Sat, 27 Jun 2009 13:38:00 GMT</pubDate><guid>http://www.cppblog.com/converse/archive/2009/06/27/88661.html</guid><wfw:comment>http://www.cppblog.com/converse/comments/88661.html</wfw:comment><comments>http://www.cppblog.com/converse/archive/2009/06/27/88661.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/converse/comments/commentRss/88661.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/converse/services/trackbacks/88661.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: &nbsp;&nbsp;<a href='http://www.cppblog.com/converse/archive/2009/06/27/88661.html'>阅读全文</a><img src ="http://www.cppblog.com/converse/aggbug/88661.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/converse/" target="_blank">那谁</a> 2009-06-27 21:38 <a href="http://www.cppblog.com/converse/archive/2009/06/27/88661.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>一种字符串转化为16进制显示的算法</title><link>http://www.cppblog.com/qinqing1984/archive/2009/06/27/88636.html</link><dc:creator>爱红尘</dc:creator><author>爱红尘</author><pubDate>Sat, 27 Jun 2009 05:08:00 GMT</pubDate><guid>http://www.cppblog.com/qinqing1984/archive/2009/06/27/88636.html</guid><wfw:comment>http://www.cppblog.com/qinqing1984/comments/88636.html</wfw:comment><comments>http://www.cppblog.com/qinqing1984/archive/2009/06/27/88636.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.cppblog.com/qinqing1984/comments/commentRss/88636.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/qinqing1984/services/trackbacks/88636.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 一种字符串转化为16进制显示的算法&nbsp;&nbsp;<a href='http://www.cppblog.com/qinqing1984/archive/2009/06/27/88636.html'>阅读全文</a><img src ="http://www.cppblog.com/qinqing1984/aggbug/88636.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/qinqing1984/" target="_blank">爱红尘</a> 2009-06-27 13:08 <a href="http://www.cppblog.com/qinqing1984/archive/2009/06/27/88636.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>USACO 2.4 Overfencing</title><link>http://www.cppblog.com/yuziyu/archive/2009/06/26/88607.html</link><dc:creator>YZY</dc:creator><author>YZY</author><pubDate>Fri, 26 Jun 2009 14:25:00 GMT</pubDate><guid>http://www.cppblog.com/yuziyu/archive/2009/06/26/88607.html</guid><wfw:comment>http://www.cppblog.com/yuziyu/comments/88607.html</wfw:comment><comments>http://www.cppblog.com/yuziyu/archive/2009/06/26/88607.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/yuziyu/comments/commentRss/88607.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/yuziyu/services/trackbacks/88607.html</trackback:ping><description><![CDATA[
		<br />找出两个迷宫的出口，然后分别进行dfs，求出到每一个点的最短距离。<br />然后对每一个点，求到最短的那个出口的距离，然后再求这个值的最大值即可。<br />找出口写得比较繁琐。<br /><br /><div style="border: 1px solid rgb(204, 204, 204); padding: 4px 5px 4px 4px; background-color: rgb(238, 238, 238); font-size: 13px; width: 98%;"><!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>--><span style="color: rgb(0, 0, 0);">#include </span><span style="color: rgb(0, 0, 0);">&lt;</span><span style="color: rgb(0, 0, 0);">iostream</span><span style="color: rgb(0, 0, 0);">&gt;</span><span style="color: rgb(0, 0, 0);"><br />#include </span><span style="color: rgb(0, 0, 0);">&lt;</span><span style="color: rgb(0, 0, 0);">fstream</span><span style="color: rgb(0, 0, 0);">&gt;</span><span style="color: rgb(0, 0, 0);"><br />#include </span><span style="color: rgb(0, 0, 0);">&lt;</span><span style="color: rgb(0, 0, 0);">queue</span><span style="color: rgb(0, 0, 0);">&gt;</span><span style="color: rgb(0, 0, 0);"><br /><br /></span><span style="color: rgb(0, 0, 255);">using</span><span style="color: rgb(0, 0, 0);"> </span><span style="color: rgb(0, 0, 255);">namespace</span><span style="color: rgb(0, 0, 0);"> std;<br /><br />ifstream fin(</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">maze1.in</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">);<br />ofstream fout(</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">maze1.out</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">);<br /><br />#ifdef _DEBUG<br /></span><span style="color: rgb(0, 0, 255);">#define</span><span style="color: rgb(0, 0, 0);"> out cout</span><span style="color: rgb(0, 0, 0);"><br /></span><span style="color: rgb(0, 0, 255);">#define</span><span style="color: rgb(0, 0, 0);"> in cin</span><span style="color: rgb(0, 0, 0);"><br /></span><span style="color: rgb(0, 0, 255);">#else</span><span style="color: rgb(0, 0, 0);"><br /></span><span style="color: rgb(0, 0, 255);">#define</span><span style="color: rgb(0, 0, 0);"> out fout</span><span style="color: rgb(0, 0, 0);"><br /></span><span style="color: rgb(0, 0, 255);">#define</span><span style="color: rgb(0, 0, 0);"> in fin</span><span style="color: rgb(0, 0, 0);"><br /></span><span style="color: rgb(0, 0, 255);">#endif</span><span style="color: rgb(0, 0, 0);"><br /><br /></span><span style="color: rgb(0, 0, 255);">char</span><span style="color: rgb(0, 0, 0);"> maze[</span><span style="color: rgb(0, 0, 0);">2</span><span style="color: rgb(0, 0, 0);">*</span><span style="color: rgb(0, 0, 0);">100</span><span style="color: rgb(0, 0, 0);">+</span><span style="color: rgb(0, 0, 0);">1</span><span style="color: rgb(0, 0, 0);">][</span><span style="color: rgb(0, 0, 0);">2</span><span style="color: rgb(0, 0, 0);">*</span><span style="color: rgb(0, 0, 0);">38</span><span style="color: rgb(0, 0, 0);">+</span><span style="color: rgb(0, 0, 0);">1</span><span style="color: rgb(0, 0, 0);">];<br /><br /></span><span style="color: rgb(0, 0, 255);">bool</span><span style="color: rgb(0, 0, 0);"> visited[</span><span style="color: rgb(0, 0, 0);">100</span><span style="color: rgb(0, 0, 0);">][</span><span style="color: rgb(0, 0, 0);">38</span><span style="color: rgb(0, 0, 0);">];<br /><br /></span><span style="color: rgb(0, 0, 255);">int</span><span style="color: rgb(0, 0, 0);"> shortest1[</span><span style="color: rgb(0, 0, 0);">100</span><span style="color: rgb(0, 0, 0);">][</span><span style="color: rgb(0, 0, 0);">38</span><span style="color: rgb(0, 0, 0);">];<br /></span><span style="color: rgb(0, 0, 255);">int</span><span style="color: rgb(0, 0, 0);"> shortest2[</span><span style="color: rgb(0, 0, 0);">100</span><span style="color: rgb(0, 0, 0);">][</span><span style="color: rgb(0, 0, 0);">38</span><span style="color: rgb(0, 0, 0);">];<br /><br /></span><span style="color: rgb(0, 0, 255);">bool</span><span style="color: rgb(0, 0, 0);"> get_first;<br /></span><span style="color: rgb(0, 0, 255);">int</span><span style="color: rgb(0, 0, 0);"> exit1r,exit1c;<br /></span><span style="color: rgb(0, 0, 255);">int</span><span style="color: rgb(0, 0, 0);"> exit2r,exit2c;<br /></span><span style="color: rgb(0, 0, 255);">int</span><span style="color: rgb(0, 0, 0);"> w,h;<br /><br /></span><span style="color: rgb(0, 0, 255);">struct</span><span style="color: rgb(0, 0, 0);"> queue_node{<br />    </span><span style="color: rgb(0, 0, 255);">int</span><span style="color: rgb(0, 0, 0);"> i,j,depth;<br />    queue_node(</span><span style="color: rgb(0, 0, 255);">int</span><span style="color: rgb(0, 0, 0);"> i,</span><span style="color: rgb(0, 0, 255);">int</span><span style="color: rgb(0, 0, 0);"> j,</span><span style="color: rgb(0, 0, 255);">int</span><span style="color: rgb(0, 0, 0);"> depth){<br />        </span><span style="color: rgb(0, 0, 255);">this</span><span style="color: rgb(0, 0, 0);">-&gt;</span><span style="color: rgb(0, 0, 0);">i </span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);"> i;<br />        </span><span style="color: rgb(0, 0, 255);">this</span><span style="color: rgb(0, 0, 0);">-&gt;</span><span style="color: rgb(0, 0, 0);">j </span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);"> j;<br />        </span><span style="color: rgb(0, 0, 255);">this</span><span style="color: rgb(0, 0, 0);">-&gt;</span><span style="color: rgb(0, 0, 0);">depth </span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);"> depth;<br />    }<br />};<br /><br /></span><span style="color: rgb(0, 0, 255);">void</span><span style="color: rgb(0, 0, 0);"> bfs(</span><span style="color: rgb(0, 0, 255);">int</span><span style="color: rgb(0, 0, 0);"> i,</span><span style="color: rgb(0, 0, 255);">int</span><span style="color: rgb(0, 0, 0);"> j,</span><span style="color: rgb(0, 0, 255);">int</span><span style="color: rgb(0, 0, 0);"> shortest[</span><span style="color: rgb(0, 0, 0);">100</span><span style="color: rgb(0, 0, 0);">][</span><span style="color: rgb(0, 0, 0);">38</span><span style="color: rgb(0, 0, 0);">])<br />{<br />    queue</span><span style="color: rgb(0, 0, 0);">&lt;</span><span style="color: rgb(0, 0, 0);">queue_node</span><span style="color: rgb(0, 0, 0);">&gt;</span><span style="color: rgb(0, 0, 0);">q;<br /><br />    q.push(queue_node(i,j,</span><span style="color: rgb(0, 0, 0);">1</span><span style="color: rgb(0, 0, 0);">));<br /><br />    </span><span style="color: rgb(0, 0, 255);">while</span><span style="color: rgb(0, 0, 0);">(</span><span style="color: rgb(0, 0, 0);">!</span><span style="color: rgb(0, 0, 0);">q.empty()){<br /><br />        queue_node node </span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);"> q.front();<br />        q.pop();<br /><br />        </span><span style="color: rgb(0, 0, 255);">if</span><span style="color: rgb(0, 0, 0);">(visited[node.i][node.j])<br />            </span><span style="color: rgb(0, 0, 255);">continue</span><span style="color: rgb(0, 0, 0);">;<br /><br />        visited[node.i][node.j] </span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);"> </span><span style="color: rgb(0, 0, 255);">true</span><span style="color: rgb(0, 0, 0);">;<br /><br />        shortest[node.i][node.j] </span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);"> node.depth;<br /><br />        </span><span style="color: rgb(0, 0, 255);">if</span><span style="color: rgb(0, 0, 0);">(node.i</span><span style="color: rgb(0, 0, 0);">!=</span><span style="color: rgb(0, 0, 0);">0</span><span style="color: rgb(0, 0, 0);">&amp;&amp;</span><span style="color: rgb(0, 0, 0);">maze[</span><span style="color: rgb(0, 0, 0);">2</span><span style="color: rgb(0, 0, 0);">*</span><span style="color: rgb(0, 0, 0);">node.i][</span><span style="color: rgb(0, 0, 0);">2</span><span style="color: rgb(0, 0, 0);">*</span><span style="color: rgb(0, 0, 0);">node.j</span><span style="color: rgb(0, 0, 0);">+</span><span style="color: rgb(0, 0, 0);">1</span><span style="color: rgb(0, 0, 0);">]</span><span style="color: rgb(0, 0, 0);">==</span><span style="color: rgb(0, 0, 0);">'</span><span style="color: rgb(0, 0, 0);"> </span><span style="color: rgb(0, 0, 0);">'</span><span style="color: rgb(0, 0, 0);">){<br />            q.push(queue_node(node.i</span><span style="color: rgb(0, 0, 0);">-</span><span style="color: rgb(0, 0, 0);">1</span><span style="color: rgb(0, 0, 0);">,node.j,node.depth</span><span style="color: rgb(0, 0, 0);">+</span><span style="color: rgb(0, 0, 0);">1</span><span style="color: rgb(0, 0, 0);">));<br />        }<br />        </span><span style="color: rgb(0, 0, 255);">if</span><span style="color: rgb(0, 0, 0);">(node.i</span><span style="color: rgb(0, 0, 0);">!=</span><span style="color: rgb(0, 0, 0);">h</span><span style="color: rgb(0, 0, 0);">-</span><span style="color: rgb(0, 0, 0);">1</span><span style="color: rgb(0, 0, 0);">&amp;&amp;</span><span style="color: rgb(0, 0, 0);">maze[</span><span style="color: rgb(0, 0, 0);">2</span><span style="color: rgb(0, 0, 0);">*</span><span style="color: rgb(0, 0, 0);">node.i</span><span style="color: rgb(0, 0, 0);">+</span><span style="color: rgb(0, 0, 0);">2</span><span style="color: rgb(0, 0, 0);">][</span><span style="color: rgb(0, 0, 0);">2</span><span style="color: rgb(0, 0, 0);">*</span><span style="color: rgb(0, 0, 0);">node.j</span><span style="color: rgb(0, 0, 0);">+</span><span style="color: rgb(0, 0, 0);">1</span><span style="color: rgb(0, 0, 0);">]</span><span style="color: rgb(0, 0, 0);">==</span><span style="color: rgb(0, 0, 0);">'</span><span style="color: rgb(0, 0, 0);"> </span><span style="color: rgb(0, 0, 0);">'</span><span style="color: rgb(0, 0, 0);">){<br />            q.push(queue_node(node.i</span><span style="color: rgb(0, 0, 0);">+</span><span style="color: rgb(0, 0, 0);">1</span><span style="color: rgb(0, 0, 0);">,node.j,node.depth</span><span style="color: rgb(0, 0, 0);">+</span><span style="color: rgb(0, 0, 0);">1</span><span style="color: rgb(0, 0, 0);">));<br />        }<br />        </span><span style="color: rgb(0, 0, 255);">if</span><span style="color: rgb(0, 0, 0);">(node.j</span><span style="color: rgb(0, 0, 0);">!=</span><span style="color: rgb(0, 0, 0);">0</span><span style="color: rgb(0, 0, 0);">&amp;&amp;</span><span style="color: rgb(0, 0, 0);">maze[</span><span style="color: rgb(0, 0, 0);">2</span><span style="color: rgb(0, 0, 0);">*</span><span style="color: rgb(0, 0, 0);">node.i</span><span style="color: rgb(0, 0, 0);">+</span><span style="color: rgb(0, 0, 0);">1</span><span style="color: rgb(0, 0, 0);">][</span><span style="color: rgb(0, 0, 0);">2</span><span style="color: rgb(0, 0, 0);">*</span><span style="color: rgb(0, 0, 0);">node.j]</span><span style="color: rgb(0, 0, 0);">==</span><span style="color: rgb(0, 0, 0);">'</span><span style="color: rgb(0, 0, 0);"> </span><span style="color: rgb(0, 0, 0);">'</span><span style="color: rgb(0, 0, 0);">){<br />            q.push(queue_node(node.i,node.j</span><span style="color: rgb(0, 0, 0);">-</span><span style="color: rgb(0, 0, 0);">1</span><span style="color: rgb(0, 0, 0);">,node.depth</span><span style="color: rgb(0, 0, 0);">+</span><span style="color: rgb(0, 0, 0);">1</span><span style="color: rgb(0, 0, 0);">));<br />        }<br />        </span><span style="color: rgb(0, 0, 255);">if</span><span style="color: rgb(0, 0, 0);">(node.j</span><span style="color: rgb(0, 0, 0);">!=</span><span style="color: rgb(0, 0, 0);">w</span><span style="color: rgb(0, 0, 0);">-</span><span style="color: rgb(0, 0, 0);">1</span><span style="color: rgb(0, 0, 0);">&amp;&amp;</span><span style="color: rgb(0, 0, 0);">maze[</span><span style="color: rgb(0, 0, 0);">2</span><span style="color: rgb(0, 0, 0);">*</span><span style="color: rgb(0, 0, 0);">node.i</span><span style="color: rgb(0, 0, 0);">+</span><span style="color: rgb(0, 0, 0);">1</span><span style="color: rgb(0, 0, 0);">][</span><span style="color: rgb(0, 0, 0);">2</span><span style="color: rgb(0, 0, 0);">*</span><span style="color: rgb(0, 0, 0);">node.j</span><span style="color: rgb(0, 0, 0);">+</span><span style="color: rgb(0, 0, 0);">2</span><span style="color: rgb(0, 0, 0);">]</span><span style="color: rgb(0, 0, 0);">==</span><span style="color: rgb(0, 0, 0);">'</span><span style="color: rgb(0, 0, 0);"> </span><span style="color: rgb(0, 0, 0);">'</span><span style="color: rgb(0, 0, 0);">){<br />            q.push(queue_node(node.i,node.j</span><span style="color: rgb(0, 0, 0);">+</span><span style="color: rgb(0, 0, 0);">1</span><span style="color: rgb(0, 0, 0);">,node.depth</span><span style="color: rgb(0, 0, 0);">+</span><span style="color: rgb(0, 0, 0);">1</span><span style="color: rgb(0, 0, 0);">));<br />        }<br />    }<br />}<br /><br /></span><span style="color: rgb(0, 0, 255);">void</span><span style="color: rgb(0, 0, 0);"> solve()<br />{<br />    </span><span style="color: rgb(0, 0, 255);">in</span><span style="color: rgb(0, 0, 0);">&gt;&gt;</span><span style="color: rgb(0, 0, 0);">w</span><span style="color: rgb(0, 0, 0);">&gt;&gt;</span><span style="color: rgb(0, 0, 0);">h;<br /><br />    </span><span style="color: rgb(0, 0, 255);">for</span><span style="color: rgb(0, 0, 0);">(</span><span style="color: rgb(0, 0, 255);">int</span><span style="color: rgb(0, 0, 0);"> i</span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);">0</span><span style="color: rgb(0, 0, 0);">;i</span><span style="color: rgb(0, 0, 0);">&lt;</span><span style="color: rgb(0, 0, 0);">2</span><span style="color: rgb(0, 0, 0);">*</span><span style="color: rgb(0, 0, 0);">h</span><span style="color: rgb(0, 0, 0);">+</span><span style="color: rgb(0, 0, 0);">1</span><span style="color: rgb(0, 0, 0);">;</span><span style="color: rgb(0, 0, 0);">++</span><span style="color: rgb(0, 0, 0);">i)<br />        </span><span style="color: rgb(0, 0, 255);">for</span><span style="color: rgb(0, 0, 0);">(</span><span style="color: rgb(0, 0, 255);">int</span><span style="color: rgb(0, 0, 0);"> j</span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);">0</span><span style="color: rgb(0, 0, 0);">;j</span><span style="color: rgb(0, 0, 0);">&lt;</span><span style="color: rgb(0, 0, 0);">2</span><span style="color: rgb(0, 0, 0);">*</span><span style="color: rgb(0, 0, 0);">w</span><span style="color: rgb(0, 0, 0);">+</span><span style="color: rgb(0, 0, 0);">1</span><span style="color: rgb(0, 0, 0);">;</span><span style="color: rgb(0, 0, 0);">++</span><span style="color: rgb(0, 0, 0);">j){<br /><br />            </span><span style="color: rgb(0, 0, 255);">do</span><span style="color: rgb(0, 0, 0);">{<br />            </span><span style="color: rgb(0, 0, 255);">in</span><span style="color: rgb(0, 0, 0);">.</span><span style="color: rgb(0, 0, 255);">get</span><span style="color: rgb(0, 0, 0);">(maze[i][j]);<br />            }</span><span style="color: rgb(0, 0, 255);">while</span><span style="color: rgb(0, 0, 0);">(maze[i][j]</span><span style="color: rgb(0, 0, 0);">==</span><span style="color: rgb(0, 0, 0);">'</span><span style="color: rgb(0, 0, 0);">\n</span><span style="color: rgb(0, 0, 0);">'</span><span style="color: rgb(0, 0, 0);">);<br /><br />            </span><span style="color: rgb(0, 0, 255);">if</span><span style="color: rgb(0, 0, 0);">((i</span><span style="color: rgb(0, 0, 0);">==</span><span style="color: rgb(0, 0, 0);">0</span><span style="color: rgb(0, 0, 0);">||</span><span style="color: rgb(0, 0, 0);">i</span><span style="color: rgb(0, 0, 0);">==</span><span style="color: rgb(0, 0, 0);">2</span><span style="color: rgb(0, 0, 0);">*</span><span style="color: rgb(0, 0, 0);">h</span><span style="color: rgb(0, 0, 0);">||</span><span style="color: rgb(0, 0, 0);">j</span><span style="color: rgb(0, 0, 0);">==</span><span style="color: rgb(0, 0, 0);">0</span><span style="color: rgb(0, 0, 0);">||</span><span style="color: rgb(0, 0, 0);">j</span><span style="color: rgb(0, 0, 0);">==</span><span style="color: rgb(0, 0, 0);">2</span><span style="color: rgb(0, 0, 0);">*</span><span style="color: rgb(0, 0, 0);">w)</span><span style="color: rgb(0, 0, 0);">&amp;&amp;</span><span style="color: rgb(0, 0, 0);">maze[i][j]</span><span style="color: rgb(0, 0, 0);">==</span><span style="color: rgb(0, 0, 0);">'</span><span style="color: rgb(0, 0, 0);"> </span><span style="color: rgb(0, 0, 0);">'</span><span style="color: rgb(0, 0, 0);">){<br />                </span><span style="color: rgb(0, 0, 255);">if</span><span style="color: rgb(0, 0, 0);">(</span><span style="color: rgb(0, 0, 0);">!</span><span style="color: rgb(0, 0, 0);">get_first){<br />                    </span><span style="color: rgb(0, 0, 255);">if</span><span style="color: rgb(0, 0, 0);">(i</span><span style="color: rgb(0, 0, 0);">==</span><span style="color: rgb(0, 0, 0);">2</span><span style="color: rgb(0, 0, 0);">*</span><span style="color: rgb(0, 0, 0);">h)<br />                        exit1r </span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);"> h</span><span style="color: rgb(0, 0, 0);">-</span><span style="color: rgb(0, 0, 0);">1</span><span style="color: rgb(0, 0, 0);">;<br />                    </span><span style="color: rgb(0, 0, 255);">else</span><span style="color: rgb(0, 0, 0);"><br />                        exit1r </span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);"> i</span><span style="color: rgb(0, 0, 0);">/</span><span style="color: rgb(0, 0, 0);">2</span><span style="color: rgb(0, 0, 0);">;<br />                    </span><span style="color: rgb(0, 0, 255);">if</span><span style="color: rgb(0, 0, 0);">(j</span><span style="color: rgb(0, 0, 0);">==</span><span style="color: rgb(0, 0, 0);">2</span><span style="color: rgb(0, 0, 0);">*</span><span style="color: rgb(0, 0, 0);">w)<br />                        exit1c </span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);"> w</span><span style="color: rgb(0, 0, 0);">-</span><span style="color: rgb(0, 0, 0);">1</span><span style="color: rgb(0, 0, 0);">;<br />                    </span><span style="color: rgb(0, 0, 255);">else</span><span style="color: rgb(0, 0, 0);"><br />                        exit1c </span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);"> j</span><span style="color: rgb(0, 0, 0);">/</span><span style="color: rgb(0, 0, 0);">2</span><span style="color: rgb(0, 0, 0);">;<br />                    get_first </span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);"> </span><span style="color: rgb(0, 0, 255);">true</span><span style="color: rgb(0, 0, 0);">;<br />                }</span><span style="color: rgb(0, 0, 255);">else</span><span style="color: rgb(0, 0, 0);">{<br />                    </span><span style="color: rgb(0, 0, 255);">if</span><span style="color: rgb(0, 0, 0);">(i</span><span style="color: rgb(0, 0, 0);">==</span><span style="color: rgb(0, 0, 0);">2</span><span style="color: rgb(0, 0, 0);">*</span><span style="color: rgb(0, 0, 0);">h)<br />                        exit2r </span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);"> h</span><span style="color: rgb(0, 0, 0);">-</span><span style="color: rgb(0, 0, 0);">1</span><span style="color: rgb(0, 0, 0);">;<br />                    </span><span style="color: rgb(0, 0, 255);">else</span><span style="color: rgb(0, 0, 0);"><br />                        exit2r </span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);"> i</span><span style="color: rgb(0, 0, 0);">/</span><span style="color: rgb(0, 0, 0);">2</span><span style="color: rgb(0, 0, 0);">;<br />                    </span><span style="color: rgb(0, 0, 255);">if</span><span style="color: rgb(0, 0, 0);">(j</span><span style="color: rgb(0, 0, 0);">==</span><span style="color: rgb(0, 0, 0);">2</span><span style="color: rgb(0, 0, 0);">*</span><span style="color: rgb(0, 0, 0);">w)<br />                        exit2c </span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);"> w</span><span style="color: rgb(0, 0, 0);">-</span><span style="color: rgb(0, 0, 0);">1</span><span style="color: rgb(0, 0, 0);">;<br />                    </span><span style="color: rgb(0, 0, 255);">else</span><span style="color: rgb(0, 0, 0);"><br />                        exit2c </span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);"> j</span><span style="color: rgb(0, 0, 0);">/</span><span style="color: rgb(0, 0, 0);">2</span><span style="color: rgb(0, 0, 0);">;<br />                }<br />            }<br />        }<br /><br />    memset(visited,</span><span style="color: rgb(0, 0, 0);">0</span><span style="color: rgb(0, 0, 0);">,</span><span style="color: rgb(0, 0, 255);">sizeof</span><span style="color: rgb(0, 0, 0);">(visited));<br />    bfs(exit1r,exit1c,shortest1);<br />    memset(visited,</span><span style="color: rgb(0, 0, 0);">0</span><span style="color: rgb(0, 0, 0);">,</span><span style="color: rgb(0, 0, 255);">sizeof</span><span style="color: rgb(0, 0, 0);">(visited));<br />    bfs(exit2r,exit2c,shortest2);<br /><br />    </span><span style="color: rgb(0, 0, 255);">int</span><span style="color: rgb(0, 0, 0);"> res </span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);"> INT_MIN;<br /><br />    </span><span style="color: rgb(0, 0, 255);">for</span><span style="color: rgb(0, 0, 0);">(</span><span style="color: rgb(0, 0, 255);">int</span><span style="color: rgb(0, 0, 0);"> i</span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);">0</span><span style="color: rgb(0, 0, 0);">;i</span><span style="color: rgb(0, 0, 0);">&lt;</span><span style="color: rgb(0, 0, 0);">h;</span><span style="color: rgb(0, 0, 0);">++</span><span style="color: rgb(0, 0, 0);">i)<br />     </span><span style="color: rgb(0, 0, 255);">for</span><span style="color: rgb(0, 0, 0);">(</span><span style="color: rgb(0, 0, 255);">int</span><span style="color: rgb(0, 0, 0);"> j</span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);">0</span><span style="color: rgb(0, 0, 0);">;j</span><span style="color: rgb(0, 0, 0);">&lt;</span><span style="color: rgb(0, 0, 0);">w;</span><span style="color: rgb(0, 0, 0);">++</span><span style="color: rgb(0, 0, 0);">j){<br />         res </span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);"> max(res, min(shortest1[i][j],shortest2[i][j]) );<br />     }<br /><br />    </span><span style="color: rgb(0, 0, 255);">out</span><span style="color: rgb(0, 0, 0);">&lt;&lt;</span><span style="color: rgb(0, 0, 0);">res</span><span style="color: rgb(0, 0, 0);">&lt;&lt;</span><span style="color: rgb(0, 0, 0);">endl;<br />}<br /><br /></span><span style="color: rgb(0, 0, 255);">int</span><span style="color: rgb(0, 0, 0);"> main(</span><span style="color: rgb(0, 0, 255);">int</span><span style="color: rgb(0, 0, 0);"> argc,</span><span style="color: rgb(0, 0, 255);">char</span><span style="color: rgb(0, 0, 0);"> </span><span style="color: rgb(0, 0, 0);">*</span><span style="color: rgb(0, 0, 0);">argv[])<br />{<br />    solve(); <br />    </span><span style="color: rgb(0, 0, 255);">return</span><span style="color: rgb(0, 0, 0);"> </span><span style="color: rgb(0, 0, 0);">0</span><span style="color: rgb(0, 0, 0);">;<br />}<br /><br /><br /></span></div><br /><img src ="http://www.cppblog.com/yuziyu/aggbug/88607.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/yuziyu/" target="_blank">YZY</a> 2009-06-26 22:25 <a href="http://www.cppblog.com/yuziyu/archive/2009/06/26/88607.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>ASIO攻破！！！</title><link>http://www.cppblog.com/shanoa/archive/2009/06/26/88606.html</link><dc:creator>酿</dc:creator><author>酿</author><pubDate>Fri, 26 Jun 2009 14:14:00 GMT</pubDate><guid>http://www.cppblog.com/shanoa/archive/2009/06/26/88606.html</guid><wfw:comment>http://www.cppblog.com/shanoa/comments/88606.html</wfw:comment><comments>http://www.cppblog.com/shanoa/archive/2009/06/26/88606.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.cppblog.com/shanoa/comments/commentRss/88606.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/shanoa/services/trackbacks/88606.html</trackback:ping><description><![CDATA[花了足足3天时间，外加1天心情休整，终于在第5天编写出了一个能运行的基于asio和thread_group的框架，差点没气晕过去，把源码都看懂了才感觉会用了。<br>测试了一下，debug下一万次回应耗时800+毫秒，release下是200+毫秒，机器配置双核2.5G英特尔，4个线程并行工作，无错的感觉真好，再也不用担心iocp出一些奇怪的问题啦，因为是巨人们写的实现，呵呵。<br><br>进入正题，简要说一下asio的实现原理吧。在win32平台上，asio是基于IOCP技术实现的，我以前也用过IOCP，却没想到居然能扩展成这样，真是神奇！在其他平台下还会有别的方法去实现，具体见io_service类下面这部分的源码：<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.cppblog.com/Images/OutliningIndicators/None.gif" align=top><span style="COLOR: #000000">&nbsp;&nbsp;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">&nbsp;The&nbsp;type&nbsp;of&nbsp;the&nbsp;platform-specific&nbsp;implementation.</span><span style="COLOR: #008000"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #0000ff">#if</span><span style="COLOR: #000000">&nbsp;defined(BOOST_ASIO_HAS_IOCP)</span><span style="COLOR: #000000"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;typedef&nbsp;detail::win_iocp_io_service&nbsp;impl_type;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;friend&nbsp;</span><span style="COLOR: #0000ff">class</span><span style="COLOR: #000000">&nbsp;detail::win_iocp_overlapped_ptr;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #0000ff">#elif</span><span style="COLOR: #000000">&nbsp;defined(BOOST_ASIO_HAS_EPOLL)</span><span style="COLOR: #000000"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;typedef&nbsp;detail::task_io_service</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">detail::epoll_reactor</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #0000ff">false</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000">&nbsp;impl_type;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #0000ff">#elif</span><span style="COLOR: #000000">&nbsp;defined(BOOST_ASIO_HAS_KQUEUE)</span><span style="COLOR: #000000"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;typedef&nbsp;detail::task_io_service</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">detail::kqueue_reactor</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #0000ff">false</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000">&nbsp;impl_type;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #0000ff">#elif</span><span style="COLOR: #000000">&nbsp;defined(BOOST_ASIO_HAS_DEV_POLL)</span><span style="COLOR: #000000"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;typedef&nbsp;detail::task_io_service</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">detail::dev_poll_reactor</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #0000ff">false</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000">&nbsp;impl_type;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #0000ff">#else</span><span style="COLOR: #000000"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;typedef&nbsp;detail::task_io_service</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">detail::select_reactor</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #0000ff">false</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000">&nbsp;impl_type;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #0000ff">#endif</span><span style="COLOR: #000000"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top></span></div>
这部分代码其实就在boost::asio::io_service类声明中的最前面几行，可以看见在不同平台下，io_service类的实现将会不同。很显然，windows平台下当然是win_iocp_io_service类为实现了（不过我一开始还以为win_iocp_io_service是直接拿出来用的呢，还在疑惑这样怎么有移植性呢？官方文档也对该类只字不提，其实我卡壳就是卡在这里了，差点就直接用这个类了^_^!）。<br><br>那么就分析一下win_iocp_io_service的代码吧，这里完全是用IOCP来路由各种任务，大家使用post来委托任务，内部调用的其实是IOCP的PostQueuedCompletionStatus函数，然后线程们用run来接受任务，内部其实是阻塞在IOCP的GetQueuedCompletionStatus函数上，一旦有了任务就立即返回，执行完后再一个循环，继续阻塞在这里等待下一个任务的到来，这种设计思想堪称神奇，对线程、服务以及任务完全解耦，灵活度达到了如此高度，不愧为boost库的东西！我只能有拜的份了...<br><br>说一下总体的设计思想，其实io_service就像是劳工中介所，而一个线程就是一个劳工，而调用post的模块相当于富人们，他们去中介所委托任务，而劳工们就听候中介所的调遣去执行这些任务，任务的内容就写在富人们给你的handler上，也就是函数指针，指针指向具体实现就是任务的实质内容。其实在整个过程中，富人们都不知道是哪个老公帮他们做的工作，只知道是中介所负责完成这些就可以了。这使得逻辑上的耦合降到了最低。不过这样的比喻也有个不恰当的地方，如果硬要这样比喻的话，我只能说：其实劳工里面也有很多富人的^o^! 。很多劳工在完成任务的过程中自己也托给中介所一些任务，然后这些任务很可能还是自己去完成。这也难怪，运行代码的总是这些线程，那么调用post的肯定也会有这些线程了，不过不管怎么说，如此循环往复可以解决问题就行，比喻不见得就得恰当，任何事物之间都不可能完全相同，只要能阐述思想就行。<br><br>最后还要说明的一点就是：委托的任务其实可以设定执行的时间的，很不错的设定，内部实现则是通过定时器原理，GetQueuedCompletionStatus有一个等待时间的参数似乎被用在这方面，还有源码中的定时器线程我并没有过多的去理解，总之大体原理已基本掌握，剩下的就是使劲的用它了！！！<br><br>但愿这篇随笔也能对正在研究asio的朋友们有所帮助吧。<br>
<img src ="http://www.cppblog.com/shanoa/aggbug/88606.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/shanoa/" target="_blank">酿</a> 2009-06-26 22:14 <a href="http://www.cppblog.com/shanoa/archive/2009/06/26/88606.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>USACO 2.4 The Tamworth Two</title><link>http://www.cppblog.com/yuziyu/archive/2009/06/26/88597.html</link><dc:creator>YZY</dc:creator><author>YZY</author><pubDate>Fri, 26 Jun 2009 12:48:00 GMT</pubDate><guid>http://www.cppblog.com/yuziyu/archive/2009/06/26/88597.html</guid><wfw:comment>http://www.cppblog.com/yuziyu/comments/88597.html</wfw:comment><comments>http://www.cppblog.com/yuziyu/archive/2009/06/26/88597.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/yuziyu/comments/commentRss/88597.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/yuziyu/services/trackbacks/88597.html</trackback:ping><description><![CDATA[
		<br />模拟题。按题目要求编码即可，每过一分钟，更新一下农夫和奶牛的状态。如果该状态以前出现过，说明有循环，不可能到达，输出0.<br /><br /><div style="border: 1px solid rgb(204, 204, 204); padding: 4px 5px 4px 4px; background-color: rgb(238, 238, 238); font-size: 13px; width: 98%;"><!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>--><span style="color: rgb(0, 0, 0);">#include </span><span style="color: rgb(0, 0, 0);">&lt;</span><span style="color: rgb(0, 0, 0);">iostream</span><span style="color: rgb(0, 0, 0);">&gt;</span><span style="color: rgb(0, 0, 0);"><br />#include </span><span style="color: rgb(0, 0, 0);">&lt;</span><span style="color: rgb(0, 0, 0);">fstream</span><span style="color: rgb(0, 0, 0);">&gt;</span><span style="color: rgb(0, 0, 0);"><br /><br /></span><span style="color: rgb(0, 0, 255);">using</span><span style="color: rgb(0, 0, 0);"> </span><span style="color: rgb(0, 0, 255);">namespace</span><span style="color: rgb(0, 0, 0);"> std;<br /><br />ifstream fin(</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">ttwo.in</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">);<br />ofstream fout(</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">ttwo.out</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">);<br /><br />#ifdef _DEBUG<br /></span><span style="color: rgb(0, 0, 255);">#define</span><span style="color: rgb(0, 0, 0);"> out cout</span><span style="color: rgb(0, 0, 0);"><br /></span><span style="color: rgb(0, 0, 255);">#define</span><span style="color: rgb(0, 0, 0);"> in cin</span><span style="color: rgb(0, 0, 0);"><br /></span><span style="color: rgb(0, 0, 255);">#else</span><span style="color: rgb(0, 0, 0);"><br /></span><span style="color: rgb(0, 0, 255);">#define</span><span style="color: rgb(0, 0, 0);"> out fout</span><span style="color: rgb(0, 0, 0);"><br /></span><span style="color: rgb(0, 0, 255);">#define</span><span style="color: rgb(0, 0, 0);"> in fin</span><span style="color: rgb(0, 0, 0);"><br /></span><span style="color: rgb(0, 0, 255);">#endif</span><span style="color: rgb(0, 0, 0);"><br /><br /></span><span style="color: rgb(0, 0, 255);">char</span><span style="color: rgb(0, 0, 0);"> grid[</span><span style="color: rgb(0, 0, 0);">10</span><span style="color: rgb(0, 0, 0);">][</span><span style="color: rgb(0, 0, 0);">10</span><span style="color: rgb(0, 0, 0);">];<br /><br /></span><span style="color: rgb(0, 0, 255);">bool</span><span style="color: rgb(0, 0, 0);"> visited[</span><span style="color: rgb(0, 0, 0);">10</span><span style="color: rgb(0, 0, 0);">][</span><span style="color: rgb(0, 0, 0);">10</span><span style="color: rgb(0, 0, 0);">][</span><span style="color: rgb(0, 0, 0);">4</span><span style="color: rgb(0, 0, 0);">][</span><span style="color: rgb(0, 0, 0);">10</span><span style="color: rgb(0, 0, 0);">][</span><span style="color: rgb(0, 0, 0);">10</span><span style="color: rgb(0, 0, 0);">][</span><span style="color: rgb(0, 0, 0);">4</span><span style="color: rgb(0, 0, 0);">];<br /><br /></span><span style="color: rgb(0, 0, 255);">int</span><span style="color: rgb(0, 0, 0);"> north </span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);"> </span><span style="color: rgb(0, 0, 0);">0</span><span style="color: rgb(0, 0, 0);">;<br /></span><span style="color: rgb(0, 0, 255);">int</span><span style="color: rgb(0, 0, 0);"> east </span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);"> </span><span style="color: rgb(0, 0, 0);">1</span><span style="color: rgb(0, 0, 0);">;<br /></span><span style="color: rgb(0, 0, 255);">int</span><span style="color: rgb(0, 0, 0);"> south </span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);"> </span><span style="color: rgb(0, 0, 0);">2</span><span style="color: rgb(0, 0, 0);">;<br /></span><span style="color: rgb(0, 0, 255);">int</span><span style="color: rgb(0, 0, 0);"> west </span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);"> </span><span style="color: rgb(0, 0, 0);">3</span><span style="color: rgb(0, 0, 0);">;<br /><br /></span><span style="color: rgb(0, 128, 0);">//</span><span style="color: rgb(0, 128, 0);">方向为0,1,2,3时向前走一步row和column的增加值</span><span style="color: rgb(0, 128, 0);"><br /></span><span style="color: rgb(0, 0, 255);">int</span><span style="color: rgb(0, 0, 0);"> delr[</span><span style="color: rgb(0, 0, 0);">4</span><span style="color: rgb(0, 0, 0);">] </span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);"> {<br />    </span><span style="color: rgb(0, 0, 0);">-</span><span style="color: rgb(0, 0, 0);">1</span><span style="color: rgb(0, 0, 0);">,</span><span style="color: rgb(0, 0, 0);">0</span><span style="color: rgb(0, 0, 0);">,</span><span style="color: rgb(0, 0, 0);">1</span><span style="color: rgb(0, 0, 0);">,</span><span style="color: rgb(0, 0, 0);">0</span><span style="color: rgb(0, 0, 0);"><br />};<br /></span><span style="color: rgb(0, 0, 255);">int</span><span style="color: rgb(0, 0, 0);"> delc[</span><span style="color: rgb(0, 0, 0);">4</span><span style="color: rgb(0, 0, 0);">] </span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);"> {<br />    </span><span style="color: rgb(0, 0, 0);">0</span><span style="color: rgb(0, 0, 0);">,</span><span style="color: rgb(0, 0, 0);">1</span><span style="color: rgb(0, 0, 0);">,</span><span style="color: rgb(0, 0, 0);">0</span><span style="color: rgb(0, 0, 0);">,</span><span style="color: rgb(0, 0, 0);">-</span><span style="color: rgb(0, 0, 0);">1</span><span style="color: rgb(0, 0, 0);"><br />};<br /><br /></span><span style="color: rgb(0, 128, 0);">//</span><span style="color: rgb(0, 128, 0);"> farmer的当前row,column,direction.</span><span style="color: rgb(0, 128, 0);"><br /></span><span style="color: rgb(0, 0, 255);">int</span><span style="color: rgb(0, 0, 0);"> fc,fr,fd;<br /></span><span style="color: rgb(0, 0, 255);">int</span><span style="color: rgb(0, 0, 0);"> cc,cr,cd;<br /><br /></span><span style="color: rgb(0, 0, 255);">bool</span><span style="color: rgb(0, 0, 0);"> available(</span><span style="color: rgb(0, 0, 255);">int</span><span style="color: rgb(0, 0, 0);"> i,</span><span style="color: rgb(0, 0, 255);">int</span><span style="color: rgb(0, 0, 0);"> j)<br />{<br />    </span><span style="color: rgb(0, 0, 255);">if</span><span style="color: rgb(0, 0, 0);">(i</span><span style="color: rgb(0, 0, 0);">&gt;=</span><span style="color: rgb(0, 0, 0);">0</span><span style="color: rgb(0, 0, 0);">&amp;&amp;</span><span style="color: rgb(0, 0, 0);">i</span><span style="color: rgb(0, 0, 0);">&lt;=</span><span style="color: rgb(0, 0, 0);">9</span><span style="color: rgb(0, 0, 0);">&amp;&amp;</span><span style="color: rgb(0, 0, 0);">j</span><span style="color: rgb(0, 0, 0);">&gt;=</span><span style="color: rgb(0, 0, 0);">0</span><span style="color: rgb(0, 0, 0);">&amp;&amp;</span><span style="color: rgb(0, 0, 0);">j</span><span style="color: rgb(0, 0, 0);">&lt;=</span><span style="color: rgb(0, 0, 0);">9</span><span style="color: rgb(0, 0, 0);">&amp;&amp;</span><span style="color: rgb(0, 0, 0);">grid[i][j]</span><span style="color: rgb(0, 0, 0);">!=</span><span style="color: rgb(0, 0, 0);">'</span><span style="color: rgb(0, 0, 0);">*</span><span style="color: rgb(0, 0, 0);">'</span><span style="color: rgb(0, 0, 0);">)<br />        </span><span style="color: rgb(0, 0, 255);">return</span><span style="color: rgb(0, 0, 0);"> </span><span style="color: rgb(0, 0, 255);">true</span><span style="color: rgb(0, 0, 0);">;<br />    </span><span style="color: rgb(0, 0, 255);">else</span><span style="color: rgb(0, 0, 0);"><br />        </span><span style="color: rgb(0, 0, 255);">return</span><span style="color: rgb(0, 0, 0);"> </span><span style="color: rgb(0, 0, 255);">false</span><span style="color: rgb(0, 0, 0);">;<br />}<br /><br /></span><span style="color: rgb(0, 0, 255);">void</span><span style="color: rgb(0, 0, 0);"> one_step()<br />{<br />    </span><span style="color: rgb(0, 0, 255);">if</span><span style="color: rgb(0, 0, 0);">( available( fr</span><span style="color: rgb(0, 0, 0);">+</span><span style="color: rgb(0, 0, 0);">delr[fd],fc</span><span style="color: rgb(0, 0, 0);">+</span><span style="color: rgb(0, 0, 0);">delc[fd] ) ){<br />        fr </span><span style="color: rgb(0, 0, 0);">+=</span><span style="color: rgb(0, 0, 0);"> delr[fd];<br />        fc </span><span style="color: rgb(0, 0, 0);">+=</span><span style="color: rgb(0, 0, 0);"> delc[fd];<br />    }</span><span style="color: rgb(0, 0, 255);">else</span><span style="color: rgb(0, 0, 0);">{<br />        fd</span><span style="color: rgb(0, 0, 0);">+=</span><span style="color: rgb(0, 0, 0);">1</span><span style="color: rgb(0, 0, 0);">;<br />        fd</span><span style="color: rgb(0, 0, 0);">%=</span><span style="color: rgb(0, 0, 0);">4</span><span style="color: rgb(0, 0, 0);">;<br />    }<br /><br />    </span><span style="color: rgb(0, 0, 255);">if</span><span style="color: rgb(0, 0, 0);">( available( cr</span><span style="color: rgb(0, 0, 0);">+</span><span style="color: rgb(0, 0, 0);">delr[cd],cc</span><span style="color: rgb(0, 0, 0);">+</span><span style="color: rgb(0, 0, 0);">delc[cd] ) ){<br />        cr </span><span style="color: rgb(0, 0, 0);">+=</span><span style="color: rgb(0, 0, 0);"> delr[cd];<br />        cc </span><span style="color: rgb(0, 0, 0);">+=</span><span style="color: rgb(0, 0, 0);"> delc[cd];<br />    }</span><span style="color: rgb(0, 0, 255);">else</span><span style="color: rgb(0, 0, 0);">{<br />        cd</span><span style="color: rgb(0, 0, 0);">+=</span><span style="color: rgb(0, 0, 0);">1</span><span style="color: rgb(0, 0, 0);">;<br />        cd</span><span style="color: rgb(0, 0, 0);">%=</span><span style="color: rgb(0, 0, 0);">4</span><span style="color: rgb(0, 0, 0);">;<br />    }<br />}<br /><br /></span><span style="color: rgb(0, 0, 255);">void</span><span style="color: rgb(0, 0, 0);"> solve()<br />{<br />    </span><span style="color: rgb(0, 0, 255);">for</span><span style="color: rgb(0, 0, 0);">(</span><span style="color: rgb(0, 0, 255);">int</span><span style="color: rgb(0, 0, 0);"> i</span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);">0</span><span style="color: rgb(0, 0, 0);">;i</span><span style="color: rgb(0, 0, 0);">&lt;</span><span style="color: rgb(0, 0, 0);">10</span><span style="color: rgb(0, 0, 0);">;</span><span style="color: rgb(0, 0, 0);">++</span><span style="color: rgb(0, 0, 0);">i)<br />        </span><span style="color: rgb(0, 0, 255);">for</span><span style="color: rgb(0, 0, 0);">(</span><span style="color: rgb(0, 0, 255);">int</span><span style="color: rgb(0, 0, 0);"> j</span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);">0</span><span style="color: rgb(0, 0, 0);">;j</span><span style="color: rgb(0, 0, 0);">&lt;</span><span style="color: rgb(0, 0, 0);">10</span><span style="color: rgb(0, 0, 0);">;</span><span style="color: rgb(0, 0, 0);">++</span><span style="color: rgb(0, 0, 0);">j){<br />            </span><span style="color: rgb(0, 0, 255);">in</span><span style="color: rgb(0, 0, 0);">&gt;&gt;</span><span style="color: rgb(0, 0, 0);">grid[i][j];<br />            </span><span style="color: rgb(0, 0, 255);">if</span><span style="color: rgb(0, 0, 0);">(grid[i][j]</span><span style="color: rgb(0, 0, 0);">==</span><span style="color: rgb(0, 0, 0);">'</span><span style="color: rgb(0, 0, 0);">F</span><span style="color: rgb(0, 0, 0);">'</span><span style="color: rgb(0, 0, 0);">)<br />                fr</span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);">i,fc</span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);">j,fd</span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);">0</span><span style="color: rgb(0, 0, 0);">;<br />            </span><span style="color: rgb(0, 0, 255);">if</span><span style="color: rgb(0, 0, 0);">(grid[i][j]</span><span style="color: rgb(0, 0, 0);">==</span><span style="color: rgb(0, 0, 0);">'</span><span style="color: rgb(0, 0, 0);">C</span><span style="color: rgb(0, 0, 0);">'</span><span style="color: rgb(0, 0, 0);">)<br />                cr</span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);">i,cc</span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);">j,cd</span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);">0</span><span style="color: rgb(0, 0, 0);">;<br />        }<br /><br />    memset(visited,</span><span style="color: rgb(0, 0, 0);">0</span><span style="color: rgb(0, 0, 0);">,</span><span style="color: rgb(0, 0, 255);">sizeof</span><span style="color: rgb(0, 0, 0);">(visited));<br /><br />    visited[fc][fr][fd][cc][cr][cd] </span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);"> </span><span style="color: rgb(0, 0, 255);">true</span><span style="color: rgb(0, 0, 0);">;<br /><br />    </span><span style="color: rgb(0, 0, 255);">int</span><span style="color: rgb(0, 0, 0);"> res </span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);"> </span><span style="color: rgb(0, 0, 0);">0</span><span style="color: rgb(0, 0, 0);">;<br /><br />    </span><span style="color: rgb(0, 0, 255);">while</span><span style="color: rgb(0, 0, 0);">(</span><span style="color: rgb(0, 0, 255);">true</span><span style="color: rgb(0, 0, 0);">){<br /><br />        one_step();<br />        res</span><span style="color: rgb(0, 0, 0);">++</span><span style="color: rgb(0, 0, 0);">;<br /><br />        </span><span style="color: rgb(0, 0, 255);">if</span><span style="color: rgb(0, 0, 0);">( fc</span><span style="color: rgb(0, 0, 0);">==</span><span style="color: rgb(0, 0, 0);">cc</span><span style="color: rgb(0, 0, 0);">&amp;&amp;</span><span style="color: rgb(0, 0, 0);">fr</span><span style="color: rgb(0, 0, 0);">==</span><span style="color: rgb(0, 0, 0);">cr ){<br />            </span><span style="color: rgb(0, 0, 255);">out</span><span style="color: rgb(0, 0, 0);">&lt;&lt;</span><span style="color: rgb(0, 0, 0);">res</span><span style="color: rgb(0, 0, 0);">&lt;&lt;</span><span style="color: rgb(0, 0, 0);">endl;<br />            exit(</span><span style="color: rgb(0, 0, 0);">0</span><span style="color: rgb(0, 0, 0);">);<br />        }<br /><br />        </span><span style="color: rgb(0, 0, 255);">if</span><span style="color: rgb(0, 0, 0);">(visited[fc][fr][fd][cc][cr][cd]){<br />            </span><span style="color: rgb(0, 0, 255);">out</span><span style="color: rgb(0, 0, 0);">&lt;&lt;</span><span style="color: rgb(0, 0, 0);">0</span><span style="color: rgb(0, 0, 0);">&lt;&lt;</span><span style="color: rgb(0, 0, 0);">endl;<br />            exit(</span><span style="color: rgb(0, 0, 0);">0</span><span style="color: rgb(0, 0, 0);">);<br />        }<br /><br />        visited[fc][fr][fd][cc][cr][cd]</span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 255);">true</span><span style="color: rgb(0, 0, 0);">;<br />    }<br />}<br /><br /></span><span style="color: rgb(0, 0, 255);">int</span><span style="color: rgb(0, 0, 0);"> main(</span><span style="color: rgb(0, 0, 255);">int</span><span style="color: rgb(0, 0, 0);"> argc,</span><span style="color: rgb(0, 0, 255);">char</span><span style="color: rgb(0, 0, 0);"> </span><span style="color: rgb(0, 0, 0);">*</span><span style="color: rgb(0, 0, 0);">argv[])<br />{<br />    solve(); <br />    </span><span style="color: rgb(0, 0, 255);">return</span><span style="color: rgb(0, 0, 0);"> </span><span style="color: rgb(0, 0, 0);">0</span><span style="color: rgb(0, 0, 0);">;<br />}<br /><br /></span></div><br /><img src ="http://www.cppblog.com/yuziyu/aggbug/88597.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/yuziyu/" target="_blank">YZY</a> 2009-06-26 20:48 <a href="http://www.cppblog.com/yuziyu/archive/2009/06/26/88597.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>USACO 2.3 Controlling Companies</title><link>http://www.cppblog.com/yuziyu/archive/2009/06/26/88596.html</link><dc:creator>YZY</dc:creator><author>YZY</author><pubDate>Fri, 26 Jun 2009 12:01:00 GMT</pubDate><guid>http://www.cppblog.com/yuziyu/archive/2009/06/26/88596.html</guid><wfw:comment>http://www.cppblog.com/yuziyu/comments/88596.html</wfw:comment><comments>http://www.cppblog.com/yuziyu/archive/2009/06/26/88596.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/yuziyu/comments/commentRss/88596.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/yuziyu/services/trackbacks/88596.html</trackback:ping><description><![CDATA[每加一个新结点，更新一下对各公司控制值,递归地加入新控制的结点即可。用一个布尔向量记录一下已经控制的公司，以免无穷递归。<br /><br /><br /><br /><div style="border: 1px solid rgb(204, 204, 204); padding: 4px 5px 4px 4px; background-color: rgb(238, 238, 238); font-size: 13px; width: 98%;"><!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>--><span style="color: rgb(0, 0, 0);">#include </span><span style="color: rgb(0, 0, 0);">&lt;</span><span style="color: rgb(0, 0, 0);">iostream</span><span style="color: rgb(0, 0, 0);">&gt;</span><span style="color: rgb(0, 0, 0);"><br />#include </span><span style="color: rgb(0, 0, 0);">&lt;</span><span style="color: rgb(0, 0, 0);">fstream</span><span style="color: rgb(0, 0, 0);">&gt;</span><span style="color: rgb(0, 0, 0);"><br /><br /></span><span style="color: rgb(0, 0, 255);">using</span><span style="color: rgb(0, 0, 0);"> </span><span style="color: rgb(0, 0, 255);">namespace</span><span style="color: rgb(0, 0, 0);"> std;<br /><br />ifstream fin(</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">concom.in</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">);<br />ofstream fout(</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">concom.out</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">);<br /><br />#ifdef _DEBUG<br /></span><span style="color: rgb(0, 0, 255);">#define</span><span style="color: rgb(0, 0, 0);"> out cout</span><span style="color: rgb(0, 0, 0);"><br /></span><span style="color: rgb(0, 0, 255);">#define</span><span style="color: rgb(0, 0, 0);"> in cin</span><span style="color: rgb(0, 0, 0);"><br /></span><span style="color: rgb(0, 0, 255);">#else</span><span style="color: rgb(0, 0, 0);"><br /></span><span style="color: rgb(0, 0, 255);">#define</span><span style="color: rgb(0, 0, 0);"> out fout</span><span style="color: rgb(0, 0, 0);"><br /></span><span style="color: rgb(0, 0, 255);">#define</span><span style="color: rgb(0, 0, 0);"> in fin</span><span style="color: rgb(0, 0, 0);"><br /></span><span style="color: rgb(0, 0, 255);">#endif</span><span style="color: rgb(0, 0, 0);"><br /><br /></span><span style="color: rgb(0, 0, 255);">int</span><span style="color: rgb(0, 0, 0);"> stock[</span><span style="color: rgb(0, 0, 0);">101</span><span style="color: rgb(0, 0, 0);">][</span><span style="color: rgb(0, 0, 0);">101</span><span style="color: rgb(0, 0, 0);">];<br /></span><span style="color: rgb(0, 0, 255);">int</span><span style="color: rgb(0, 0, 0);"> n;<br /></span><span style="color: rgb(0, 0, 255);">bool</span><span style="color: rgb(0, 0, 0);"> control[</span><span style="color: rgb(0, 0, 0);">101</span><span style="color: rgb(0, 0, 0);">];<br /><br /></span><span style="color: rgb(0, 0, 255);">void</span><span style="color: rgb(0, 0, 0);"> add_control(</span><span style="color: rgb(0, 0, 255);">int</span><span style="color: rgb(0, 0, 0);"> cr,</span><span style="color: rgb(0, 0, 255);">int</span><span style="color: rgb(0, 0, 0);"> ce)<br />{<br />    </span><span style="color: rgb(0, 0, 255);">if</span><span style="color: rgb(0, 0, 0);">(control[ce]) </span><span style="color: rgb(0, 0, 255);">return</span><span style="color: rgb(0, 0, 0);">;<br /><br />    control[ce] </span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);"> </span><span style="color: rgb(0, 0, 255);">true</span><span style="color: rgb(0, 0, 0);">;<br />    </span><span style="color: rgb(0, 0, 255);">for</span><span style="color: rgb(0, 0, 0);">(</span><span style="color: rgb(0, 0, 255);">int</span><span style="color: rgb(0, 0, 0);"> i </span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);"> </span><span style="color: rgb(0, 0, 0);">1</span><span style="color: rgb(0, 0, 0);">; i</span><span style="color: rgb(0, 0, 0);">&lt;=</span><span style="color: rgb(0, 0, 0);">100</span><span style="color: rgb(0, 0, 0);">; </span><span style="color: rgb(0, 0, 0);">++</span><span style="color: rgb(0, 0, 0);">i){<br />        </span><span style="color: rgb(0, 0, 255);">if</span><span style="color: rgb(0, 0, 0);">(i</span><span style="color: rgb(0, 0, 0);">!=</span><span style="color: rgb(0, 0, 0);">cr</span><span style="color: rgb(0, 0, 0);">&amp;&amp;!</span><span style="color: rgb(0, 0, 0);">control[i]){<br />            stock[cr][i]</span><span style="color: rgb(0, 0, 0);">+=</span><span style="color: rgb(0, 0, 0);">stock[ce][i];<br /><br />            </span><span style="color: rgb(0, 0, 255);">if</span><span style="color: rgb(0, 0, 0);">(stock[cr][i]</span><span style="color: rgb(0, 0, 0);">&gt;</span><span style="color: rgb(0, 0, 0);">50</span><span style="color: rgb(0, 0, 0);">)<br />                add_control(cr,i);<br />        }<br />    }<br />}<br /><br /></span><span style="color: rgb(0, 0, 255);">void</span><span style="color: rgb(0, 0, 0);"> solve()<br />{<br />    memset(stock,</span><span style="color: rgb(0, 0, 0);">0</span><span style="color: rgb(0, 0, 0);">,</span><span style="color: rgb(0, 0, 255);">sizeof</span><span style="color: rgb(0, 0, 0);">(stock));<br />    <br />    </span><span style="color: rgb(0, 0, 255);">in</span><span style="color: rgb(0, 0, 0);">&gt;&gt;</span><span style="color: rgb(0, 0, 0);">n;<br /><br />    </span><span style="color: rgb(0, 0, 255);">int</span><span style="color: rgb(0, 0, 0);"> i,j,p;<br /><br />    </span><span style="color: rgb(0, 0, 255);">while</span><span style="color: rgb(0, 0, 0);">(n</span><span style="color: rgb(0, 0, 0);">--</span><span style="color: rgb(0, 0, 0);">){<br />        </span><span style="color: rgb(0, 0, 255);">in</span><span style="color: rgb(0, 0, 0);">&gt;&gt;</span><span style="color: rgb(0, 0, 0);">i</span><span style="color: rgb(0, 0, 0);">&gt;&gt;</span><span style="color: rgb(0, 0, 0);">j</span><span style="color: rgb(0, 0, 0);">&gt;&gt;</span><span style="color: rgb(0, 0, 0);">p;<br />        stock[i][j] </span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);"> p;<br />    }<br />    <br /><br />   </span><span style="color: rgb(0, 0, 255);">for</span><span style="color: rgb(0, 0, 0);">(</span><span style="color: rgb(0, 0, 255);">int</span><span style="color: rgb(0, 0, 0);"> i</span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);">1</span><span style="color: rgb(0, 0, 0);">;i</span><span style="color: rgb(0, 0, 0);">&lt;=</span><span style="color: rgb(0, 0, 0);">100</span><span style="color: rgb(0, 0, 0);">;</span><span style="color: rgb(0, 0, 0);">++</span><span style="color: rgb(0, 0, 0);">i){<br /><br />       memset(control,</span><span style="color: rgb(0, 0, 0);">0</span><span style="color: rgb(0, 0, 0);">,</span><span style="color: rgb(0, 0, 255);">sizeof</span><span style="color: rgb(0, 0, 0);">(control));<br /><br />       </span><span style="color: rgb(0, 0, 255);">for</span><span style="color: rgb(0, 0, 0);">(</span><span style="color: rgb(0, 0, 255);">int</span><span style="color: rgb(0, 0, 0);"> j</span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);">1</span><span style="color: rgb(0, 0, 0);">;j</span><span style="color: rgb(0, 0, 0);">&lt;=</span><span style="color: rgb(0, 0, 0);">100</span><span style="color: rgb(0, 0, 0);">;</span><span style="color: rgb(0, 0, 0);">++</span><span style="color: rgb(0, 0, 0);">j){<br /><br />           </span><span style="color: rgb(0, 0, 255);">if</span><span style="color: rgb(0, 0, 0);">(i</span><span style="color: rgb(0, 0, 0);">==</span><span style="color: rgb(0, 0, 0);">j) </span><span style="color: rgb(0, 0, 255);">continue</span><span style="color: rgb(0, 0, 0);">;<br /><br />           </span><span style="color: rgb(0, 0, 255);">if</span><span style="color: rgb(0, 0, 0);">( stock[i][j]</span><span style="color: rgb(0, 0, 0);">&gt;</span><span style="color: rgb(0, 0, 0);">50</span><span style="color: rgb(0, 0, 0);">){<br />               add_control(i,j);<br />           }<br />       }<br /><br />       </span><span style="color: rgb(0, 0, 255);">for</span><span style="color: rgb(0, 0, 0);">(</span><span style="color: rgb(0, 0, 255);">int</span><span style="color: rgb(0, 0, 0);"> j</span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);">1</span><span style="color: rgb(0, 0, 0);">;j</span><span style="color: rgb(0, 0, 0);">&lt;=</span><span style="color: rgb(0, 0, 0);">100</span><span style="color: rgb(0, 0, 0);">;</span><span style="color: rgb(0, 0, 0);">++</span><span style="color: rgb(0, 0, 0);">j){<br />           </span><span style="color: rgb(0, 0, 255);">if</span><span style="color: rgb(0, 0, 0);">(control[j]){<br />               </span><span style="color: rgb(0, 0, 255);">out</span><span style="color: rgb(0, 0, 0);">&lt;&lt;</span><span style="color: rgb(0, 0, 0);">i</span><span style="color: rgb(0, 0, 0);">&lt;&lt;</span><span style="color: rgb(0, 0, 0);">'</span><span style="color: rgb(0, 0, 0);"> </span><span style="color: rgb(0, 0, 0);">'</span><span style="color: rgb(0, 0, 0);">&lt;&lt;</span><span style="color: rgb(0, 0, 0);">j</span><span style="color: rgb(0, 0, 0);">&lt;&lt;</span><span style="color: rgb(0, 0, 0);">endl;<br />           }<br />       }<br />   } <br />}<br /><br /></span><span style="color: rgb(0, 0, 255);">int</span><span style="color: rgb(0, 0, 0);"> main(</span><span style="color: rgb(0, 0, 255);">int</span><span style="color: rgb(0, 0, 0);"> argc,</span><span style="color: rgb(0, 0, 255);">char</span><span style="color: rgb(0, 0, 0);"> </span><span style="color: rgb(0, 0, 0);">*</span><span style="color: rgb(0, 0, 0);">argv[])<br />{<br />    solve(); <br />    </span><span style="color: rgb(0, 0, 255);">return</span><span style="color: rgb(0, 0, 0);"> </span><span style="color: rgb(0, 0, 0);">0</span><span style="color: rgb(0, 0, 0);">;<br />}<br /><br /><br /></span></div><br /><img src ="http://www.cppblog.com/yuziyu/aggbug/88596.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/yuziyu/" target="_blank">YZY</a> 2009-06-26 20:01 <a href="http://www.cppblog.com/yuziyu/archive/2009/06/26/88596.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>初探C++ Builder 2009的UnicodeString</title><link>http://www.cppblog.com/tuuzed/archive/2009/06/26/88538.html</link><dc:creator>土仔</dc:creator><author>土仔</author><pubDate>Thu, 25 Jun 2009 16:41:00 GMT</pubDate><guid>http://www.cppblog.com/tuuzed/archive/2009/06/26/88538.html</guid><wfw:comment>http://www.cppblog.com/tuuzed/comments/88538.html</wfw:comment><comments>http://www.cppblog.com/tuuzed/archive/2009/06/26/88538.html#Feedback</comments><slash:comments>4</slash:comments><wfw:commentRss>http://www.cppblog.com/tuuzed/comments/commentRss/88538.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/tuuzed/services/trackbacks/88538.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 摘要: Tags：C++ Builder 2009 UnicodeString Big5 GB<br>利用C++ Builder 2009实现一个在简体XP中可显示繁体TXT内容的记事本，并对C++ Builder 2009的UnicodeString进行源码跟踪。<br>&nbsp;&nbsp;<a href='http://www.cppblog.com/tuuzed/archive/2009/06/26/88538.html'>阅读全文</a><img src ="http://www.cppblog.com/tuuzed/aggbug/88538.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/tuuzed/" target="_blank">土仔</a> 2009-06-26 00:41 <a href="http://www.cppblog.com/tuuzed/archive/2009/06/26/88538.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>