﻿<?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++博客-newplan</title><link>http://www.cppblog.com/newplan/</link><description>阿基米德在洗澡時發現浮力原理，高興得來不及穿㆖褲子，跑到街㆖大喊：Eureka（我找到了）。</description><language>zh-cn</language><lastBuildDate>Tue, 14 Apr 2026 15:26:22 GMT</lastBuildDate><pubDate>Tue, 14 Apr 2026 15:26:22 GMT</pubDate><ttl>60</ttl><item><title>自己动手制作强力网络爬虫</title><link>http://www.cppblog.com/newplan/archive/2008/12/21/70012.html</link><dc:creator>山泉弯延</dc:creator><author>山泉弯延</author><pubDate>Sun, 21 Dec 2008 12:38:00 GMT</pubDate><guid>http://www.cppblog.com/newplan/archive/2008/12/21/70012.html</guid><wfw:comment>http://www.cppblog.com/newplan/comments/70012.html</wfw:comment><comments>http://www.cppblog.com/newplan/archive/2008/12/21/70012.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/newplan/comments/commentRss/70012.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/newplan/services/trackbacks/70012.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: import&nbsp;java.io.BufferedReader;import&nbsp;java.io.File;import&nbsp;java.io.FileWriter;import&nbsp;java.io.IOException;import&nbsp;java.io.InputStream;import&nbsp;java.io.InputStreamReader;import&...&nbsp;&nbsp;<a href='http://www.cppblog.com/newplan/archive/2008/12/21/70012.html'>阅读全文</a><img src ="http://www.cppblog.com/newplan/aggbug/70012.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/newplan/" target="_blank">山泉弯延</a> 2008-12-21 20:38 <a href="http://www.cppblog.com/newplan/archive/2008/12/21/70012.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>java线程池的使用</title><link>http://www.cppblog.com/newplan/archive/2008/12/13/69361.html</link><dc:creator>山泉弯延</dc:creator><author>山泉弯延</author><pubDate>Sat, 13 Dec 2008 11:04:00 GMT</pubDate><guid>http://www.cppblog.com/newplan/archive/2008/12/13/69361.html</guid><wfw:comment>http://www.cppblog.com/newplan/comments/69361.html</wfw:comment><comments>http://www.cppblog.com/newplan/archive/2008/12/13/69361.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/newplan/comments/commentRss/69361.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/newplan/services/trackbacks/69361.html</trackback:ping><description><![CDATA[<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: #0000ff">import</span><span style="COLOR: #000000">&nbsp;java.util.concurrent.ExecutorService;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #0000ff">import</span><span style="COLOR: #000000">&nbsp;java.util.concurrent.Executors;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #0000ff">import</span><span style="COLOR: #000000">&nbsp;java.util.concurrent.ScheduledExecutorService;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #0000ff">import</span><span style="COLOR: #000000">&nbsp;java.util.concurrent.ScheduledFuture;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #0000ff">import</span><span style="COLOR: #000000">&nbsp;java.util.concurrent.TimeUnit;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top><br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top><br><img id=Codehighlighter1_223_248_Open_Image onclick="this.style.display='none'; Codehighlighter1_223_248_Open_Text.style.display='none'; Codehighlighter1_223_248_Closed_Image.style.display='inline'; Codehighlighter1_223_248_Closed_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align=top><img id=Codehighlighter1_223_248_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_223_248_Closed_Text.style.display='none'; Codehighlighter1_223_248_Open_Image.style.display='inline'; Codehighlighter1_223_248_Open_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedBlock.gif" align=top></span><span id=Codehighlighter1_223_248_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">/**/</span><span id=Codehighlighter1_223_248_Open_Text><span style="COLOR: #008000">/*</span><span style="COLOR: #008000"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;*&nbsp;学习使用JDK5以上的线程池操作<br><img src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockEnd.gif" align=top>&nbsp;</span><span style="COLOR: #008000">*/</span></span><span style="COLOR: #000000"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top><br><img id=Codehighlighter1_275_1479_Open_Image onclick="this.style.display='none'; Codehighlighter1_275_1479_Open_Text.style.display='none'; Codehighlighter1_275_1479_Closed_Image.style.display='inline'; Codehighlighter1_275_1479_Closed_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align=top><img id=Codehighlighter1_275_1479_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_275_1479_Closed_Text.style.display='none'; Codehighlighter1_275_1479_Open_Image.style.display='inline'; Codehighlighter1_275_1479_Open_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedBlock.gif" align=top></span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">class</span><span style="COLOR: #000000">&nbsp;ThreadPool&nbsp;</span><span id=Codehighlighter1_275_1479_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_275_1479_Open_Text><span style="COLOR: #000000">{<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top><br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">static</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000">&nbsp;main(String[]&nbsp;args)<br><img id=Codehighlighter1_319_1473_Open_Image onclick="this.style.display='none'; Codehighlighter1_319_1473_Open_Text.style.display='none'; Codehighlighter1_319_1473_Closed_Image.style.display='inline'; Codehighlighter1_319_1473_Closed_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><img id=Codehighlighter1_319_1473_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_319_1473_Closed_Text.style.display='none'; Codehighlighter1_319_1473_Open_Image.style.display='inline'; Codehighlighter1_319_1473_Open_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedSubBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span id=Codehighlighter1_319_1473_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_319_1473_Open_Text><span style="COLOR: #000000">{<br><img id=Codehighlighter1_324_356_Open_Image onclick="this.style.display='none'; Codehighlighter1_324_356_Open_Text.style.display='none'; Codehighlighter1_324_356_Closed_Image.style.display='inline'; Codehighlighter1_324_356_Closed_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><img id=Codehighlighter1_324_356_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_324_356_Closed_Text.style.display='none'; Codehighlighter1_324_356_Open_Image.style.display='inline'; Codehighlighter1_324_356_Open_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedSubBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span id=Codehighlighter1_324_356_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">/**/</span><span id=Codehighlighter1_324_356_Open_Text><span style="COLOR: #008000">/*</span><span style="COLOR: #008000"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;可以安排线程运行时间<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #008000">*/</span></span><span style="COLOR: #000000"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">final</span><span style="COLOR: #000000">&nbsp;ScheduledExecutorService&nbsp;scheduler&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;Executors.newScheduledThreadPool(</span><span style="COLOR: #000000">2</span><span style="COLOR: #000000">);<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">final</span><span style="COLOR: #000000">&nbsp;Runnable&nbsp;beeper&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">new</span><span style="COLOR: #000000">&nbsp;Runnable()&nbsp;<br><img id=Codehighlighter1_490_621_Open_Image onclick="this.style.display='none'; Codehighlighter1_490_621_Open_Text.style.display='none'; Codehighlighter1_490_621_Closed_Image.style.display='inline'; Codehighlighter1_490_621_Closed_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><img id=Codehighlighter1_490_621_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_490_621_Closed_Text.style.display='none'; Codehighlighter1_490_621_Open_Image.style.display='inline'; Codehighlighter1_490_621_Open_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedSubBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span id=Codehighlighter1_490_621_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_490_621_Open_Text><span style="COLOR: #000000">{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;count&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">;&nbsp;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000">&nbsp;run()&nbsp;<br><img id=Codehighlighter1_544_612_Open_Image onclick="this.style.display='none'; Codehighlighter1_544_612_Open_Text.style.display='none'; Codehighlighter1_544_612_Closed_Image.style.display='inline'; Codehighlighter1_544_612_Closed_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><img id=Codehighlighter1_544_612_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_544_612_Closed_Text.style.display='none'; Codehighlighter1_544_612_Open_Image.style.display='inline'; Codehighlighter1_544_612_Open_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedSubBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span id=Codehighlighter1_544_612_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_544_612_Open_Text><span style="COLOR: #000000">{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(&nbsp;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">&nbsp;beep&nbsp;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">&nbsp;(</span><span style="COLOR: #000000">++</span><span style="COLOR: #000000">count));<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="COLOR: #000000">;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">final</span><span style="COLOR: #000000">&nbsp;ScheduledFuture</span><span style="COLOR: #000000">&lt;?&gt;</span><span style="COLOR: #000000">&nbsp;beeperHandle&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;scheduler.scheduleAtFixedRate(beeper,&nbsp;</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">,&nbsp;</span><span style="COLOR: #000000">2</span><span style="COLOR: #000000">,TimeUnit.SECONDS);<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;scheduler.schedule(</span><span style="COLOR: #0000ff">new</span><span style="COLOR: #000000">&nbsp;Runnable()&nbsp;<br><img id=Codehighlighter1_779_928_Open_Image onclick="this.style.display='none'; Codehighlighter1_779_928_Open_Text.style.display='none'; Codehighlighter1_779_928_Closed_Image.style.display='inline'; Codehighlighter1_779_928_Closed_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><img id=Codehighlighter1_779_928_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_779_928_Closed_Text.style.display='none'; Codehighlighter1_779_928_Open_Image.style.display='inline'; Codehighlighter1_779_928_Open_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedSubBlock.gif" align=top>&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 id=Codehighlighter1_779_928_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_779_928_Open_Text><span style="COLOR: #000000">{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000">&nbsp;run()<br><img id=Codehighlighter1_823_914_Open_Image onclick="this.style.display='none'; Codehighlighter1_823_914_Open_Text.style.display='none'; Codehighlighter1_823_914_Closed_Image.style.display='inline'; Codehighlighter1_823_914_Closed_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><img id=Codehighlighter1_823_914_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_823_914_Closed_Text.style.display='none'; Codehighlighter1_823_914_Open_Image.style.display='inline'; Codehighlighter1_823_914_Open_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedSubBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span id=Codehighlighter1_823_914_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_823_914_Open_Text><span style="COLOR: #000000">{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;beeperHandle.cancel(</span><span style="COLOR: #0000ff">true</span><span style="COLOR: #000000">);&nbsp;&nbsp;&nbsp;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;scheduler.shutdown();<br><img src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top>&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><span style="COLOR: #000000">,&nbsp;</span><span style="COLOR: #000000">200</span><span style="COLOR: #000000">,&nbsp;TimeUnit.SECONDS<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;);<br><img id=Codehighlighter1_967_994_Open_Image onclick="this.style.display='none'; Codehighlighter1_967_994_Open_Text.style.display='none'; Codehighlighter1_967_994_Closed_Image.style.display='inline'; Codehighlighter1_967_994_Closed_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><img id=Codehighlighter1_967_994_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_967_994_Closed_Text.style.display='none'; Codehighlighter1_967_994_Open_Image.style.display='inline'; Codehighlighter1_967_994_Open_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedSubBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span id=Codehighlighter1_967_994_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">/**/</span><span id=Codehighlighter1_967_994_Open_Text><span style="COLOR: #008000">/*</span><span style="COLOR: #008000"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;不可以安排线程的运行时间<br><img src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #008000">*/</span></span><span style="COLOR: #000000"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ExecutorService&nbsp;&nbsp;&nbsp;&nbsp;exec&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;Executors.newFixedThreadPool(</span><span style="COLOR: #000000">2</span><span style="COLOR: #000000">);&nbsp;&nbsp;&nbsp;&nbsp;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">for</span><span style="COLOR: #000000">(</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;index&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">;&nbsp;index&nbsp;</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">200</span><span style="COLOR: #000000">;&nbsp;index</span><span style="COLOR: #000000">++</span><span style="COLOR: #000000">)&nbsp;<br><img id=Codehighlighter1_1107_1446_Open_Image onclick="this.style.display='none'; Codehighlighter1_1107_1446_Open_Text.style.display='none'; Codehighlighter1_1107_1446_Closed_Image.style.display='inline'; Codehighlighter1_1107_1446_Closed_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><img id=Codehighlighter1_1107_1446_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_1107_1446_Closed_Text.style.display='none'; Codehighlighter1_1107_1446_Open_Image.style.display='inline'; Codehighlighter1_1107_1446_Open_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedSubBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span id=Codehighlighter1_1107_1446_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_1107_1446_Open_Text><span style="COLOR: #000000">{<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Runnable&nbsp;run&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">new</span><span style="COLOR: #000000">&nbsp;Runnable()<br><img id=Codehighlighter1_1147_1413_Open_Image onclick="this.style.display='none'; Codehighlighter1_1147_1413_Open_Text.style.display='none'; Codehighlighter1_1147_1413_Closed_Image.style.display='inline'; Codehighlighter1_1147_1413_Closed_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><img id=Codehighlighter1_1147_1413_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_1147_1413_Closed_Text.style.display='none'; Codehighlighter1_1147_1413_Open_Image.style.display='inline'; Codehighlighter1_1147_1413_Open_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedSubBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span id=Codehighlighter1_1147_1413_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_1147_1413_Open_Text><span style="COLOR: #000000">{<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000">&nbsp;run()&nbsp;<br><img id=Codehighlighter1_1178_1407_Open_Image onclick="this.style.display='none'; Codehighlighter1_1178_1407_Open_Text.style.display='none'; Codehighlighter1_1178_1407_Closed_Image.style.display='inline'; Codehighlighter1_1178_1407_Closed_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><img id=Codehighlighter1_1178_1407_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_1178_1407_Closed_Text.style.display='none'; Codehighlighter1_1178_1407_Open_Image.style.display='inline'; Codehighlighter1_1178_1407_Open_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedSubBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span id=Codehighlighter1_1178_1407_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_1178_1407_Open_Text><span style="COLOR: #000000">{&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">long</span><span style="COLOR: #000000">&nbsp;time&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">(</span><span style="COLOR: #0000ff">long</span><span style="COLOR: #000000">)(Math.random()&nbsp;</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">1000</span><span style="COLOR: #000000">);<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">Sleeping&nbsp;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">&nbsp;time&nbsp;</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">ms</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">);<br><img id=Codehighlighter1_1286_1323_Open_Image onclick="this.style.display='none'; Codehighlighter1_1286_1323_Open_Text.style.display='none'; Codehighlighter1_1286_1323_Closed_Image.style.display='inline'; Codehighlighter1_1286_1323_Closed_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><img id=Codehighlighter1_1286_1323_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_1286_1323_Closed_Text.style.display='none'; Codehighlighter1_1286_1323_Open_Image.style.display='inline'; Codehighlighter1_1286_1323_Open_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedSubBlock.gif" align=top>&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: #0000ff">try</span><span style="COLOR: #000000">&nbsp;</span><span id=Codehighlighter1_1286_1323_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_1286_1323_Open_Text><span style="COLOR: #000000">{&nbsp;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&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;Thread.sleep(time);<br><img src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top>&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><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">catch</span><span style="COLOR: #000000">&nbsp;(InterruptedException&nbsp;e)<br><img id=Codehighlighter1_1363_1392_Open_Image onclick="this.style.display='none'; Codehighlighter1_1363_1392_Open_Text.style.display='none'; Codehighlighter1_1363_1392_Closed_Image.style.display='inline'; Codehighlighter1_1363_1392_Closed_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><img id=Codehighlighter1_1363_1392_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_1363_1392_Closed_Text.style.display='none'; Codehighlighter1_1363_1392_Open_Image.style.display='inline'; Codehighlighter1_1363_1392_Open_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedSubBlock.gif" align=top>&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 id=Codehighlighter1_1363_1392_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_1363_1392_Open_Text><span style="COLOR: #000000">{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top>&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><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="COLOR: #000000"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="COLOR: #000000">;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;exec.execute(run);&nbsp;&nbsp;&nbsp;&nbsp;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="COLOR: #000000"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;exec.shutdown();&nbsp;&nbsp;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="COLOR: #000000"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockEnd.gif" align=top>}</span></span></div>
<img src ="http://www.cppblog.com/newplan/aggbug/69361.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/newplan/" target="_blank">山泉弯延</a> 2008-12-13 19:04 <a href="http://www.cppblog.com/newplan/archive/2008/12/13/69361.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>C++智能指针的使用示例</title><link>http://www.cppblog.com/newplan/archive/2008/10/16/64194.html</link><dc:creator>山泉弯延</dc:creator><author>山泉弯延</author><pubDate>Thu, 16 Oct 2008 12:12:00 GMT</pubDate><guid>http://www.cppblog.com/newplan/archive/2008/10/16/64194.html</guid><wfw:comment>http://www.cppblog.com/newplan/comments/64194.html</wfw:comment><comments>http://www.cppblog.com/newplan/archive/2008/10/16/64194.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/newplan/comments/commentRss/64194.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/newplan/services/trackbacks/64194.html</trackback:ping><description><![CDATA[<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;"><br>#include&nbsp;</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">iostream</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;">String</span><span style="color: #000000;">&gt;</span><span style="color: #000000;"><br></span><span style="color: #0000ff;">using</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">namespace</span><span style="color: #000000;">&nbsp;std;<br></span><span style="color: #0000ff;">class</span><span style="color: #000000;">&nbsp;ia{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">public</span><span style="color: #000000;">:<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ia(</span><span style="color: #0000ff;">string</span><span style="color: #000000;">&nbsp;a){</span><span style="color: #0000ff;">this</span><span style="color: #000000;">-&gt;</span><span style="color: #000000;">a</span><span style="color: #000000;">=</span><span style="color: #000000;">a;}<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000;">~</span><span style="color: #000000;">ia(){cout</span><span style="color: #000000;">&lt;&lt;</span><span style="color: #000000;">"</span><span style="color: #000000;">~</span><span style="color: #000000;">"</span><span style="color: #000000;">&lt;&lt;</span><span style="color: #000000;">a</span><span style="color: #000000;">&lt;&lt;</span><span style="color: #000000;">endl;getchar();}<br>&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;&nbsp;&nbsp;</span><span style="color: #0000ff;">string</span><span style="color: #000000;">&nbsp;a;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;};<br></span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;main()<br>{<br>&nbsp;&nbsp;&nbsp;&nbsp;auto_ptr</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">ia</span><span style="color: #000000;">&gt;</span><span style="color: #000000;">&nbsp;ap(</span><span style="color: #0000ff;">new</span><span style="color: #000000;">&nbsp;ia(</span><span style="color: #000000;">"</span><span style="color: #000000;">newplan</span><span style="color: #000000;">"</span><span style="color: #000000;">));<br>&nbsp;&nbsp;&nbsp;&nbsp;ia&nbsp;</span><span style="color: #000000;">*</span><span style="color: #000000;">bp&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">new</span><span style="color: #000000;">&nbsp;ia(</span><span style="color: #000000;">"</span><span style="color: #000000;">zhaoziming</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;">1</span><span style="color: #000000;">;<br>}<br></span></div>
<br><img src ="http://www.cppblog.com/newplan/aggbug/64194.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/newplan/" target="_blank">山泉弯延</a> 2008-10-16 20:12 <a href="http://www.cppblog.com/newplan/archive/2008/10/16/64194.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>myshell.sh</title><link>http://www.cppblog.com/newplan/archive/2008/09/17/62018.html</link><dc:creator>山泉弯延</dc:creator><author>山泉弯延</author><pubDate>Tue, 16 Sep 2008 16:05:00 GMT</pubDate><guid>http://www.cppblog.com/newplan/archive/2008/09/17/62018.html</guid><wfw:comment>http://www.cppblog.com/newplan/comments/62018.html</wfw:comment><comments>http://www.cppblog.com/newplan/archive/2008/09/17/62018.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.cppblog.com/newplan/comments/commentRss/62018.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/newplan/services/trackbacks/62018.html</trackback:ping><description><![CDATA[/*<br>bash myshell.sh<br>*/<br>echo "doing jobs...."<br>yacc -d&nbsp; b3.y<br>lex&nbsp;&nbsp; b3.l<br>cc lex.yy.c&nbsp; y.tab.c -o b3<br>echo "jobs end."<br>
<img src ="http://www.cppblog.com/newplan/aggbug/62018.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/newplan/" target="_blank">山泉弯延</a> 2008-09-17 00:05 <a href="http://www.cppblog.com/newplan/archive/2008/09/17/62018.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>B3.L</title><link>http://www.cppblog.com/newplan/archive/2008/09/17/62017.html</link><dc:creator>山泉弯延</dc:creator><author>山泉弯延</author><pubDate>Tue, 16 Sep 2008 16:01:00 GMT</pubDate><guid>http://www.cppblog.com/newplan/archive/2008/09/17/62017.html</guid><wfw:comment>http://www.cppblog.com/newplan/comments/62017.html</wfw:comment><comments>http://www.cppblog.com/newplan/archive/2008/09/17/62017.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/newplan/comments/commentRss/62017.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/newplan/services/trackbacks/62017.html</trackback:ping><description><![CDATA[<p>/*<br>编译原理实验3<br>B3.L<br>*/<br>%{<br>#include"y.tab.h"<br>#include&lt;string.h&gt;<br>extern FILE * yyin;<br>extern FILE * yyout;<br>extern int yylineno;<br>%}</p>
<p>delim&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; [&nbsp; \t]<br>ws&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {delim}+<br>letter&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; [A-Za-z]<br>digit&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; [0-9]<br>id&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {letter}({letter}|{digit})*<br>number&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {digit}+<br>addop&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; [+-]<br>mulop&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; [*/]<br>%%<br>\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {yylineno++;}<br>{ws}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {/*d*/}<br>while&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {return WHILE;}<br>do&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {return DO;}<br>if&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {return IF;}<br>else&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {return ELSE;}<br>for&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {return FOR;}<br>int&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {return INT;}<br>char&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {return CHAR;}<br>void&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {return VOID;}<br>return&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {return RETURN;}<br>\'[a-zA-Z0-9]\'&nbsp;&nbsp;&nbsp; {strcpy(yylval._ident,yytext);return CONST_CHAR;}<br>\"[a-zA-Z]+\" {strcpy(yylval._ident,yytext);return STRING;}<br>{id}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {strcpy(yylval._ident,yytext);return ID;}<br>{number}&nbsp;&nbsp;&nbsp;&nbsp; {strcpy(yylval._ident,yytext);return NUM;} <br>"["&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {return '[';}<br>"]"&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {return ']';}<br>"&lt;"&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {return LT;}<br>"="&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {return '=';}<br>"&gt;"&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {return GT;}<br>"&lt;="&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {return LE;}<br>"&gt;="&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {return GE;}<br>"!="&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {return NE;}<br>"=="&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {return EQ;}<br>{addop}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {yylval._op=yytext[0]; return ADDOP;}<br>{mulop}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {yylval._op=yytext[0]; return MULOP;}<br>";"&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {return ';';}<br>"{"&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {return '{';}<br>"}"&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {return '}';} <br>"("&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {return '(';}<br>")"&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {return ')';}<br>","&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {return ',';}<br>%%<br>int yywrap(){<br>&nbsp;&nbsp; return 1;<br>}<br></p>
<img src ="http://www.cppblog.com/newplan/aggbug/62017.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/newplan/" target="_blank">山泉弯延</a> 2008-09-17 00:01 <a href="http://www.cppblog.com/newplan/archive/2008/09/17/62017.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>B3.Y</title><link>http://www.cppblog.com/newplan/archive/2008/09/17/62016.html</link><dc:creator>山泉弯延</dc:creator><author>山泉弯延</author><pubDate>Tue, 16 Sep 2008 16:00:00 GMT</pubDate><guid>http://www.cppblog.com/newplan/archive/2008/09/17/62016.html</guid><wfw:comment>http://www.cppblog.com/newplan/comments/62016.html</wfw:comment><comments>http://www.cppblog.com/newplan/archive/2008/09/17/62016.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/newplan/comments/commentRss/62016.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/newplan/services/trackbacks/62016.html</trackback:ping><description><![CDATA[<p>/*<br>编译原理实验三实验代码<br>B3.Y<br>newplan<br>08-09-16<br>*/<br>%{<br>/*-----------head file---------*/<br>#include &lt;ctype.h&gt;<br>#include &lt;string.h&gt;<br>#include &lt;stdio.h&gt;<br>#include &lt;stdlib.h&gt;<br>#include &lt;assert.h&gt;<br>/*-----------macros------------*/<br>#define&nbsp; HASHSIZE&nbsp; 128<br>#define _INT&nbsp; 34<br>#define _CHAR 35<br>#define _VOID 36<br>#define _STRING 37<br>#define _FUNC_TYPE 38<br>#define _ERROR 39<br>extern&nbsp; int yylex();<br>extern&nbsp; FILE*&nbsp; yyin;<br>extern&nbsp; FILE*&nbsp; yyout;<br>int&nbsp;&nbsp;&nbsp;&nbsp; yylineno;</p>
<p>typedef struct {<br>int a[5];<br>int n;<br>int h;<br>int ret_type;<br>}param;<br>/*&#182;&#168;&#210;&#229;&#177;&#234;&#202;&#182;&#183;&#251;*/<br>typedef struct {<br>char name[10];<br>int&nbsp; scope;/*&#203;&#249;&#212;&#218;&#181;&#196;&#178;&#227;&#180;&#206;*/<br>int&nbsp; type;/*&#177;&#234;&#202;&#182;&#183;&#251;&#192;&#224;&#208;&#205;*/<br>param&nbsp; *p;<br>}symbol;</p>
<p>/*&#182;&#168;&#210;&#229;hash&#205;&#176;*/<br>struct sym_entry{<br>symbol sym;<br>struct sym_entry&nbsp; *next ;<br>};</p>
<p>/*&#182;&#168;&#210;&#229;hash&#193;&#180;&#177;&#237;*/<br>struct table {<br>int level ;<br>struct table *previous;<br>struct&nbsp; sym_entry&nbsp; *buckets[HASHSIZE] ;<br>};</p>
<p>int&nbsp;&nbsp;&nbsp; table_len = 0;/*&#211;&#208;&#182;&#224;&#201;&#217;&#184;&#246;&#177;&#237;*/<br>struct table *table_stack[100];/*&#177;&#237;&#213;&#187;*/<br>struct table *global_table ;/*&#200;&#171;&#190;&#214;&#177;&#237;&#214;&#184;&#213;&#235;*/<br>param&nbsp; *global_func_p;<br>int&nbsp;&nbsp;&nbsp; level&nbsp; = 0 ;/*&#200;&#171;&#190;&#214;&#178;&#227;&#180;&#206;&#201;&#232;&#214;&#195;&#206;&#170; 0 */<br>int&nbsp;&nbsp;&nbsp; error&nbsp; = 0;<br>int&nbsp;&nbsp;&nbsp; trace&nbsp; = 0;</p>
<p>/*hash &#186;&#175;&#202;&#253;*/<br>int hash(char *s)<br>{<br>&nbsp; char *p ;<br>&nbsp; unsigned h = 0,g=0;<br>&nbsp; for(p=s ;*p != '\0' ;p++)<br>&nbsp;&nbsp; {<br>&nbsp;&nbsp; h=(h&lt;&lt;4)+(*p) ;</p>
<p>&nbsp;&nbsp; if(g=h &amp; 0xf0000000)<br>&nbsp;&nbsp; {<br>&nbsp;&nbsp; h=h^(g&gt;&gt;24);<br>&nbsp;&nbsp; h=h^g;<br>&nbsp;&nbsp; }<br>&nbsp;&nbsp; }<br>&nbsp; return h%128;<br>}<br>/*----------------&#178;&#233;&#213;&#210;&#183;&#251;&#186;&#197;&#177;&#237;------------------*/<br>symbol *lookupall(char *name,struct table *tp)<br>{<br>&nbsp; int&nbsp; h =hash(name);<br>&nbsp; struct sym_entry *p = NULL;<br>&nbsp; int tag=0;<br>&nbsp; do<br>&nbsp; {<br>&nbsp;&nbsp; if(tp-&gt;level ==level &amp;&amp; tag &gt;0 )continue;<br>&nbsp;&nbsp; for(p = tp-&gt;buckets[h];p;p=p-&gt;next)<br>&nbsp;&nbsp; if(!strcmp(name,p-&gt;sym.name)) return &amp;p-&gt;sym ;<br>&nbsp;&nbsp; tag = 1 ;<br>&nbsp; }<br>&nbsp; while(tp=tp-&gt;previous);<br>&nbsp; return&nbsp; NULL;<br>}<br>/*---------------------------------------------*/<br>symbol *lookup(char *name,struct table *tp)<br>{<br>int h= hash(name);<br>struct sym_entry *p =NULL;<br>for(p = tp-&gt;buckets[h];p;p = p-&gt;next)<br>&nbsp;&nbsp; if(!strcmp(name,p-&gt;sym.name)){return&nbsp; &amp;p-&gt;sym ;}</p>
<p>return&nbsp; NULL;<br>}</p>
<p>/*---------------&#180;&#180;&#189;&#168;&#210;&#187;&#184;&#246;&#183;&#251;&#186;&#197;&#177;&#237;----------------*/<br>struct table * mktable(struct table *previous ,int level)<br>{<br>struct table *new =(struct table *)malloc(sizeof *new);<br>new-&gt;previous = previous ;<br>new-&gt;level = level ;<br>int&nbsp; i;<br>for(i= 0; i&lt;HASHSIZE ;i++)new-&gt;buckets[i]=0;<br>return new;<br>}</p>
<p><br>/*---------------&#178;&#229;&#200;&#235;&#210;&#187;&#184;&#246;&#177;&#234;&#202;&#182;&#183;&#251;----------------*/<br>symbol *insert(char *name,struct table *tpp)<br>{<br>int h = hash(name);<br>struct&nbsp; table *tp = tpp;<br>struct&nbsp; sym_entry *p =(struct sym_entry *)malloc(sizeof *p);<br>if(tp-&gt;level&lt;level)<br>{<br>tp =(struct table *)mktable(tp,level);<br>table_stack[table_len] = tp ;<br>table_len ++;<br>}<br>strcpy(p-&gt;sym.name,name);<br>p-&gt;sym.scope= level;<br>p-&gt;sym.type = 0;<br>p-&gt;next = tp-&gt;buckets[h];<br>tp-&gt;buckets[h]=p;<br>return&nbsp; &amp;p-&gt;sym ;<br>}</p>
<p>%}<br>%start program<br>%right '='<br>%left ADDOP <br>%left '*' '/'<br>%left LE LT GT GE EQ NE <br>%union {char _ident[9]; int value;char _op;};<br>%token &lt;_ident&gt; ID&nbsp; <br>%token NUM<br>%token &lt;_ident&gt; STRING <br>%token IF<br>%token ELSE<br>%token WHILE<br>%token INT<br>%token CHAR<br>%token &lt;_ident&gt; CONST_CHAR<br>%token VOID<br>%token RETURN<br>%token FOR<br>%token DO<br>%token &lt;_op&gt;&nbsp;&nbsp;&nbsp;&nbsp; ADDOP<br>%type&nbsp; &lt;value&gt;&nbsp;&nbsp; type_specifer <br>%type&nbsp; &lt;value&gt;&nbsp;&nbsp; var<br>%type&nbsp; &lt;value&gt;&nbsp;&nbsp; factor<br>%type&nbsp; &lt;value&gt;&nbsp;&nbsp; term<br>%type&nbsp; &lt;value&gt;&nbsp;&nbsp; additive_expression<br>%type&nbsp; &lt;value&gt;&nbsp;&nbsp; simple_expression<br>%type&nbsp; &lt;value&gt;&nbsp;&nbsp; expression<br>%type&nbsp; &lt;value&gt;&nbsp;&nbsp; arg_list<br>%token&nbsp; &lt;_op&gt;&nbsp;&nbsp;&nbsp; MULOP<br>%nonassoc IFX<br>%nonassoc ELSE<br>%%<br>program&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; :&nbsp; M&nbsp;&nbsp;&nbsp; declaration_list {if(1 == trace)printf("program ==&gt; M declaration_list.\n");if(error == 0 ) fprintf(yyout,"no error\n");}<br>&nbsp;&nbsp;;<br>M&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; global_table = mktable(NULL,0);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; table_stack[table_len] = global_table ;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; table_len++;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ;<br>declaration_list: declaration_list declaration<br>{<br>&nbsp;if(trace == 1) fprintf(yyout,"declaration_list ==&gt; declaration_list&nbsp; declaration.\n");<br>}<br>&nbsp;&nbsp;| declaration <br>{<br>&nbsp;if(trace == 1) fprintf(yyout,"declaration_list ==&gt; declaration.\n");<br>}<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ;<br>declaration&nbsp;&nbsp;&nbsp;&nbsp; :var_declaration<br>{<br>if (trace ==1) fprintf(yyout,"declaration ==&gt; var_declaration.\n");<br>}<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |fun_declaration<br>{<br>if (trace ==1) fprintf(yyout,"declaration ==&gt; fun_declaration.\n");<br>}<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ;<br>var_declaration :type_specifer ID ';' <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(trace == 1) printf("var_declaration ==&gt;type_specifer ID.\n");<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; struct table *tp = table_stack[table_len-1]; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(lookup($2,tp) == NULL)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; { <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; symbol *p = insert($2,tp);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; p-&gt;type = $1 ;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; else {error = 1 ; fprintf(yyout, "line %d:error:%s:redefinition\n ",yylineno,$2);}<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |type_specifer ID '[' NUM ']' ';'<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ;<br>type_specifer&nbsp;&nbsp; :INT {$$ =_INT ;}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |CHAR {$$ = _CHAR;}<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |VOID {$$ =_VOID ;}<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ;<br>fun_declaration :type_specifer&nbsp; fun_tag '('&nbsp; LL&nbsp; params ')' compound_stmt {level--;}<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |type_specifer&nbsp; fun_tag '('&nbsp; LL&nbsp; params ')' ';'{level--;}<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ;<br>fun_tag&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : ID <br>{ <br>&nbsp; struct table *tp = table_stack[table_len-1];<br>&nbsp; symbol *tmp ;<br>&nbsp; tmp = lookupall($1,tp);<br>&nbsp; if(tmp == NULL)<br>&nbsp; {tmp =insert($1,tp);<br>&nbsp;&nbsp; global_func_p = tmp-&gt;p = (param *)malloc(sizeof(*tmp-&gt;p));<br>&nbsp;&nbsp; global_func_p-&gt;n =0 ;<br>&nbsp;&nbsp; global_func_p-&gt;ret_type = _INT ; <br>&nbsp;&nbsp; tmp-&gt;type =_FUNC_TYPE;<br>&nbsp; }<br>&nbsp; else<br>&nbsp; {error = 1 ; fprintf(yyout,"line %d:error %s redefine of function.\n",yylineno,$1);}<br>}<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ;<br>LL:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {level++;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; struct table *tp = mktable(table_stack[table_len-1],level);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; table_stack[table_len]=tp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; table_len++;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(1==trace)printf("level = %d \n",level);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ;<br>params&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; :param_list <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |VOID{global_func_p-&gt;n = 0; if(1 == trace)printf("params==&gt;void\n");} <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ;<br>param_list&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; :param_list ',' param {if(1 ==trace )printf("param_list ==&gt; param_list , param.\n");}<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |param<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ;<br>param&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; :type_specifer ID <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; struct table *tp =table_stack[table_len-1];<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; symbol *p =insert($2,tp);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; p-&gt;type =$1;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; global_func_p-&gt;a[global_func_p-&gt;n++]= $1 ; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //&nbsp;&nbsp; printf("type[%d]=%d\n",global_func_p-&gt;n-1,global_func_p-&gt;a[global_func_p-&gt;n-1]);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ;<br>compound_stmt&nbsp;&nbsp; :'{' local_declarations statement_list '}'<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ;<br>local_declarations:&nbsp; local_declarations var_declaration{if(1 ==trace )printf("local_declarations ==&gt;loacal_declarations var_declaration\n");}<br>&nbsp;&nbsp;|{if(1 == trace )printf("local_declarations ==&gt;&nbsp; .\n");}<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ;<br>statement_list&nbsp; :statement_list statement<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |{}<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ;<br>statement&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; :expression_stmt{if(1 == trace )printf("statement ==&gt; expression_stmt.\n");}<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |if_stmt<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |compound_stmt<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |while_stmt<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |return_stmt&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>;<br>expression_stmt :expression ';'<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |';'<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ;<br>if_stmt&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; :IF '(' expression ')' statement %prec IFX {if(1== trace)printf("if_stmt ==&gt; if expression statement .\n");}<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |IF '(' expression ')' statement ELSE statement<br>{if(1==trace )printf("if_Stmt ==&gt; if expression statement else statement.\n");}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ;<br>while_stmt&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; :WHILE '(' expression ')' statement<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ;<br>return_stmt&nbsp;&nbsp;&nbsp;&nbsp; :RETURN ';'<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |RETURN expression ';'<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ;<br>expression&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; :var '=' expression{if($1 != $3){error =1 ;printf("line %d:&nbsp; '='&nbsp; must be same type.\n",yylineno);}if(1 == trace )printf("expression ==&gt;var = expression.\n");}<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |simple_expression {$$&nbsp; ==&nbsp; $1 ;}<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ;<br>var&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; :ID {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; symbol *p = lookupall($1,table_stack[table_len-1]);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(NULL==p){$$ = _ERROR ;error =1 ;fprintf(yyout,"line %d undeclared identifier %s\n",yylineno,$1);}<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; else<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $$ =p-&gt;type ; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ;<br>simple_expression:additive_expression relop additive_expression{if($1==_INT &amp;&amp; $3 ==_INT || $1 ==_CHAR &amp;&amp; $3 == _CHAR){;}else{ error =1 ;printf("line %d :relop must int int or char char.\n",yylineno);}}<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |additive_expression{$$ =$1 ;}<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ;<br>relop&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; :LE<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |LT<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |GT<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |GE<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |EQ<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |NE<br>;<br>additive_expression:additive_expression ADDOP term {if($1 == _INT &amp;&amp; $3 ==_INT){;}else{error =1 ;printf("line%d :addop must int int .\n",yylineno);}if(1==trace)printf("additive_expression ==&gt;additive_expression ADDOP term.\n");}<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |term{$$ = $1 ;}<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ;<br>term&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; :term MULOP factor {if($1==_INT &amp;&amp; $3 ==_INT ){;}else{error = 1 ;printf("\nline%d :mulop must int int.\n",yylineno);}}<br>&nbsp;&nbsp;|factor {$$ =$1;}<br>&nbsp;&nbsp;;<br>factor&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; :'(' expression ')'<br>&nbsp;&nbsp;|var {$$ = $1;}<br>&nbsp;&nbsp;|call{if(global_func_p){$$=global_func_p-&gt;ret_type;}}<br>&nbsp;&nbsp;|NUM {$$ = _INT;}<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |STRING {$$ =_STRING;}<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |CONST_CHAR {$$ = _CHAR ;}<br>&nbsp;&nbsp;;<br>call&nbsp;&nbsp;:ID { symbol *tmp =lookupall($1,table_stack[table_len-1]);if(NULL ==tmp||tmp-&gt;type!=_FUNC_TYPE){error =1;printf("line%d :undeclared identifier %s.\n",yylineno,$1);}else {global_func_p = tmp-&gt;p;global_func_p-&gt;h = 0;}<br>} '(' args ')' {if(1 == trace )printf("call ==&gt; ID args .\n");}<br>&nbsp;&nbsp;;<br>args&nbsp;&nbsp;:arg_list{if(global_func_p-&gt;n &gt; global_func_p-&gt;h){error=1;printf("line%d :param num error.\n",yylineno);}}<br>&nbsp;&nbsp;|{if(global_func_p-&gt;n != 0){error =1 ;printf("line%d :param error.\n",yylineno);}}<br>&nbsp;&nbsp;;<br>arg_list&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; :arg_list ',' expression{if(global_func_p-&gt;n&lt;=global_func_p-&gt;h){error=1 ;printf("line%d :param num error.\n",yylineno);}else if(global_func_p-&gt;a[global_func_p-&gt;h]!=$3){error =1 ;printf("line%d :param error %d.\n",yylineno,$3);}else{global_func_p-&gt;h++;}}<br>&nbsp;&nbsp;|expression {$$ =$1 ; if(global_func_p-&gt;a[global_func_p-&gt;h]!=$1){error =1 ;printf("line%d :param error $1=%d.\n",yylineno,$1);}else{global_func_p-&gt;h++;}}</p>
<p>&nbsp;&nbsp;;</p>
<p>%%<br>int main(int argc,char *argv[])<br>{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; printf("start checking...\n");<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; yylineno=1;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(argc==3)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br>&nbsp;&nbsp;yyin=fopen(argv[1],"r");<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;yyout=fopen(argv[2],"w");<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; else if(argc==2)<br>&nbsp;{&nbsp;yyin=fopen(argv[1],"r");<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; yyout = stdout ; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; } <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; yyparse();<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return 0;<br>}<br>int yyerror(char *string)<br>{<br>&nbsp;&nbsp;&nbsp;&nbsp; printf("error:%s in line %d\n",string,yylineno);<br>&nbsp;&nbsp;&nbsp;&nbsp; return 0;<br>} <br></p>
<img src ="http://www.cppblog.com/newplan/aggbug/62016.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/newplan/" target="_blank">山泉弯延</a> 2008-09-17 00:00 <a href="http://www.cppblog.com/newplan/archive/2008/09/17/62016.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>数值分析方阵的QR分解</title><link>http://www.cppblog.com/newplan/archive/2008/06/24/54439.html</link><dc:creator>山泉弯延</dc:creator><author>山泉弯延</author><pubDate>Tue, 24 Jun 2008 02:52:00 GMT</pubDate><guid>http://www.cppblog.com/newplan/archive/2008/06/24/54439.html</guid><wfw:comment>http://www.cppblog.com/newplan/comments/54439.html</wfw:comment><comments>http://www.cppblog.com/newplan/archive/2008/06/24/54439.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/newplan/comments/commentRss/54439.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/newplan/services/trackbacks/54439.html</trackback:ping><description><![CDATA[<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: #0000ff;">function</span><span style="color: #000000;">[]</span><span style="color: #000000;">=</span><span style="color: #000000;">iqr()<br>%&nbsp;实验名称：方阵的QR分解<br>%&nbsp;实验描述：先将方阵化为上海申博格阵，再用QR分解法求上海申博格阵的特征值,则所得到的特征值也是方阵的特征值<br>% 作者:newplan<br></span><span style="color: #000000;">%&nbsp;实验完成日期：6月10号<br>%下面的A为测试三阶的方阵<br>A</span><span style="color: #000000;">=</span><span style="color: #000000;">[</span><span style="color: #000000;">5</span><span style="color: #000000;">,</span><span style="color: #000000;">-</span><span style="color: #000000;">3</span><span style="color: #000000;">,</span><span style="color: #000000;">2</span><span style="color: #000000;">;</span><span style="color: #000000;">6</span><span style="color: #000000;">,</span><span style="color: #000000;">-</span><span style="color: #000000;">4</span><span style="color: #000000;">,</span><span style="color: #000000;">4</span><span style="color: #000000;">;</span><span style="color: #000000;">4</span><span style="color: #000000;">,</span><span style="color: #000000;">-</span><span style="color: #000000;">4</span><span style="color: #000000;">,</span><span style="color: #000000;">5</span><span style="color: #000000;">]<br>%下面的A为测试四阶的方阵<br>%A&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;[</span><span style="color: #000000;">1</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">2</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">1</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">2</span><span style="color: #000000;">;</span><span style="color: #000000;">2</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">2</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">-</span><span style="color: #000000;">1</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">1</span><span style="color: #000000;">;</span><span style="color: #000000;">1</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">-</span><span style="color: #000000;">1</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">1</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">1</span><span style="color: #000000;">;</span><span style="color: #000000;">2</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">1</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">1</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">1</span><span style="color: #000000;">]<br>%通过调用malab的自带的函数求得A的所有特征值和特征向量<br>%特征值保存在v中，特征向量保存的在d中,将其打印出来和我们的算法算出来的特征值进行对比<br>[v,d]</span><span style="color: #000000;">=</span><span style="color: #000000;">eig(A)<br>%求出行和列的大小<br>msize</span><span style="color: #000000;">=</span><span style="color: #000000;">size(A);<br>%取得矩阵的列数，其实行数和列数都为n<br>n</span><span style="color: #000000;">=</span><span style="color: #000000;">msize(</span><span style="color: #000000;">1</span><span style="color: #000000;">);<br>%生成n阶单位阵<br>Q</span><span style="color: #000000;">=</span><span style="color: #000000;">eye(n);<br>%用household的方法求矩阵A的上海森伯格阵<br></span><span style="color: #0000ff;">for</span><span style="color: #000000;">&nbsp;i</span><span style="color: #000000;">=</span><span style="color: #000000;">1</span><span style="color: #000000;">:n</span><span style="color: #000000;">-</span><span style="color: #000000;">2</span><span style="color: #000000;">%从第一列开始到倒数第三列&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;%求出每一列的最大值<br>&nbsp;&nbsp;&nbsp;&nbsp;d</span><span style="color: #000000;">=</span><span style="color: #000000;">max(</span><span style="color: #0000ff;">abs</span><span style="color: #000000;">(A(i</span><span style="color: #000000;">+</span><span style="color: #000000;">1</span><span style="color: #000000;">:n,i)));<br>&nbsp;&nbsp;&nbsp;&nbsp;%规范化<br>&nbsp;&nbsp;&nbsp;&nbsp;U(i</span><span style="color: #000000;">+</span><span style="color: #000000;">1</span><span style="color: #000000;">:n,i)</span><span style="color: #000000;">=</span><span style="color: #000000;">A(i</span><span style="color: #000000;">+</span><span style="color: #000000;">1</span><span style="color: #000000;">:n,i)</span><span style="color: #000000;">/</span><span style="color: #000000;">d;<br>&nbsp;&nbsp;&nbsp;&nbsp;delta</span><span style="color: #000000;">=</span><span style="color: #000000;">U(i</span><span style="color: #000000;">+</span><span style="color: #000000;">1</span><span style="color: #000000;">,i)</span><span style="color: #000000;">*</span><span style="color: #000000;">norm(U(i</span><span style="color: #000000;">+</span><span style="color: #000000;">1</span><span style="color: #000000;">:n,i))</span><span style="color: #000000;">/</span><span style="color: #0000ff;">abs</span><span style="color: #000000;">(U(i</span><span style="color: #000000;">+</span><span style="color: #000000;">1</span><span style="color: #000000;">,i));<br>&nbsp;&nbsp;&nbsp;&nbsp;U(i</span><span style="color: #000000;">+</span><span style="color: #000000;">1</span><span style="color: #000000;">,i)</span><span style="color: #000000;">=</span><span style="color: #000000;">U(i</span><span style="color: #000000;">+</span><span style="color: #000000;">1</span><span style="color: #000000;">,i)</span><span style="color: #000000;">+</span><span style="color: #000000;">delta;<br>&nbsp;&nbsp;&nbsp;&nbsp;beta&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;delta</span><span style="color: #000000;">*</span><span style="color: #000000;">U(i</span><span style="color: #000000;">+</span><span style="color: #000000;">1</span><span style="color: #000000;">,i);<br>&nbsp;&nbsp;&nbsp;&nbsp;%求出R矩阵根据课本316P例题三&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;R&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;eye(n</span><span style="color: #000000;">-</span><span style="color: #000000;">i,n</span><span style="color: #000000;">-</span><span style="color: #000000;">i)</span><span style="color: #000000;">-</span><span style="color: #000000;">inv(beta)</span><span style="color: #000000;">*</span><span style="color: #000000;">U(i</span><span style="color: #000000;">+</span><span style="color: #000000;">1</span><span style="color: #000000;">:n,i)</span><span style="color: #000000;">*</span><span style="color: #000000;">U(i</span><span style="color: #000000;">+</span><span style="color: #000000;">1</span><span style="color: #000000;">:n,i)</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;u</span><span style="color: #000000;">=</span><span style="color: #000000;">eye(n,n);<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">for</span><span style="color: #000000;">&nbsp;j&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">i</span><span style="color: #000000;">+</span><span style="color: #000000;">1</span><span style="color: #000000;">:n<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">for</span><span style="color: #000000;">&nbsp;k&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">i</span><span style="color: #000000;">+</span><span style="color: #000000;">1</span><span style="color: #000000;">:n<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;u(j,k)</span><span style="color: #000000;">=</span><span style="color: #000000;">R(j</span><span style="color: #000000;">-</span><span style="color: #000000;">i,k</span><span style="color: #000000;">-</span><span style="color: #000000;">i);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">end</span><span style="color: #000000;"><br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">end</span><span style="color: #000000;"><br>&nbsp;&nbsp;&nbsp;&nbsp;A</span><span style="color: #000000;">=</span><span style="color: #000000;">u</span><span style="color: #000000;">*</span><span style="color: #000000;">A</span><span style="color: #000000;">*</span><span style="color: #000000;">u;%生成新的A</span><span style="color: #000000;">=</span><span style="color: #000000;">u&#215;A&#215;u<br></span><span style="color: #0000ff;">end</span><span style="color: #000000;"><br>%error为我们设定的误差限制<br></span><span style="color: #0000ff;">error</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">0.0000001</span><span style="color: #000000;">;<br>%flag为判断QR法是否继续进行的标志位<br>flag&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">1</span><span style="color: #000000;">;<br></span><span style="color: #0000ff;">while</span><span style="color: #000000;">&nbsp;flag</span><span style="color: #000000;">==</span><span style="color: #000000;">1</span><span style="color: #000000;"><br>flag&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">0</span><span style="color: #000000;">&nbsp;;<br>R&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">A;<br>Q&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;eye(n,n);<br>%按照QR分解法求出cos，</span><span style="color: #0000ff;">sin</span><span style="color: #000000;">&nbsp;然后计算V，最终得到R和Q<br></span><span style="color: #0000ff;">for</span><span style="color: #000000;">&nbsp;i</span><span style="color: #000000;">=</span><span style="color: #000000;">1</span><span style="color: #000000;">:n</span><span style="color: #000000;">-</span><span style="color: #000000;">1</span><span style="color: #000000;"><br>&nbsp;&nbsp;r&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;norm(R(i:i</span><span style="color: #000000;">+</span><span style="color: #000000;">1</span><span style="color: #000000;">,i));<br>&nbsp;&nbsp;icos</span><span style="color: #000000;">=</span><span style="color: #000000;">R(i,i)</span><span style="color: #000000;">/</span><span style="color: #000000;">r;<br>&nbsp;&nbsp;isin</span><span style="color: #000000;">=</span><span style="color: #000000;">R(i</span><span style="color: #000000;">+</span><span style="color: #000000;">1</span><span style="color: #000000;">,i)</span><span style="color: #000000;">/</span><span style="color: #000000;">r;<br>&nbsp;&nbsp;v</span><span style="color: #000000;">=</span><span style="color: #000000;">eye(n,n);<br>&nbsp;&nbsp;v(i,i)</span><span style="color: #000000;">=</span><span style="color: #000000;">icos;<br>&nbsp;&nbsp;v(i</span><span style="color: #000000;">+</span><span style="color: #000000;">1</span><span style="color: #000000;">,i</span><span style="color: #000000;">+</span><span style="color: #000000;">1</span><span style="color: #000000;">)</span><span style="color: #000000;">=</span><span style="color: #000000;">icos;<br>&nbsp;&nbsp;v(i,i</span><span style="color: #000000;">+</span><span style="color: #000000;">1</span><span style="color: #000000;">)</span><span style="color: #000000;">=</span><span style="color: #000000;">isin;<br>&nbsp;&nbsp;v(i</span><span style="color: #000000;">+</span><span style="color: #000000;">1</span><span style="color: #000000;">,i)</span><span style="color: #000000;">=-</span><span style="color: #000000;">isin;<br>&nbsp;&nbsp;R</span><span style="color: #000000;">=</span><span style="color: #000000;">v</span><span style="color: #000000;">*</span><span style="color: #000000;">R;<br>&nbsp;&nbsp;Q</span><span style="color: #000000;">=</span><span style="color: #000000;">Q</span><span style="color: #000000;">*</span><span style="color: #000000;">v</span><span style="color: #008000;">'</span><span style="color: #008000;">;</span><span style="color: #008000;"><br></span><span style="color: #0000ff;">end</span><span style="color: #000000;"><br>%用R</span><span style="color: #000000;">*</span><span style="color: #000000;">Q的结果去替换A<br>A&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">R</span><span style="color: #000000;">*</span><span style="color: #000000;">Q;<br>%下面这个循环检测A的精度时候足够，去看A的次对角线各个元素的绝对值是否小于误差限制<br></span><span style="color: #0000ff;">for</span><span style="color: #000000;">&nbsp;w&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">2</span><span style="color: #000000;">:n<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">abs</span><span style="color: #000000;">(A(w,w</span><span style="color: #000000;">-</span><span style="color: #000000;">1</span><span style="color: #000000;">))</span><span style="color: #000000;">&gt;</span><span style="color: #0000ff;">error</span><span style="color: #000000;"><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;flag&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">1</span><span style="color: #000000;">&nbsp;;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;break;%若有其中一个元素的绝对值还是大于误差限制则还要继续进行QR分解<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">end</span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;<br></span><span style="color: #0000ff;">end</span><span style="color: #000000;"><br>%判断的过程完毕<br></span><span style="color: #0000ff;">end</span><span style="color: #000000;"><br>%把A打印出来<br>A<br><br><br></span></div>
<br><img src ="http://www.cppblog.com/newplan/aggbug/54439.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/newplan/" target="_blank">山泉弯延</a> 2008-06-24 10:52 <a href="http://www.cppblog.com/newplan/archive/2008/06/24/54439.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>算法  实验 4 </title><link>http://www.cppblog.com/newplan/archive/2008/06/10/52801.html</link><dc:creator>山泉弯延</dc:creator><author>山泉弯延</author><pubDate>Tue, 10 Jun 2008 13:47:00 GMT</pubDate><guid>http://www.cppblog.com/newplan/archive/2008/06/10/52801.html</guid><wfw:comment>http://www.cppblog.com/newplan/comments/52801.html</wfw:comment><comments>http://www.cppblog.com/newplan/archive/2008/06/10/52801.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/newplan/comments/commentRss/52801.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/newplan/services/trackbacks/52801.html</trackback:ping><description><![CDATA[<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;">/*</span><span style="color: #000000;"><br></span><span style="color: #000000;">6.10</span><span style="color: #000000;"><br></span><span style="color: #000000;">*/</span><span style="color: #000000;"><br></span><span style="color: #000000;">/*==========</span><span style="color: #000000;">INCLUDES&nbsp;BEGIN</span><span style="color: #000000;">===============*/</span><span style="color: #000000;">&nbsp;<br>#include&nbsp;</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">cstdlib</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;">iostream</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;">fstream</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;">algorithm</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;">QApplication</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;">QWidget</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;">QPainter</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;">Qt</span><span style="color: #000000;">&gt;</span><span style="color: #000000;"><br><br></span><span style="color: #000000;">/*==========</span><span style="color: #000000;">INCLUDE&nbsp;</span><span style="color: #0000ff;">END</span><span style="color: #000000;">==================*/</span><span style="color: #000000;">&nbsp;<br><br></span><span style="color: #000000;">/*==========</span><span style="color: #000000;">MACROS&nbsp;BEGIN</span><span style="color: #000000;">=================*/</span><span style="color: #000000;"><br>#define&nbsp;&nbsp;MAX&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000;">100000000</span><span style="color: #000000;"><br>#define&nbsp;&nbsp;BUFFER&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000;">300</span><span style="color: #000000;"><br>#define&nbsp;&nbsp;INPUTFILE&nbsp;&nbsp;</span><span style="color: #000000;">"</span><span style="color: #000000;">./50.txt</span><span style="color: #000000;">"</span><span style="color: #000000;"><br></span><span style="color: #000000;">/*==========</span><span style="color: #000000;">MACROS&nbsp;&nbsp;</span><span style="color: #0000ff;">END</span><span style="color: #000000;">==================*/</span><span style="color: #000000;"><br><br></span><span style="color: #000000;">/*==========</span><span style="color: #000000;">STD&nbsp;DECLRARS&nbsp;BEGIN</span><span style="color: #000000;">===========*/</span><span style="color: #000000;"><br>using&nbsp;std::cout;<br>using&nbsp;std::cin;<br>using&nbsp;std::endl;<br>using&nbsp;std::ios;<br>using&nbsp;std::ifstream;<br>using&nbsp;std::sort;<br>using&nbsp;std::max;<br></span><span style="color: #000000;">/*==========</span><span style="color: #000000;">STD&nbsp;DECLARS&nbsp;</span><span style="color: #0000ff;">END</span><span style="color: #000000;">===============*/</span><span style="color: #000000;"><br><br></span><span style="color: #000000;">/*============</span><span style="color: #000000;">STRUCTS&nbsp;BRGIN</span><span style="color: #000000;">===============*/</span><span style="color: #000000;">&nbsp;<br>struct&nbsp;</span><span style="color: #0000ff;">Space</span><span style="color: #000000;">&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;x;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;y;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;w;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;h;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;bool&nbsp;v;</span><span style="color: #000000;">//</span><span style="color: #0000ff;">IF</span><span style="color: #000000;">&nbsp;VISITED&nbsp;</span><span style="color: #0000ff;">THEN</span><span style="color: #000000;">&nbsp;V&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">TURE&nbsp;</span><span style="color: #0000ff;">ELSE</span><span style="color: #000000;">&nbsp;FLASE<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;};<br>struct&nbsp;Gadget<br>{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;x;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;y;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;w;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;h;<br>};<br></span><span style="color: #000000;">/*=============</span><span style="color: #000000;">STRUCT&nbsp;</span><span style="color: #0000ff;">END</span><span style="color: #000000;">=================*/</span><span style="color: #000000;"><br><br><br><br></span><span style="color: #000000;">/*===========</span><span style="color: #000000;">GADGET&nbsp;CUT&nbsp;BEGIN</span><span style="color: #000000;">=============*/</span><span style="color: #000000;">&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Gadget&nbsp;&nbsp;result[BUFFER];<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Gadget&nbsp;&nbsp;g[BUFFER];<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;bestH;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">Space</span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">space</span><span style="color: #000000;">[BUFFER];<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;spaceNum&nbsp;;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;W;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;N;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;H;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ifstream&nbsp;Fin;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;deep;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;clock_t&nbsp;&nbsp;&nbsp;&nbsp;start;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;clock_t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">end</span><span style="color: #000000;">;<br><br></span><span style="color: #000000;">/*-------------</span><span style="color: #000000;">FRIENDS&nbsp;METHOD</span><span style="color: #000000;">--------------------*/</span><span style="color: #000000;"><br>bool&nbsp;mycmpG(Gadget&nbsp;t1,Gadget&nbsp;t2){return&nbsp;t1.h</span><span style="color: #000000;">&gt;</span><span style="color: #000000;">t2.h;}&nbsp;<br></span><span style="color: #000000;">/*-------------</span><span style="color: #000000;">FRIENDS&nbsp;METHOD</span><span style="color: #000000;">--------------------*/</span><span style="color: #000000;"><br>&nbsp;bool&nbsp;mycompS(</span><span style="color: #0000ff;">Space</span><span style="color: #000000;">&nbsp;t1,</span><span style="color: #0000ff;">Space</span><span style="color: #000000;">&nbsp;t2){return&nbsp;t1.y</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">t2.y;}<br></span><span style="color: #000000;">/*-------------</span><span style="color: #000000;">CONSTRUCT&nbsp;METHOD</span><span style="color: #000000;">------------------*/</span><span style="color: #000000;"><br>void&nbsp;init()<br>{&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;Fin.open(INPUTFILE,ios::in);<br>&nbsp;&nbsp;&nbsp;&nbsp;Fin</span><span style="color: #000000;">&gt;&gt;</span><span style="color: #000000;">N;<br>&nbsp;&nbsp;&nbsp;&nbsp;Fin</span><span style="color: #000000;">&gt;&gt;</span><span style="color: #000000;">W;<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">for</span><span style="color: #000000;">(</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;i</span><span style="color: #000000;">=</span><span style="color: #000000;">0</span><span style="color: #000000;">;i</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">N;i</span><span style="color: #000000;">++</span><span style="color: #000000;">)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Fin</span><span style="color: #000000;">&gt;&gt;</span><span style="color: #000000;">g[i].h</span><span style="color: #000000;">&gt;&gt;</span><span style="color: #000000;">g[i].w;<br>&nbsp;&nbsp;&nbsp;&nbsp;sort(g,g</span><span style="color: #000000;">+</span><span style="color: #000000;">N,mycmpG);<br>&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">space</span><span style="color: #000000;">[</span><span style="color: #000000;">0</span><span style="color: #000000;">].x</span><span style="color: #000000;">=</span><span style="color: #0000ff;">space</span><span style="color: #000000;">[</span><span style="color: #000000;">0</span><span style="color: #000000;">].y</span><span style="color: #000000;">=</span><span style="color: #000000;">0</span><span style="color: #000000;">;<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">space</span><span style="color: #000000;">[</span><span style="color: #000000;">0</span><span style="color: #000000;">].h</span><span style="color: #000000;">=</span><span style="color: #000000;">MAX;<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">space</span><span style="color: #000000;">[</span><span style="color: #000000;">0</span><span style="color: #000000;">].w</span><span style="color: #000000;">=</span><span style="color: #000000;">W;<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">for</span><span style="color: #000000;">(</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;i</span><span style="color: #000000;">=</span><span style="color: #000000;">0</span><span style="color: #000000;">;i</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">N;i</span><span style="color: #000000;">++</span><span style="color: #000000;">)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">space</span><span style="color: #000000;">[</span><span style="color: #000000;">0</span><span style="color: #000000;">].v</span><span style="color: #000000;">=</span><span style="color: #0000ff;">false</span><span style="color: #000000;">;<br>&nbsp;&nbsp;&nbsp;&nbsp;H</span><span style="color: #000000;">=</span><span style="color: #000000;">0</span><span style="color: #000000;">;<br>&nbsp;&nbsp;&nbsp;&nbsp;deep</span><span style="color: #000000;">=</span><span style="color: #000000;">0</span><span style="color: #000000;">;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;bestH&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;MAX;<br>&nbsp;&nbsp;&nbsp;&nbsp;spaceNum&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">1</span><span style="color: #000000;">;&nbsp;<br>}&nbsp;&nbsp;&nbsp;<br></span><span style="color: #000000;">/*-------------</span><span style="color: #000000;">CUT&nbsp;METHOD</span><span style="color: #000000;">------------------*/</span><span style="color: #000000;"><br>bool&nbsp;canBeCut(Gadget&nbsp;</span><span style="color: #000000;">&amp;</span><span style="color: #000000;">g,</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;i,</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">&amp;</span><span style="color: #000000;">TaddSpace)<br>{<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;addSpace&nbsp;</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;<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">((</span><span style="color: #0000ff;">space</span><span style="color: #000000;">[i].h</span><span style="color: #000000;">&gt;=</span><span style="color: #000000;">g.h)</span><span style="color: #000000;">&amp;&amp;</span><span style="color: #000000;">(</span><span style="color: #0000ff;">space</span><span style="color: #000000;">[i].w</span><span style="color: #000000;">&gt;=</span><span style="color: #000000;">g.w)){<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">(</span><span style="color: #0000ff;">space</span><span style="color: #000000;">[i].w</span><span style="color: #000000;">&gt;</span><span style="color: #000000;">g.w){<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">space</span><span style="color: #000000;">[spaceNum].x&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">space</span><span style="color: #000000;">[i].x</span><span style="color: #000000;">+</span><span style="color: #000000;">g.w;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">space</span><span style="color: #000000;">[spaceNum].y&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">space</span><span style="color: #000000;">[i].y;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">space</span><span style="color: #000000;">[spaceNum].h&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;g.h;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">space</span><span style="color: #000000;">[spaceNum].w&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">space</span><span style="color: #000000;">[i].w&nbsp;</span><span style="color: #000000;">-</span><span style="color: #000000;">&nbsp;g.w;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;addSpace</span><span style="color: #000000;">++</span><span style="color: #000000;">;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">(</span><span style="color: #0000ff;">space</span><span style="color: #000000;">[i].h</span><span style="color: #000000;">&gt;</span><span style="color: #000000;">g.h){<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">space</span><span style="color: #000000;">[spaceNum</span><span style="color: #000000;">+</span><span style="color: #000000;">1</span><span style="color: #000000;">].x&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">space</span><span style="color: #000000;">[i].x;&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">space</span><span style="color: #000000;">[spaceNum</span><span style="color: #000000;">+</span><span style="color: #000000;">1</span><span style="color: #000000;">].y&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">space</span><span style="color: #000000;">[i].y</span><span style="color: #000000;">+</span><span style="color: #000000;">g.h;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">(</span><span style="color: #0000ff;">space</span><span style="color: #000000;">[i].h</span><span style="color: #000000;">==</span><span style="color: #000000;">MAX)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">space</span><span style="color: #000000;">[spaceNum</span><span style="color: #000000;">+</span><span style="color: #000000;">1</span><span style="color: #000000;">].h&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;MAX;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">else</span><span style="color: #000000;"><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">space</span><span style="color: #000000;">[spaceNum</span><span style="color: #000000;">+</span><span style="color: #000000;">1</span><span style="color: #000000;">].h&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">space</span><span style="color: #000000;">[i].h&nbsp;</span><span style="color: #000000;">-</span><span style="color: #000000;">&nbsp;g.h;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">space</span><span style="color: #000000;">[spaceNum</span><span style="color: #000000;">+</span><span style="color: #000000;">1</span><span style="color: #000000;">].w&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">space</span><span style="color: #000000;">[i].w;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;addSpace</span><span style="color: #000000;">++</span><span style="color: #000000;">;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;g.x&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">space</span><span style="color: #000000;">[i].x;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;g.y&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">space</span><span style="color: #000000;">[i].y;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;H&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;max(H,g.y</span><span style="color: #000000;">+</span><span style="color: #000000;">g.h);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;spaceNum&nbsp;</span><span style="color: #000000;">+=</span><span style="color: #000000;">&nbsp;addSpace;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;TaddSpace&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;addSpace;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;</span><span style="color: #0000ff;">true</span><span style="color: #000000;">;<br>&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;</span><span style="color: #0000ff;">false</span><span style="color: #000000;">;<br>}<br></span><span style="color: #000000;">/*-------------</span><span style="color: #000000;">THE&nbsp;MAIN&nbsp;METHOD</span><span style="color: #000000;">--------------------*/</span><span style="color: #000000;"><br>&nbsp;void&nbsp;backTrack(</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;which)<br>{&nbsp;&nbsp;&nbsp;</span><span style="color: #000000;">//</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">(deep</span><span style="color: #000000;">==</span><span style="color: #000000;">100000</span><span style="color: #000000;">)return;<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000;">//</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">else</span><span style="color: #000000;">&nbsp;deep</span><span style="color: #000000;">++</span><span style="color: #000000;">;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sort(</span><span style="color: #0000ff;">space</span><span style="color: #000000;">,</span><span style="color: #0000ff;">space</span><span style="color: #000000;">+</span><span style="color: #000000;">spaceNum,mycompS);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">Space</span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;temp[BUFFER];<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">for</span><span style="color: #000000;">(</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;i</span><span style="color: #000000;">=</span><span style="color: #000000;">0</span><span style="color: #000000;">;i</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">spaceNum;i</span><span style="color: #000000;">++</span><span style="color: #000000;">)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;temp[i]&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">space</span><span style="color: #000000;">[i];&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">(which</span><span style="color: #000000;">==</span><span style="color: #000000;">N)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">(H</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">bestH)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;bestH&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;H;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">for</span><span style="color: #000000;">(</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;i&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">0</span><span style="color: #000000;">;i</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">N;i</span><span style="color: #000000;">++</span><span style="color: #000000;">)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;result[i]</span><span style="color: #000000;">=</span><span style="color: #000000;">g[i];<br>&nbsp;&nbsp;&nbsp;&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;return;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;addSpace;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;Num</span><span style="color: #000000;">=</span><span style="color: #000000;">spaceNum;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">for</span><span style="color: #000000;">(</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;i</span><span style="color: #000000;">=</span><span style="color: #000000;">0</span><span style="color: #000000;">;i</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">Num;i</span><span style="color: #000000;">++</span><span style="color: #000000;">)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">(</span><span style="color: #0000ff;">space</span><span style="color: #000000;">[i].v&nbsp;</span><span style="color: #000000;">==</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">false</span><span style="color: #000000;">)<br>&nbsp;&nbsp;&nbsp;&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;">int</span><span style="color: #000000;">&nbsp;tempH</span><span style="color: #000000;">=</span><span style="color: #000000;">H;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">(canBeCut(g[which],i,addSpace))<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">(H</span><span style="color: #000000;">&gt;</span><span style="color: #000000;">bestH)</span><span style="color: #000000;">//</span><span style="color: #000000;">剪枝&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;H&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;tempH;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;spaceNum&nbsp;</span><span style="color: #000000;">-=</span><span style="color: #000000;">&nbsp;addSpace;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;continue;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">space</span><span style="color: #000000;">[i].v&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">true</span><span style="color: #000000;">;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;backTrack(which</span><span style="color: #000000;">+</span><span style="color: #000000;">1</span><span style="color: #000000;">);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;spaceNum</span><span style="color: #000000;">-=</span><span style="color: #000000;">addSpace;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">space</span><span style="color: #000000;">[i].v&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">false</span><span style="color: #000000;">;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;H&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;tempH;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">for</span><span style="color: #000000;">(</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;k</span><span style="color: #000000;">=</span><span style="color: #000000;">0</span><span style="color: #000000;">;k</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">spaceNum;k</span><span style="color: #000000;">++</span><span style="color: #000000;">)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">space</span><span style="color: #000000;">[k]&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;temp[k];&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br>}<br></span><span style="color: #000000;">/*===========</span><span style="color: #000000;">GADGET&nbsp;CUT&nbsp;</span><span style="color: #0000ff;">END</span><span style="color: #000000;">=============*/</span><span style="color: #000000;">&nbsp;<br><br></span><span style="color: #000000;">/*========</span><span style="color: #000000;">NEWBOX&nbsp;CLASS&nbsp;BEGIN</span><span style="color: #000000;">============*/</span><span style="color: #000000;"><br>class&nbsp;NEWBOX:</span><span style="color: #0000ff;">public</span><span style="color: #000000;">&nbsp;QWidget<br>{&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;NEWBOX(QWidget&nbsp;</span><span style="color: #000000;">*</span><span style="color: #000000;">parent</span><span style="color: #000000;">=</span><span style="color: #000000;">0</span><span style="color: #000000;">);<br>&nbsp;&nbsp;&nbsp;&nbsp;protected:<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;void&nbsp;paintEvent(QPaintEvent&nbsp;</span><span style="color: #000000;">*</span><span style="color: #000000;">event);&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">private</span><span style="color: #000000;">:<br><br>};<br></span><span style="color: #000000;">/*</span><span style="color: #000000;">NEWBOX&nbsp;METHOD</span><span style="color: #000000;">*/</span><span style="color: #000000;"><br></span><span style="color: #000000;">/*-----------------------------------*/</span><span style="color: #000000;"><br>NEWBOX::NEWBOX(QWidget&nbsp;</span><span style="color: #000000;">*</span><span style="color: #000000;">parent):QWidget(parent)<br>{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;setFixedSize(W</span><span style="color: #000000;">*</span><span style="color: #000000;">15</span><span style="color: #000000;">,</span><span style="color: #000000;">30</span><span style="color: #000000;">*</span><span style="color: #000000;">15</span><span style="color: #000000;">);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;char&nbsp;temp[</span><span style="color: #000000;">5</span><span style="color: #000000;">];<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sprintf(temp,</span><span style="color: #000000;">"</span><span style="color: #000000;">%d</span><span style="color: #000000;">"</span><span style="color: #000000;">,bestH);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;char&nbsp;title[</span><span style="color: #000000;">40</span><span style="color: #000000;">]</span><span style="color: #000000;">=</span><span style="color: #000000;">"</span><span style="color: #000000;">H:</span><span style="color: #000000;">"</span><span style="color: #000000;">;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;strcat(title,temp);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;char&nbsp;temp2[</span><span style="color: #000000;">20</span><span style="color: #000000;">]</span><span style="color: #000000;">=</span><span style="color: #000000;">"</span><span style="color: #000000;">&nbsp;Spend&nbsp;TIME:</span><span style="color: #000000;">"</span><span style="color: #000000;">;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;char&nbsp;temp3[</span><span style="color: #000000;">5</span><span style="color: #000000;">];<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sprintf(temp3,</span><span style="color: #000000;">"</span><span style="color: #000000;">%f</span><span style="color: #000000;">"</span><span style="color: #000000;">,(</span><span style="color: #0000ff;">double</span><span style="color: #000000;">)(</span><span style="color: #0000ff;">end</span><span style="color: #000000;">-</span><span style="color: #000000;">start)</span><span style="color: #000000;">/</span><span style="color: #000000;">CLOCKS_PER_SEC);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;strcat(temp2,temp3);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;strcat(title,temp2);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;setWindowTitle(title);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;setPalette(QPalette(QColor(</span><span style="color: #000000;">250</span><span style="color: #000000;">,&nbsp;</span><span style="color: #000000;">250</span><span style="color: #000000;">,&nbsp;</span><span style="color: #000000;">200</span><span style="color: #000000;">)));<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;setAutoFillBackground(</span><span style="color: #0000ff;">true</span><span style="color: #000000;">);<br>}<br></span><span style="color: #000000;">/*-----------------------------------*/</span><span style="color: #000000;"><br>void&nbsp;NEWBOX::paintEvent(QPaintEvent&nbsp;</span><span style="color: #000000;">*</span><span style="color: #000000;">)<br>{&nbsp;&nbsp;&nbsp;&nbsp;QPainter&nbsp;painter(this);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;painter.setPen(Qt::SolidLine);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;painter.setBrush(Qt::blue);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;painter.translate(</span><span style="color: #000000;">0</span><span style="color: #000000;">,</span><span style="color: #000000;">0</span><span style="color: #000000;">);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">for</span><span style="color: #000000;">(</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;i</span><span style="color: #000000;">=</span><span style="color: #000000;">0</span><span style="color: #000000;">;i</span><span style="color: #000000;">&lt;=</span><span style="color: #000000;">N;i</span><span style="color: #000000;">++</span><span style="color: #000000;">)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;painter.drawRect(result[i].x</span><span style="color: #000000;">*</span><span style="color: #000000;">15</span><span style="color: #000000;">,</span><span style="color: #000000;">30</span><span style="color: #000000;">*</span><span style="color: #000000;">15</span><span style="color: #000000;">-</span><span style="color: #000000;">result[i].y</span><span style="color: #000000;">*</span><span style="color: #000000;">15</span><span style="color: #000000;">,<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;result[i].w</span><span style="color: #000000;">*</span><span style="color: #000000;">15</span><span style="color: #000000;">,</span><span style="color: #000000;">-</span><span style="color: #000000;">result[i].h</span><span style="color: #000000;">*</span><span style="color: #000000;">15</span><span style="color: #000000;">);&nbsp;&nbsp;<br>}<br><br></span><span style="color: #000000;">/*=========</span><span style="color: #000000;">NEWBOX&nbsp;CLASS&nbsp;</span><span style="color: #0000ff;">END</span><span style="color: #000000;">=============*/</span><span style="color: #000000;"><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;char&nbsp;</span><span style="color: #000000;">*</span><span style="color: #000000;">argv[])<br>{&nbsp;&nbsp;&nbsp;QApplication&nbsp;app(argc,&nbsp;argv);<br>&nbsp;&nbsp;&nbsp;&nbsp;init();<br>&nbsp;&nbsp;&nbsp;&nbsp;start</span><span style="color: #000000;">=</span><span style="color: #000000;">clock();<br>&nbsp;&nbsp;&nbsp;&nbsp;backTrack(</span><span style="color: #000000;">0</span><span style="color: #000000;">);<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">end</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;clock();</span><span style="color: #000000;">//</span><span style="color: #0000ff;">TIME</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">END</span><span style="color: #000000;">&nbsp;HERE<br>&nbsp;&nbsp;&nbsp;&nbsp;NEWBOX&nbsp;newb;<br>&nbsp;&nbsp;&nbsp;&nbsp;newb.show();<br>&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;app.exec();<br><br>}<br></span></div>
<br><img src ="http://www.cppblog.com/newplan/aggbug/52801.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/newplan/" target="_blank">山泉弯延</a> 2008-06-10 21:47 <a href="http://www.cppblog.com/newplan/archive/2008/06/10/52801.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>算法实验三（集装箱）</title><link>http://www.cppblog.com/newplan/archive/2008/06/05/52214.html</link><dc:creator>山泉弯延</dc:creator><author>山泉弯延</author><pubDate>Thu, 05 Jun 2008 01:05:00 GMT</pubDate><guid>http://www.cppblog.com/newplan/archive/2008/06/05/52214.html</guid><wfw:comment>http://www.cppblog.com/newplan/comments/52214.html</wfw:comment><comments>http://www.cppblog.com/newplan/archive/2008/06/05/52214.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/newplan/comments/commentRss/52214.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/newplan/services/trackbacks/52214.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: /*08.6.2*//*------------------INCLUDES&nbsp;BEGIN---------------*/#include&nbsp;&lt;cstdlib&gt;#include&nbsp;&lt;iostream&gt;#include&nbsp;&lt;fstream&gt;#include&nbsp;&lt;string&gt;#include&nbsp;&lt;...&nbsp;&nbsp;<a href='http://www.cppblog.com/newplan/archive/2008/06/05/52214.html'>阅读全文</a><img src ="http://www.cppblog.com/newplan/aggbug/52214.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/newplan/" target="_blank">山泉弯延</a> 2008-06-05 09:05 <a href="http://www.cppblog.com/newplan/archive/2008/06/05/52214.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>acm_GREEDY_排队</title><link>http://www.cppblog.com/newplan/archive/2008/05/13/49766.html</link><dc:creator>山泉弯延</dc:creator><author>山泉弯延</author><pubDate>Tue, 13 May 2008 15:48:00 GMT</pubDate><guid>http://www.cppblog.com/newplan/archive/2008/05/13/49766.html</guid><wfw:comment>http://www.cppblog.com/newplan/comments/49766.html</wfw:comment><comments>http://www.cppblog.com/newplan/archive/2008/05/13/49766.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.cppblog.com/newplan/comments/commentRss/49766.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/newplan/services/trackbacks/49766.html</trackback:ping><description><![CDATA[<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;"></span></div>
<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;"></span><span style="color: #000000;"></span><span style="color: #000000;">/*<br>&nbsp;*有N个人排队到R个水龙头去打水，他们装满水桶的时间<br>&nbsp;*为T1，T2，&#8230;，Tn为整数且各不相等，应如何安排他们<br>&nbsp;*的打水顺序才能使他们花费的时间最少？<br>&nbsp;*分析：由于排队时，越靠前面的计算的次数越多，显然越小<br>&nbsp;*的排在越前面得出的结果越小（可以用数学方法简单证明，<br>&nbsp;*这里就不再赘述），所以这道题可以用贪心法解答<br>&nbsp;*/<br></span><span style="color: #000000;">/*------------</span><span style="color: #000000;">INCLUDES</span><span style="color: #000000;">---------------*/</span><span style="color: #000000;"><br>#include&nbsp;</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">cstdlib</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;">iostream</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;">queue</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;">fstream</span><span style="color: #000000;">&gt;</span><span style="color: #000000;"><br></span><span style="color: #000000;">/*------------</span><span style="color: #000000;">INCLUDES</span><span style="color: #000000;">---------------*/</span><span style="color: #000000;"><br><br></span><span style="color: #000000;">/*---------------</span><span style="color: #000000;">STD</span><span style="color: #000000;">-----------------*/</span><span style="color: #000000;"><br>using&nbsp;std::ifstream;<br>using&nbsp;std::queue;<br>using&nbsp;std::vector;<br>using&nbsp;std::greater;<br>using&nbsp;std::priority_queue;<br></span><span style="color: #000000;">/*---------------</span><span style="color: #000000;">STD</span><span style="color: #000000;">----------------*/</span><span style="color: #000000;"><br><br></span><span style="color: #000000;">/*------------</span><span style="color: #000000;">GLOBAL&nbsp;VAL</span><span style="color: #000000;">------------*/</span><span style="color: #000000;"><br></span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;&nbsp;M[</span><span style="color: #000000;">5</span><span style="color: #000000;">];<br></span><span style="color: #000000;">/*------------</span><span style="color: #000000;">GLOBAL&nbsp;VAL</span><span style="color: #000000;">------------*/</span><span style="color: #000000;"><br><br></span><span style="color: #000000;">/*---------------</span><span style="color: #000000;">MAIN</span><span style="color: #000000;">---------------*/</span><span style="color: #000000;"><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;char&nbsp;</span><span style="color: #000000;">*</span><span style="color: #000000;">argv[])<br>{&nbsp;&nbsp;&nbsp;ifstream&nbsp;&nbsp;Fin;<br>&nbsp;&nbsp;&nbsp;&nbsp;Fin.open(</span><span style="color: #000000;">"</span><span style="color: #000000;">queue.txt</span><span style="color: #000000;">"</span><span style="color: #000000;">);<br>&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;priority_queue</span><span style="color: #000000;">&lt;</span><span style="color: #0000ff;">int</span><span style="color: #000000;">,vector</span><span style="color: #000000;">&lt;</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&gt;</span><span style="color: #000000;">,greater</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">vector</span><span style="color: #000000;">&lt;</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&gt;</span><span style="color: #000000;">::value_type</span><span style="color: #000000;">&gt;</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">&gt;</span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;iqueue;<br>&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;a;<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">while</span><span style="color: #000000;">(Fin</span><span style="color: #000000;">&gt;&gt;</span><span style="color: #000000;">a)<br>&nbsp;&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;iqueue.push(a);<br>&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;flag</span><span style="color: #000000;">=</span><span style="color: #000000;">0</span><span style="color: #000000;">;<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;i</span><span style="color: #000000;">=</span><span style="color: #000000;">0</span><span style="color: #000000;">;<br>&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">while</span><span style="color: #000000;">(!iqueue.empty())<br>&nbsp;&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">(flag</span><span style="color: #000000;">==</span><span style="color: #000000;">0</span><span style="color: #000000;">)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{M[i]</span><span style="color: #000000;">=</span><span style="color: #000000;">iqueue.top();<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;iqueue.pop();&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;i</span><span style="color: #000000;">++</span><span style="color: #000000;">;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">(i</span><span style="color: #000000;">==</span><span style="color: #000000;">5</span><span style="color: #000000;">)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;flag</span><span style="color: #000000;">=</span><span style="color: #000000;">1</span><span style="color: #000000;">;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">else</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">(flag</span><span style="color: #000000;">==</span><span style="color: #000000;">1</span><span style="color: #000000;">)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;M[i]</span><span style="color: #000000;">=</span><span style="color: #000000;">iqueue.top();<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;iqueue.pop();&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;i</span><span style="color: #000000;">--</span><span style="color: #000000;">;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">(i</span><span style="color: #000000;">==</span><span style="color: #000000;">0</span><span style="color: #000000;">)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;flag</span><span style="color: #000000;">=</span><span style="color: #000000;">0</span><span style="color: #000000;">;&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;<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;return&nbsp;EXIT_SUCCESS;<br>}<br></span><span style="color: #000000;">/*---------------</span><span style="color: #000000;">MAIN</span><span style="color: #000000;">---------------*/</span><span style="color: #000000;"><br></span></div>
<br><img src ="http://www.cppblog.com/newplan/aggbug/49766.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/newplan/" target="_blank">山泉弯延</a> 2008-05-13 23:48 <a href="http://www.cppblog.com/newplan/archive/2008/05/13/49766.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>