<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Joan SKY</title>
	<atom:link href="http://www.joansky.com/feed" rel="self" type="application/rss+xml" />
	<link>http://www.joansky.com</link>
	<description>Freedom of the joan sky</description>
	<lastBuildDate>Fri, 18 May 2012 07:45:48 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>CCNP实验---BGP路由黑洞之MPLS解决</title>
		<link>http://www.joansky.com/ccnp-bgp-mpls.html</link>
		<comments>http://www.joansky.com/ccnp-bgp-mpls.html#comments</comments>
		<pubDate>Wed, 02 May 2012 09:51:21 +0000</pubDate>
		<dc:creator>Joan</dc:creator>
				<category><![CDATA[CCNP实验报告]]></category>
		<category><![CDATA[cisco]]></category>
		<category><![CDATA[route]]></category>

		<guid isPermaLink="false">http://www.joansky.com/?p=200</guid>
		<description><![CDATA[一 实验环境：C7200-ADVENTERPRISEK9-M Version 15.1(4)M3a 二 实验拓扑 三 实验描述：使用MPLS解决BGP路由黑洞问题 R1、R2、R3、R4、R5、R6运行OSPF，宣告Loopback0，使用全网Loopback0互通 R5与R1建立eBGP邻居，R5宣告55.5.5.0/24网段；R6与R4建立eBGP邻居，R6宣告66.6.6.0/24地址 R1与R4建立iBGP邻居，互相学习到R5、R6的路由 路由黑洞问题：由于R2和R3没有运行BGP，没有学习到55.5.5.0/24和66.6.6.0/24的路由，导致数据包不可达。 解决办法：R1、R2、R3、R4运行MPLS协议，使得数据包到达R1时，由于MPLS根据BGP路由下一跳做标签转发，将数据包传给R2，R2、R3也将根据这个下一跳的标签信息进行数据转发，当数据包到达R4再根据CEF表进行转发，从而使用数据包可达 四 实验步骤 1、R1、R2、R3、R4、R5、R6接口和OSPF基本配置 R1基本配置： interface Loopback0  ip address 1.1.1.1 255.255.255.255 ! 这里需要使用32位全1的地址掩码，这样保证与邻居学习到的32位路由一致。如果R1 Loopback口地址是 1.1.1.1/24，由于OSPF协议对于Loopback口比较特殊，使得R2学习到的是32位的主机路由。这样两个路由的路由信息不一致，而MPLS是根据路由前缀进行分发标签，如果路由不一致则标签无法正确分发。 interface FastEthernet0/0 ip address 12.1.1.1 255.255.255.0 ! interface FastEthernet1/0 ip address 15.1.1.1 255.255.255.0 ! router ospf 110 router-id 1.1.1.1 network 1.1.1.1 0.0.0.0 area 0 network 12.1.1.0 0.0.0.255 area 0 [...]]]></description>
			<content:encoded><![CDATA[<p><span style="color: #0000ff;">一 实验环境：C7200-ADVENTERPRISEK9-M Version 15.1(4)M3a</span></p>
<p><span style="color: #0000ff;">二 实验拓扑</span></p>
<p><a href="http://www.joansky.com/ccnp-bgp-mpls.html/bgp-mpls" rel="attachment wp-att-201"><img class="alignnone  wp-image-201" title="BGP MPLS" src="http://www.joansky.com/wp-content/uploads/2012/05/BGP-MPLS.png" alt="" width="866" height="377" /></a></p>
<p><span style="color: #0000ff;">三 实验描述：使用MPLS解决BGP路由黑洞问题</span></p>
<p>R1、R2、R3、R4、R5、R6运行OSPF，宣告Loopback0，使用全网Loopback0互通<br />
R5与R1建立eBGP邻居，R5宣告55.5.5.0/24网段；R6与R4建立eBGP邻居，R6宣告66.6.6.0/24地址<br />
R1与R4建立iBGP邻居，互相学习到R5、R6的路由</p>
<p>路由黑洞问题：由于R2和R3没有运行BGP，没有学习到55.5.5.0/24和66.6.6.0/24的路由，导致数据包不可达。</p>
<p>解决办法：R1、R2、R3、R4运行MPLS协议，使得数据包到达R1时，由于MPLS根据BGP路由下一跳做标签转发，将数据包传给R2，R2、R3也将根据这个下一跳的标签信息进行数据转发，当数据包到达R4再根据CEF表进行转发，从而使用数据包可达</p>
<p><span id="more-200"></span></p>
<p><span style="color: #0000ff;">四 实验步骤</span></p>
<p><span style="color: #0000ff;">1、R1、R2、R3、R4、R5、R6接口和OSPF基本配置</span></p>
<p><span style="color: #0000ff;">R1基本配置：</span></p>
<p><span style="color: #ff0000;">interface Loopback0</span><br />
<span style="color: #ff0000;"> ip address 1.1.1.1 255.255.255.255</span><br />
<span style="color: #ff0000;">!</span></p>
<p><span style="color: #ff0000;">这里需要使用32位全1的地址掩码，这样保证与邻居学习到的32位路由一致。如果R1 Loopback口地址是 1.1.1.1/24，由于OSPF协议对于Loopback口比较特殊，使得R2学习到的是32位的主机路由。这样两个路由的路由信息不一致，而MPLS是根据路由前缀进行分发标签，如果路由不一致则标签无法正确分发。</span></p>
<p>interface FastEthernet0/0<br />
ip address 12.1.1.1 255.255.255.0<br />
!<br />
interface FastEthernet1/0<br />
ip address 15.1.1.1 255.255.255.0<br />
!<br />
router ospf 110<br />
router-id 1.1.1.1<br />
network 1.1.1.1 0.0.0.0 area 0<br />
network 12.1.1.0 0.0.0.255 area 0<br />
network 15.1.1.0 0.0.0.255 area 0<br />
!</p>
<p><span style="color: #0000ff;">R2基本配置：</span></p>
<p>interface Loopback0<br />
ip address 2.2.2.2 255.255.255.255<br />
!<br />
interface FastEthernet0/0<br />
ip address 12.1.1.2 255.255.255.0<br />
!<br />
interface FastEthernet1/0<br />
ip address 23.1.1.2 255.255.255.0<br />
!<br />
router ospf 110<br />
router-id 2.2.2.2<br />
network 2.2.2.2 0.0.0.0 area 0<br />
network 12.1.1.0 0.0.0.255 area 0<br />
network 23.1.1.0 0.0.0.255 area 0<br />
!</p>
<p><span style="color: #0000ff;">R3基本配置：</span></p>
<p>interface Loopback0<br />
ip address 3.3.3.3 255.255.255.255<br />
!<br />
interface FastEthernet0/0<br />
ip address 34.1.1.3 255.255.255.0<br />
!<br />
interface FastEthernet1/0<br />
ip address 23.1.1.3 255.255.255.0<br />
!<br />
router ospf 110<br />
router-id 3.3.3.3<br />
network 3.3.3.0 0.0.0.255 area 0<br />
network 23.1.1.0 0.0.0.255 area 0<br />
network 34.1.1.0 0.0.0.255 area 0<br />
!</p>
<p><span style="color: #0000ff;">R4基本配置：</span></p>
<p>interface Loopback0<br />
ip address 4.4.4.4 255.255.255.255<br />
!<br />
interface FastEthernet0/0<br />
ip address 34.1.1.4 255.255.255.0<br />
!<br />
interface FastEthernet1/0<br />
ip address 46.1.1.4 255.255.255.0<br />
!<br />
router ospf 11<br />
router-id 4.4.4.4<br />
network 4.4.4.0 0.0.0.255 area 0<br />
network 34.1.1.0 0.0.0.255 area 0<br />
network 46.1.1.0 0.0.0.255 area 0<br />
!</p>
<p><span style="color: #0000ff;">R5基本配置：</span></p>
<p>interface Loopback0<br />
ip address 5.5.5.5 255.255.255.255<br />
!<br />
interface Loopback55<br />
ip address 55.5.5.5 255.255.255.0<br />
!<br />
interface FastEthernet1/0<br />
ip address 15.1.1.5 255.255.255.0<br />
!<br />
router ospf 110<br />
router-id 5.5.5.5<br />
network 5.5.5.5 0.0.0.0 area 0<br />
network 15.1.1.0 0.0.0.255 area 0<br />
!</p>
<p><span style="color: #0000ff;">R6基本配置：</span></p>
<p>interface Loopback0<br />
ip address 6.6.6.6 255.255.255.255<br />
!<br />
interface Loopback66<br />
ip address 66.6.6.6 255.255.255.0<br />
!<br />
interface FastEthernet1/0<br />
ip address 46.1.1.6 255.255.255.0<br />
!<br />
router ospf 110<br />
router-id 6.6.6.6<br />
network 6.6.6.6 0.0.0.0 area 0<br />
network 46.1.1.0 0.0.0.255 area 0<br />
!</p>
<p><span style="color: #0000ff;">2、验证所有路由Loopback 0能互通，且能正常学习到路由</span></p>
<p><span style="color: #ff6600;">R5#ping 6.6.6.6</span><br />
Type escape sequence to abort.<br />
Sending 5, 100-byte ICMP Echos to 6.6.6.6, timeout is 2 seconds:<br />
!!!!!<br />
Success rate is 100 percent (5/5), round-trip min/avg/max = 104/121/152 ms</p>
<p><span style="color: #0000ff;">3、R5、R1、R4、R6根据拓扑跑BGP协议</span></p>
<p><span style="color: #0000ff;">R5 BGP配置：</span></p>
<p>router bgp 5<br />
bgp router-id 5.5.5.5<br />
bgp log-neighbor-changes<br />
<span style="color: #ff6600;"> network 55.5.5.0 mask 255.255.255.0</span><br />
neighbor 1.1.1.1 remote-as 1<br />
neighbor 1.1.1.1 ebgp-multihop 255<br />
neighbor 1.1.1.1 update-source Loopback0</p>
<p><span style="color: #0000ff;">R1 BGP配置：</span></p>
<p>router bgp 1<br />
bgp router-id 1.1.1.1<br />
bgp log-neighbor-changes<br />
neighbor 4.4.4.4 remote-as 1<br />
neighbor 4.4.4.4 update-source Loopback0<br />
neighbor 4.4.4.4 next-hop-self<br />
neighbor 5.5.5.5 remote-as 5<br />
neighbor 5.5.5.5 ebgp-multihop 255<br />
neighbor 5.5.5.5 update-source Loopback0</p>
<p><span style="color: #0000ff;">R4 BGP配置：</span></p>
<p>router bgp 1<br />
bgp router-id 4.4.4.4<br />
bgp log-neighbor-changes<br />
neighbor 1.1.1.1 remote-as 1<br />
neighbor 1.1.1.1 update-source Loopback0<br />
neighbor 1.1.1.1 next-hop-self<br />
neighbor 6.6.6.6 remote-as 6<br />
neighbor 6.6.6.6 ebgp-multihop 255<br />
neighbor 6.6.6.6 update-source Loopback0</p>
<p><span style="color: #0000ff;">R6 BGP配置：</span></p>
<p>router bgp 6<br />
bgp router-id 6.6.6.6<br />
bgp log-neighbor-changes<br />
<span style="color: #ff6600;"> network 66.6.6.0 mask 255.255.255.0</span><br />
neighbor 4.4.4.4 remote-as 1<br />
neighbor 4.4.4.4 ebgp-multihop 255<br />
neighbor 4.4.4.4 update-source Loopback0</p>
<p><span style="color: #0000ff;">4、验证BGP路由正确学习，R5上能学习到66.6.6.0/24</span></p>
<p><span style="color: #0000ff;">5、R1-f0/0，R2-f0/0、f1/0，R3-f0/0、f1/0，R4-f0/0运行MPLS</span></p>
<p><span style="color: #ff6600;">在此之前保证路由已经启用ip cef</span><br />
<span style="color: #ff6600;">配置以一个接口为例</span><br />
<span style="color: #ff6600;">R1(config)#ip cef</span><br />
<span style="color: #ff6600;">R1(config)#int f0/0</span><br />
<span style="color: #ff6600;">R1(config-if)#mpls ip</span></p>
<p><span style="color: #ff6600;">注:如果MPLS不能起邻居，那么强制指定router-id</span></p>
<p><span style="color: #ff6600;">R1(config)#mpls ldp router-id lo 0 force</span></p>
<p><span style="color: #0000ff;">6、验证数据包是否正确到达</span></p>
<p><span style="color: #ff6600;">R5#traceroute 66.6.6.6</span><br />
<span style="color: #ff6600;">Type escape sequence to abort.</span><br />
<span style="color: #ff6600;">Tracing the route to 66.6.6.6</span><br />
<span style="color: #ff6600;">VRF info: (vrf in name/id, vrf out name/id)</span><br />
<span style="color: #ff6600;">  1 15.1.1.1 28 msec 56 msec 16 msec</span><br />
<span style="color: #ff6600;">  2 12.1.1.2 [MPLS: Label 18 Exp 0] 112 msec 104 msec 140 msec</span><br />
<span style="color: #ff6600;">  3 23.1.1.3 [MPLS: Label 18 Exp 0] 80 msec 60 msec 96 msec</span><br />
<span style="color: #ff6600;">  4 34.1.1.4 104 msec 112 msec 108 msec</span><br />
<span style="color: #ff6600;">  5 46.1.1.6 108 msec *  100 msec</span></p>
<p><span style="color: #ff6600;">注：数据包的转发查找过程：</span></p>
<p><span style="color: #ff6600;">A R5根据路由将数据包传给R1，由于R1启用MPLS，MPLS根据BGP下一跳4.4.4.4 进行标签转发，如下信息所示，转发到R2</span><br />
R1#sh ip bgp<br />
Network          Next Hop            Metric LocPrf Weight Path<br />
*&gt; 55.5.5.0/24      5.5.5.5                  0             0 5 i<br />
*&gt;i66.6.6.0/24      <span style="color: #0000ff;">4.4.4.4</span>                  0    100      0 6 i</p>
<p>R1#sh ip cef de<br />
4.4.4.4/32, epoch 0, flags need ps clean<br />
local label info: global/18<br />
1 RR source [no flags]<br />
nexthop 12.1.1.2 FastEthernet0/0 label 18</p>
<p>R1#sh mpls forwarding-table<br />
18         18         4.4.4.4/32       0             Fa0/0      12.1.1.2</p>
<p><span style="color: #ff6600;">B R2同样进行标签转发，转发到R3</span><br />
R2#sh mpls forwarding-table<br />
18         18         4.4.4.4/32       22267         Fa1/0      23.1.1.3</p>
<p><span style="color: #ff6600;">C R3同样进行标签转发，由于是倒数第二跳，弹出标签后再转发给R4</span><br />
R3#sh mpls forwarding-table<br />
18         <span style="color: #0000ff;">Pop Label</span>  4.4.4.4/32       25919         Fa0/0      34.1.1.4</p>
<p><span style="color: #ff6600;">D R4是最后一跳，从而进行路由查找，R4学习到66.6.6.0/24，将数据包传给R6，从而完成整个数据包传递过程</span></p>
<p>R4#sh ip cef de<br />
66.6.6.0/24, epoch 0, flags rib only nolabel, rib defined all labels<br />
recursive via 6.6.6.6<br />
nexthop 46.1.1.6 FastEthernet1/0</p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.joansky.com/ccnp-bgp-mpls.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>北京游玩记录篇</title>
		<link>http://www.joansky.com/beijing-travel.html</link>
		<comments>http://www.joansky.com/beijing-travel.html#comments</comments>
		<pubDate>Sat, 21 Apr 2012 06:36:56 +0000</pubDate>
		<dc:creator>Joan</dc:creator>
				<category><![CDATA[生活琐事]]></category>
		<category><![CDATA[北京]]></category>
		<category><![CDATA[旅游]]></category>
		<category><![CDATA[生活]]></category>

		<guid isPermaLink="false">http://www.joansky.com/?p=191</guid>
		<description><![CDATA[来帝都2个多月，周末闲暇时间都出去外面玩。天安门、西单、王府井、北海、孔庙国子监、玉渊潭、凤凰岭、798街，这些地方都去过，不想讲话直接上图吧，好懒... 基本大家都会去的地方---天安门，去西单的时候顺便拍了张 .的 王府井，一个逛街的地方。图是小吃街，人超多，广州北京路小吃街和它比起来还是逊色了点 孔子庙，难得天气不错 某广播电视台建筑楼 原来Google中国在中关村，不知道还有人在办公不 部门活动，凤凰岭，天气很阴沉，回家的路上都下雨 玉渊潭，清明节去的，人好多 &#160;]]></description>
			<content:encoded><![CDATA[<p>来帝都2个多月，周末闲暇时间都出去外面玩。天安门、西单、王府井、北海、孔庙国子监、玉渊潭、凤凰岭、798街，这些地方都去过，不想讲话直接上图吧，好懒...</p>
<p>基本大家都会去的地方---天安门，去西单的时候顺便拍了张</p>
<p>.<a href="http://www.joansky.com/beijing-travel.html/%e5%a4%a9%e5%ae%89%e9%97%a8" rel="attachment wp-att-197"><img class="alignnone size-full wp-image-197" title="天安门" src="http://www.joansky.com/wp-content/uploads/2012/04/天安门.jpg" alt="" width="550" height="412" />的</a></p>
<p>王府井，一个逛街的地方。图是小吃街，人超多，广州北京路小吃街和它比起来还是逊色了点</p>
<p><a href="http://www.joansky.com/beijing-travel.html/%e7%8e%8b%e5%ba%9c%e4%ba%95" rel="attachment wp-att-198"><img class="alignnone size-full wp-image-198" title="王府井" src="http://www.joansky.com/wp-content/uploads/2012/04/王府井.jpg" alt="" width="412" height="550" /></a></p>
<p><span id="more-191"></span></p>
<p>孔子庙，难得天气不错</p>
<p><a href="http://www.joansky.com/beijing-travel.html/%e5%ad%94%e5%ad%90%e5%ba%99" rel="attachment wp-att-196"><img class="alignnone size-full wp-image-196" title="孔子庙" src="http://www.joansky.com/wp-content/uploads/2012/04/孔子庙.jpg" alt="" width="550" height="412" /></a></p>
<p>某广播电视台建筑楼</p>
<p><a href="http://www.joansky.com/beijing-travel.html/%e5%b9%bf%e6%92%ad%e7%94%b5%e8%a7%86%e5%8f%b0" rel="attachment wp-att-195"><img class="alignnone size-full wp-image-195" title="广播电视台" src="http://www.joansky.com/wp-content/uploads/2012/04/广播电视台.jpg" alt="" width="412" height="550" /></a></p>
<p>原来Google中国在中关村，不知道还有人在办公不</p>
<p><a href="http://www.joansky.com/beijing-travel.html/google%e4%b8%ad%e5%9b%bd" rel="attachment wp-att-193"><img class="alignnone size-full wp-image-193" title="Google中国" src="http://www.joansky.com/wp-content/uploads/2012/04/Google中国.jpg" alt="" width="550" height="412" /></a></p>
<p>部门活动，凤凰岭，天气很阴沉，回家的路上都下雨</p>
<p><a href="http://www.joansky.com/beijing-travel.html/%e5%87%a4%e5%87%b0%e5%b2%ad" rel="attachment wp-att-194"><img class="alignnone size-full wp-image-194" title="凤凰岭" src="http://www.joansky.com/wp-content/uploads/2012/04/凤凰岭.jpg" alt="" width="550" height="412" /></a></p>
<p>玉渊潭，清明节去的，人好多</p>
<p><a href="http://www.joansky.com/beijing-travel.html/%e6%a8%b1%e8%8a%b1" rel="attachment wp-att-192"><img class="alignnone size-full wp-image-192" title="樱花" src="http://www.joansky.com/wp-content/uploads/2012/04/樱花.jpg" alt="" width="412" height="550" /></a></p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.joansky.com/beijing-travel.html/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>CCNP实验---OSPF在帧中继环境下的应用</title>
		<link>http://www.joansky.com/ccnp-ospf-network.html</link>
		<comments>http://www.joansky.com/ccnp-ospf-network.html#comments</comments>
		<pubDate>Wed, 11 Apr 2012 15:40:44 +0000</pubDate>
		<dc:creator>Joan</dc:creator>
				<category><![CDATA[CCNP实验报告]]></category>
		<category><![CDATA[cisco]]></category>
		<category><![CDATA[route]]></category>

		<guid isPermaLink="false">http://www.joansky.com/?p=188</guid>
		<description><![CDATA[一 实验环境：C3640-IK9O3S-M Version 12.4(10) 二 实验拓扑 三 实验描述 使用R2、R3路由器模拟帧中继网络，R1、R4、R5跑OPSF实现全网互通 在帧中继网络中，路由器上跑OSPF实现网络互通可分为以下情况进行讨论： A  R1、R4、R5通过inverse-arp获得frame-relay map信息，处于同一网段，二层网络类型为广播，三层网络类型默认为NBMA。此网络类型需要在一台路由器手工指邻居才能正常学习到路由条目但是路由器承担的角色不统一，故还需手工指定该路由器为DR。或者修改此网络类型为broadcast。 B  R1、R4、R5处于同一网段，R4二层网络类型通过子接口配置为点到多点，三层网络类型默认为点到多点。注：由于使用子接口R1、R4、R5需要手工配置frame-relay map C  R4与R1、R4与R5处于同一网段，R4二层网络类型通过子接口配置为点到点，三层网络类型为点到点。注：由于使用子接口R1、R4、R5需要手工配置frame-relay map 下面将根据以上讨论的三种情况分别进行配置 四 实验步骤 1、模拟帧中继 R2上帧中继配置 R2和R3隧道技术以扩展端口数量 interface Tunnel0 no ip address tunnel source 23.0.0.2 tunnel destination 23.0.0.3 interface Serial0/0 no ip address encapsulation frame-relay clock rate 64000 对端lmi-type需匹配 frame-relay lmi-type cisco frame-relay intf-type dce S0/0入方向有DLCI号为401，出口为S0/1； frame-relay [...]]]></description>
			<content:encoded><![CDATA[<p><span style="color: #0000ff;">一 实验环境：C3640-IK9O3S-M Version 12.4(10)</span></p>
<p><span style="color: #0000ff;">二 实验拓扑</span></p>
<p><a href="http://www.joansky.com/ccnp-ospf-network.html/fr-ospf" rel="attachment wp-att-189"><img class="alignnone size-full wp-image-189" title="FR-ospf" src="http://www.joansky.com/wp-content/uploads/2012/04/FR-ospf.png" alt="" width="581" height="371" /></a></p>
<p><span style="color: #0000ff;">三 实验描述</span></p>
<p>使用R2、R3路由器模拟帧中继网络，R1、R4、R5跑OPSF实现全网互通</p>
<p>在帧中继网络中，路由器上跑OSPF实现网络互通可分为以下情况进行讨论：<br />
<span style="color: #0000ff;">A</span>  R1、R4、R5通过inverse-arp获得frame-relay map信息，处于同一网段，二层网络类型为广播，三层网络类型默认为NBMA。此网络类型需要在一台路由器手工指邻居才能正常学习到路由条目但是路由器承担的角色不统一，故还需手工指定该路由器为DR。或者修改此网络类型为broadcast。<br />
<span style="color: #0000ff;">B  </span>R1、R4、R5处于同一网段，R4二层网络类型通过子接口配置为点到多点，三层网络类型默认为点到多点。注：由于使用子接口R1、R4、R5需要手工配置frame-relay map<br />
<span style="color: #0000ff;">C</span>  R4与R1、R4与R5处于同一网段，R4二层网络类型通过子接口配置为点到点，三层网络类型为点到点。注：由于使用子接口R1、R4、R5需要手工配置frame-relay map</p>
<p>下面将根据以上讨论的三种情况分别进行配置</p>
<p><span id="more-188"></span></p>
<p><span style="color: #0000ff;">四 实验步骤</span></p>
<p><span style="color: #0000ff;">1、模拟帧中继</span></p>
<p><span style="color: #0000ff;">R2上帧中继配置</span><br />
<span style="color: #ff0000;">R2和R3隧道技术以扩展端口数量</span><br />
interface Tunnel0<br />
no ip address<br />
tunnel source 23.0.0.2<br />
tunnel destination 23.0.0.3</p>
<p>interface Serial0/0<br />
no ip address<br />
encapsulation frame-relay<br />
clock rate 64000<br />
<span style="color: #ff0000;">对端lmi-type需匹配</span><br />
frame-relay lmi-type cisco<br />
frame-relay intf-type dce<br />
<span style="color: #ff0000;">S0/0入方向有DLCI号为401，出口为S0/1；</span><br />
frame-relay route 401 interface Serial0/1 104<br />
<span style="color: #ff0000;">S0/0入方向有DLCI号为405，出口为Tunnel0，101为唯一标识隧道的号码</span><br />
frame-relay route 405 interface Tunnel0 101<br />
！<br />
interface Serial0/1<br />
no ip address<br />
encapsulation frame-relay<br />
clock rate 64000<br />
frame-relay lmi-type cisco<br />
frame-relay intf-type dce<br />
frame-relay route 104 interface Serial0/0 401<br />
frame-relay route 105 interface Tunnel0 200<br />
!<br />
interface FastEthernet1/0<br />
ip address 23.0.0.2 255.255.255.0</p>
<p><span style="color: #0000ff;">R3上帧中继配置</span><br />
interface Tunnel0<br />
no ip address<br />
tunnel source 23.0.0.3<br />
tunnel destination 23.0.0.2<br />
!<br />
interface Serial0/0<br />
no ip address<br />
encapsulation frame-relay<br />
clock rate 64000<br />
frame-relay lmi-type cisco<br />
frame-relay intf-type dce<br />
frame-relay route 501 interface Tunnel0 200<br />
frame-relay route 504 interface Tunnel0 101<br />
!<br />
interface FastEthernet1/0<br />
ip address 23.0.0.3 255.255.255.0<br />
!</p>
<p><span style="color: #0000ff;">2、R1、R4、R5基本配置</span><br />
<span style="color: #0000ff;">R1基本配置</span><br />
interface Loopback0<br />
ip address 1.1.1.1 255.255.255.0<br />
!<br />
interface Serial0/0<br />
ip address 10.0.0.1 255.255.255.0<br />
encapsulation frame-relay<br />
serial restart-delay 0<br />
frame-relay lmi-type cisco<br />
!<br />
router ospf 110<br />
router-id 1.1.1.1<br />
log-adjacency-changes<br />
network 1.1.1.1 0.0.0.0 area 0<br />
network 10.0.0.0 0.0.0.255 area 0</p>
<p><span style="color: #0000ff;">R4基本配置</span><br />
interface Loopback1<br />
ip address 4.4.4.4 255.255.255.0<br />
!<br />
interface Serial0/0<br />
ip address 10.0.0.4 255.255.255.0<br />
encapsulation frame-relay<br />
serial restart-delay 0<br />
frame-relay lmi-type cisco<br />
!<br />
router ospf 110<br />
router-id 4.4.4.4<br />
log-adjacency-changes<br />
network 4.4.4.4 0.0.0.0 area 0<br />
network 10.0.0.0 0.0.0.255 area 0</p>
<p><span style="color: #0000ff;">R5基本配置</span><br />
interface Loopback0<br />
ip address 5.5.5.5 255.255.255.0<br />
!<br />
interface Serial0/0<br />
ip address 10.0.0.5 255.255.255.0<br />
encapsulation frame-relay<br />
serial restart-delay 0<br />
frame-relay lmi-type cisco<br />
!<br />
router ospf 110<br />
router-id 5.5.5.5<br />
log-adjacency-changes<br />
network 5.5.5.5 0.0.0.0 area 0<br />
network 10.0.0.0 0.0.0.255 area 0<br />
!</p>
<p><span style="color: #0000ff;">3、根据讨论情况A，R4上指定OSPF邻居，且指定为DR</span></p>
<p><span style="color: #ff0000;">R1和R5接口优先级为0，不参加OSPF角色选举</span><br />
R1(config)#int s0/0<br />
R1(config-if)#ip os priority 0</p>
<p>R5(config)#int s0/0<br />
R5(config-if)#ip os priority 0</p>
<p><span style="color: #ff0000;">只需在R4上手工指定R1、R5为邻居</span><br />
R4(config)#router os 110<br />
R4(config-router)#neighbor 10.0.0.1<br />
R4(config-router)#neighbor 10.0.0.5</p>
<p><span style="color: #0000ff;">4、 根据讨论情况B，R4配置点到多点子接口</span></p>
<p>R4(config)#default int s0/0<br />
R4(config)#int s0/0<br />
R4(config-if)# no ip address<br />
R4(config-if)# encapsulation frame-relay<br />
R4(config-if)#frame-relay lmi-type cisco<br />
<span style="color: #ff0000;">需要手工指定frame-relay map</span><br />
R4(config-if)#no frame-relay inverse-arp<br />
<span style="color: #ff0000;">配置点到多点子接口</span><br />
R4(config)#int s0/0.10 multipoint<br />
R4(config-subif)#ip address 10.0.0.4 255.255.255.0<br />
<span style="color: #ff0000;">子接口也配上</span><br />
R4(config-subif)#no frame-relay inverse-arp</p>
<p><span style="color: #ff0000;">手工指定frame-relay map</span><br />
R4(config-subif)#frame-relay map ip 10.0.0.1 401 broadcast<br />
R4(config-subif)#frame-relay map ip 10.0.0.5 405 broadcast</p>
<p>R1(config-if)#frame-relay map ip 10.0.0.4 104 broadcast<br />
R1(config-if)#frame-relay map ip 10.0.0.5 105 broadcast</p>
<p>R5(config-if)#frame-relay map ip 10.0.0.1 501 broadcast<br />
R5(config-if)#frame-relay map ip 10.0.0.4 504 broadcast</p>
<p><span style="color: #ff0000;">修改接口网络类型</span><br />
R1(config)#int s0/0<br />
R1(config-if)#ip os network point-to-multipoint</p>
<p>R5(config)#int s0/0<br />
R5(config-if)#ip os network point-to-multipoint<br />
<span style="color: #ff0000;">注：如果R1到R5的frame-relay map没有配置，那么R1不能与R5互通</span></p>
<p><span style="color: #0000ff;">5、根据讨论情况C，R4配置点到点子接口</span></p>
<p><span style="color: #ff0000;">注：R4的S0/0口和R1、R4、R5手工指定frame-relay map同4中配置</span></p>
<p><span style="color: #ff0000;">R4与R1处于同一网段，100.0.0.0/24</span><br />
R4(config)#int s0/0.100 point-to-point<br />
R4(config-subif)#ip address 100.0.0.4 255.255.255.0<br />
R4(config-subif)#frame-relay interface-dlci 401</p>
<p><span style="color: #ff0000;">R4与R5处于同一网段，101.0.0.0/24</span><br />
R4(config)#int s0/0.101 point-to-point<br />
R4(config-subif)#ip address 101.0.0.4 255.255.255.0<br />
R4(config-subif)#frame-relay interface-dlci 405</p>
<p><span style="color: #ff0000;">R1和R5修改接口IP地址</span><br />
R1(config)#int s0/0<br />
R1(config-if)# ip address 100.0.0.1 255.255.255.0</p>
<p>R5(config)#int s0/0<br />
R5(config-if)# ip address 101.0.0.5 255.255.255.0</p>
<p><span style="color: #ff0000;">修改OSPF宣告的网络地址</span><br />
R4(config)#router os 110<br />
R4(config-router)#no network 10.0.0.0 0.0.0.255 area 0<br />
R4(config-router)#network 100.0.0.0 0.0.0.255 area 0<br />
R4(config-router)#network 101.0.0.0 0.0.0.255 area 0</p>
<p>R1(config)#router os 110<br />
R1(config-router)#no network 10.0.0.0 0.0.0.255 area 0<br />
R1(config-router)#network 100.0.0.0 0.0.0.255 area 0</p>
<p>R5(config)#router os 110<br />
R5(config-router)#no network 10.0.0.0 0.0.0.255 area 0<br />
R5(config-router)#network 101.0.0.0 0.0.0.255 area 0</p>
<p><span style="color: #ff0000;">修改接口网络类型</span><br />
R1(config)#int s0/0<br />
R1(config-if)#ip os network point-to-point</p>
<p>R5(config)#int s0/0<br />
R5(config-if)#ip os network point-to-point</p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.joansky.com/ccnp-ospf-network.html/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>百度求职经历---系统工程师（基础运维&amp;系统服务）</title>
		<link>http://www.joansky.com/baidu-jobhunting.html</link>
		<comments>http://www.joansky.com/baidu-jobhunting.html#comments</comments>
		<pubDate>Thu, 24 Nov 2011 05:34:20 +0000</pubDate>
		<dc:creator>Joan</dc:creator>
				<category><![CDATA[工作心得]]></category>
		<category><![CDATA[工作]]></category>
		<category><![CDATA[求职]]></category>
		<category><![CDATA[百度]]></category>

		<guid isPermaLink="false">http://www.joansky.com/?p=186</guid>
		<description><![CDATA[7、8月份看百度、网易、腾讯的职位招聘要求，发现只有百度的系统工程师（基础运维&#38;系统服务）比较适合我目前所学知识。于是在9月底网申了该职位，并关注了百度校园招聘，10月7号早上被短信吵醒，通知我9号去大学城笔试，那个兴奋啊。只有两天时间让我准备笔试，那两天主要在看一些比较基础的网络知识和Linux，因为我对Linux只了解些皮毛，越看越没信心... 笔试： 8号晚上去了大学城，在一个同学宿舍那借宿，第二天早上同学带我去笔试地点---中山大学。10点开始发试卷，浏览了下试题，居然都是编程和算法，一道网络题都没有。我以为发错试卷了，再仔细一看，试卷上标明了系统工程师，好吧，只能硬着头皮做了，还好我大一大二基础课还学得可以。印象里笔试题有简答和编程。简答题：两道程序问题分析；知道有哪些RAID，至少写三个；一些看不懂的磁盘算法问题；一道shell编程。编程题：求最长不减子序列的长度；一个数组模拟三个栈；二叉树中两个叶子节点之间的距离；在一个序列中1-N，N&#60;M，求在这个序列中两次相加等于M的数对，要求算法优化。 PS：学科基础课还是要认真学的，特别是算法和编程。 会答的都答了，然后交卷。本来打算下午回校，但是由于周末时间高校联谊的票都被订完了，只能第二天再走了。晚上约了几个高中同学去广州看灯展，回到宿舍10点多。准备洗刷的时候电话响了，拿起电话，“请问你是廖华琼吗？我是百度人力资源XX，明天下午6点能不能到XXX酒店进行面试，......”。这居然是通知面试的，当时都11点半了，百度工作人员真是辛苦了。话说我RP还是很好的，下午没能订到回校的票不然我第二天还得跑趟=_= 一面： 第二天下午5点顺利找到面试地点，面试5点半开始。一对一面试，面试官让我做下自我介绍，问我什么时候对网络有所了解，接着进入技术环节，首先是TCP三次握手；从三次握手引申出了---如果没有收到客户端的ACK，服务器会怎么样；两个mac地址不同网段如何通信；接着面试官问我对Linux掌握得怎么样，我马上如实回答---略懂皮毛。不过还是问了挺多关于Linux的，比如，linux文件系统有什么；etx2和etx3的区别；查看内存使用情况；查看硬件信息；/PROC文件的特殊之处。最后一面以一道编程题结束，找子串。最后了解了下我的发展方向，考研还是直接工作。估计面试官主要是学Linux的，让人感觉蛮和蔼的，一开始还有点紧张，聊着聊着也放松下来了。 PS：这是我的处女面撒，哈哈，给了百度也无憾了。 二面： 12号接到电话面试通知，让我明天下午2点保证电话通畅。这次是电面，面试官是系统部的，问了一堆路由、交换知识和网络协议。依旧以TCP三次握手作为开场白；OSPF知识：建立过程，DR选举，Router-id选举；对BGP的一些理解；BGP属性；STP工作过程；DNS、邮件端口号；DNS使用的协议；linux网络配置命令。面试官对我的回答一直表示很满意，问我是不是清楚我的工作地点是在北京（广东的同学基本上工作岗位都选择百度分公司-深圳）。最后我了解了下系统部目前大概情况，面试官让我等通知。自我感觉应该能通过。 三面： 17号才接到三面通知，这几天上个洗手间都不敢忘了带手机哇。面试时间是19号下午两点，但面试官临时出差了，时间改到了20号。这一次依旧是电话面试，面试官应该是系统部的Boss，让我先进行了自我介绍，并让我简单说下项目的主要内容和职责，以及项目的设计思路。依旧以TCP三次握手进入话题，问TCP协议可能存在的攻击；接下来还是路由知识：OSPF工作过程；BGP自同步问题；路由黑洞解决方法；looback 口作用；router-id 的作用；enable secure 与enable password的区别。最后面试官提醒我这个职位是需要7*24小时服务，有点累，问我是否能接收。这个问题给了我一剂定心丸---拿Offer的概率应该很高吧。 拿Offer： 经过5天地漫长地等待，北京HR终于通知我拿到口头Offer了，并简单说了下待遇....告诉我11月中旬会有HR到广州收三方协议。光棍节那天HR通知我18号到广州暨大交三方。交三方那天岐关车居然迟到40分钟，还好能在约定时间前赶到，顺利交了三方也拿了纸质版Offer，然后跟一起签约的同学们在暨大附近餐厅聚餐。话说去的七个女生里就我一个是做技术了... 百度求职算是划上圆满的句号，毕业论文也已经完成了，打算2月份去百度实习。从没去去北方的我，不知道能不能很快适应那边的天气；第一次去企业实习的我，不知道能不能很快进入工作状态。一切都是未知数，争取做到最好，加油撒！]]></description>
			<content:encoded><![CDATA[<p>7、8月份看百度、网易、腾讯的职位招聘要求，发现只有百度的系统工程师（基础运维&amp;系统服务）比较适合我目前所学知识。于是在9月底网申了该职位，并关注了百度校园招聘，10月7号早上被短信吵醒，通知我9号去大学城笔试，那个兴奋啊。只有两天时间让我准备笔试，那两天主要在看一些比较基础的网络知识和Linux，因为我对Linux只了解些皮毛，越看越没信心...</p>
<p><span style="color: #0000ff;">笔试：</span></p>
<p>8号晚上去了大学城，在一个同学宿舍那借宿，第二天早上同学带我去笔试地点---中山大学。10点开始发试卷，浏览了下试题，居然都是编程和算法，一道网络题都没有。我以为发错试卷了，再仔细一看，试卷上标明了系统工程师，好吧，只能硬着头皮做了，还好我大一大二基础课还学得可以。印象里笔试题有简答和编程。简答题：两道程序问题分析；知道有哪些RAID，至少写三个；一些看不懂的磁盘算法问题；一道shell编程。编程题：求最长不减子序列的长度；一个数组模拟三个栈；二叉树中两个叶子节点之间的距离；在一个序列中1-N，N&lt;M，求在这个序列中两次相加等于M的数对，要求算法优化。</p>
<p><span style="color: #0000ff;">PS：学科基础课还是要认真学的，特别是算法和编程。</span></p>
<p>会答的都答了，然后交卷。本来打算下午回校，但是由于周末时间高校联谊的票都被订完了，只能第二天再走了。晚上约了几个高中同学去广州看灯展，回到宿舍10点多。准备洗刷的时候电话响了，拿起电话，“请问你是廖华琼吗？我是百度人力资源XX，明天下午6点能不能到XXX酒店进行面试，......”。这居然是通知面试的，当时都11点半了，百度工作人员真是辛苦了。话说我RP还是很好的，下午没能订到回校的票不然我第二天还得跑趟=_=</p>
<p><span style="color: #0000ff;">一面：</span></p>
<p>第二天下午5点顺利找到面试地点，面试5点半开始。一对一面试，面试官让我做下自我介绍，问我什么时候对网络有所了解，接着进入技术环节，首先是TCP三次握手；从三次握手引申出了---如果没有收到客户端的ACK，服务器会怎么样；两个mac地址不同网段如何通信；接着面试官问我对Linux掌握得怎么样，我马上如实回答---略懂皮毛。不过还是问了挺多关于Linux的，比如，linux文件系统有什么；etx2和etx3的区别；查看内存使用情况；查看硬件信息；/PROC文件的特殊之处。最后一面以一道编程题结束，找子串。最后了解了下我的发展方向，考研还是直接工作。估计面试官主要是学Linux的，让人感觉蛮和蔼的，一开始还有点紧张，聊着聊着也放松下来了。</p>
<p><span style="color: #0000ff;">PS：这是我的处女面撒，哈哈，给了百度也无憾了。</span></p>
<p><span style="color: #0000ff;">二面：</span></p>
<p>12号接到电话面试通知，让我明天下午2点保证电话通畅。这次是电面，面试官是系统部的，问了一堆路由、交换知识和网络协议。依旧以TCP三次握手作为开场白；OSPF知识：建立过程，DR选举，Router-id选举；对BGP的一些理解；BGP属性；STP工作过程；DNS、邮件端口号；DNS使用的协议；linux网络配置命令。面试官对我的回答一直表示很满意，问我是不是清楚我的工作地点是在北京（广东的同学基本上工作岗位都选择百度分公司-深圳）。最后我了解了下系统部目前大概情况，面试官让我等通知。自我感觉应该能通过。</p>
<p><span style="color: #0000ff;">三面：</span></p>
<p>17号才接到三面通知，这几天上个洗手间都不敢忘了带手机哇。面试时间是19号下午两点，但面试官临时出差了，时间改到了20号。这一次依旧是电话面试，面试官应该是系统部的Boss，让我先进行了自我介绍，并让我简单说下项目的主要内容和职责，以及项目的设计思路。依旧以TCP三次握手进入话题，问TCP协议可能存在的攻击；接下来还是路由知识：OSPF工作过程；BGP自同步问题；路由黑洞解决方法；looback 口作用；router-id 的作用；enable secure 与enable password的区别。最后面试官提醒我这个职位是需要7*24小时服务，有点累，问我是否能接收。这个问题给了我一剂定心丸---拿Offer的概率应该很高吧。</p>
<p><span style="color: #0000ff;">拿Offer：</span></p>
<p>经过5天地漫长地等待，北京HR终于通知我拿到口头Offer了，并简单说了下待遇....告诉我11月中旬会有HR到广州收三方协议。光棍节那天HR通知我18号到广州暨大交三方。交三方那天岐关车居然迟到40分钟，还好能在约定时间前赶到，顺利交了三方也拿了纸质版Offer，然后跟一起签约的同学们在暨大附近餐厅聚餐。话说去的七个女生里就我一个是做技术了...</p>
<p><span style="color: #0000ff;">百度求职算是划上圆满的句号，毕业论文也已经完成了，打算2月份去百度实习。从没去去北方的我，不知道能不能很快适应那边的天气；第一次去企业实习的我，不知道能不能很快进入工作状态。一切都是未知数，争取做到最好，加油撒！</span></p>
]]></content:encoded>
			<wfw:commentRss>http://www.joansky.com/baidu-jobhunting.html/feed</wfw:commentRss>
		<slash:comments>19</slash:comments>
		</item>
		<item>
		<title>CCNP实验---OSPF多区域+帧中继配置</title>
		<link>http://www.joansky.com/ccnp-ospf-frame-relay.html</link>
		<comments>http://www.joansky.com/ccnp-ospf-frame-relay.html#comments</comments>
		<pubDate>Thu, 29 Sep 2011 14:57:29 +0000</pubDate>
		<dc:creator>Joan</dc:creator>
				<category><![CDATA[CCNP实验报告]]></category>
		<category><![CDATA[cisco]]></category>
		<category><![CDATA[route]]></category>

		<guid isPermaLink="false">http://www.joansky.com/?p=185</guid>
		<description><![CDATA[一 实验环境：C3640-IK9O3S-M Version 12.4(10) 二 实验拓扑 三 实验描述： 根据拓扑中区域的划分配置OSPF。OSPF的骨干区域在R1的loopback上。配置帧中继，R1与R2在Area 100，网络类型为点到点。R1与R3在Area 300，网络类型为NBMA，且Area 300 为NSSA类型。R2上的loopback在Area 200，且对路由进行汇总。将R3上的loopback口重分布进OSPF中。为了使全网都通，需要在Area 300上创建虚链路。 四 实验步骤： 1 R3上帧中继配置 //1 启动帧中继交换 frame-relay switching ！ //2 进入接口 interface Serial0/0 //3 删除IP地址 no ip address //4 配置帧中继封装类型 encapsulation frame-relay IETF //下面两条命令可不加 no ip route-cache cef no ip route-cache serial restart-delay 0 //5 配置时钟 clock rate 64000 //6 [...]]]></description>
			<content:encoded><![CDATA[<p><span style="color: #0000ff;">一 实验环境：C3640-IK9O3S-M Version 12.4(10)</span></p>
<p><span style="color: #0000ff;">二 实验拓扑</span></p>
<p><img class="alignnone size-full wp-image-184" title="ospf+fr" src="http://www.joansky.com/wp-content/uploads/2011/09/ospf+fr.png" alt="ospf+fr" width="820" height="341" /></p>
<p><span style="color: #0000ff;">三 实验描述：</span></p>
<p>根据拓扑中区域的划分配置OSPF。OSPF的骨干区域在R1的loopback上。配置帧中继，R1与R2在Area 100，网络类型为点到点。R1与R3在Area 300，网络类型为NBMA，且Area 300 为NSSA类型。R2上的loopback在Area 200，且对路由进行汇总。将R3上的loopback口重分布进OSPF中。为了使全网都通，需要在Area 300上创建虚链路。</p>
<p><span style="color: #0000ff;"><span id="more-185"></span>四 实验步骤：</span></p>
<p><span style="color: #0000ff;">1 R3上帧中继配置</span></p>
<p><span style="color: #ff0000;">//1 启动帧中继交换</span><br />
frame-relay switching<br />
！<br />
<span style="color: #ff0000;">//2 进入接口</span><br />
interface Serial0/0<br />
<span style="color: #ff0000;">//3 删除IP地址</span><br />
no ip address<br />
<span style="color: #ff0000;">//4 配置帧中继封装类型</span><br />
encapsulation frame-relay IETF<br />
//下面两条命令可不加<br />
no ip route-cache cef<br />
no ip route-cache<br />
serial restart-delay 0<br />
<span style="color: #ff0000;">//5 配置时钟</span><br />
clock rate 64000<br />
<span style="color: #ff0000;">//6 配置为DCE终端类型</span><br />
frame-relay intf-type dce<br />
<span style="color: #ff0000;">//7 配置帧中继路由</span><br />
frame-relay route 102 interface Serial0/1 201<br />
frame-relay route 103 interface Serial0/2 301<br />
<span style="color: #ff0000;">//8 别忘了要启用接口，这里是不用显示no shutdown命令的</span><br />
!<br />
interface Serial0/1<br />
no ip address<br />
encapsulation frame-relay IETF<br />
serial restart-delay 0<br />
frame-relay intf-type dce<br />
frame-relay route 201 interface Serial0/0 102<br />
!<br />
interface Serial0/2<br />
no ip address<br />
encapsulation frame-relay IETF<br />
serial restart-delay 0<br />
clock rate 64000<br />
frame-relay intf-type dce<br />
frame-relay route 301 interface Serial0/0 103<br />
!</p>
<p><span style="color: #0000ff;">2  R1基本配置</span></p>
<p>interface Loopback1<br />
ip address 10.1.1.9 255.255.255.252<br />
ip ospf network point-to-point<br />
!<br />
interface Serial0/1<br />
no ip address<br />
encapsulation frame-relay IETF<br />
serial restart-delay 0<br />
!<br />
interface Serial0/1.102 point-to-point<br />
ip address 10.1.1.1 255.255.255.252<br />
frame-relay interface-dlci 102<br />
!<br />
interface Serial0/1.103 point-to-point<br />
ip address 10.1.1.5 255.255.255.252<br />
frame-relay interface-dlci 103<br />
!</p>
<p><span style="color: #0000ff;">3 R2 基本配置</span></p>
<p>interface Loopback101<br />
ip address 10.1.1.101 255.255.255.252<br />
ip ospf network point-to-point<br />
!<br />
interface Loopback105<br />
ip address 10.1.1.105 255.255.255.252<br />
ip ospf network point-to-point<br />
!<br />
interface Loopback109<br />
ip address 10.1.1.109 255.255.255.252<br />
ip ospf network point-to-point<br />
!<br />
interface Loopback113<br />
ip address 10.1.1.113 255.255.255.252<br />
ip ospf network point-to-point<br />
!<br />
interface Serial0/1<br />
ip address 10.1.1.2 255.255.255.252<br />
encapsulation frame-relay IETF<br />
serial restart-delay 0<br />
frame-relay interface-dlci 201<br />
!</p>
<p><span style="color: #0000ff;">4 R4基本配置</span></p>
<p>interface Loopback3<br />
ip address 10.1.1.13 255.255.255.252<br />
!<br />
interface Serial0/1<br />
ip address 10.1.1.6 255.255.255.252<br />
encapsulation frame-relay IETF<br />
serial restart-delay 0<br />
frame-relay interface-dlci 301<br />
!</p>
<p><span style="color: #0000ff;">5 配置Area 0区域</span></p>
<p>R1(config)#router ospf 1<br />
R1(config-router)#router-id 1.1.1.1<br />
R1(config-router)network 10.1.1.8 0.0.0.3 area 0</p>
<p><span style="color: #0000ff;">6 配置Area100区域，网络类型为点到点</span></p>
<p>修改Serial0/1.102的接口类型<br />
R1(config)#interface Serial0/1.102 point-to-point<br />
R1(config-subif)ip ospf network point-to-point<br />
注：如果不确定接口类型，可以使用sh ip os int s0/1.102命令进行查看</p>
<p>R1(config)#router ospf 1<br />
R1(config-router)network 10.1.1.0 0.0.0.3 area 100</p>
<p>R2(config)router ospf 1<br />
R2(config-router)router-id 2.2.2.2<br />
R2(config-router)network 10.1.1.0 0.0.0.3 area 100<br />
因为R2上s0/1的接口类型默认为点到点，所以无需修改<br />
<span style="color: #0000ff;"><br />
7 配置Area300区域，网络类型为NBMA，且为NSSA类型</span></p>
<p>修改Serial0/1.103的接口类型<br />
R1(config)#interface Serial0/1.103 point-to-point<br />
R1(config-subif)ip ospf network non-broadcast</p>
<p>R1(config)#router ospf 1<br />
R1(config-router)network 10.1.1.4 0.0.0.3 area 300<br />
R1(config-router)area 300 nssa<br />
//在NBMA网络中需手工指点neighbor<br />
R1(config-router)neighbor 10.1.1.6</p>
<p>R4(config)router ospf 1<br />
R4(config-router)router-id 4.4.4.4<br />
R4(config-router)network 10.1.1.4 0.0.0.3 area 300<br />
R4(config-router)area 300 nssa</p>
<p><span style="color: #0000ff;">8 配置Area 200区域，且进行路由汇总</span></p>
<p>R2(config-router)network 10.1.1.96 0.0.0.31 area 200<br />
R2(config-router)area 200 range 10.1.1.96 255.255.255.224</p>
<p>R1-R2配置为虚链路，实现全网互通<br />
R1(config-router)area 100 virtual-link 2.2.2.2<br />
R2(config-router) area 100 virtual-link 1.1.1.1</p>
<p><span style="color: #0000ff;">9 将R4回环口的路由重分布进OSPF中</span><br />
R4(config-router)redistribute connected subnets</p>
<p><span style="color: #0000ff;">10 最后查看R1路由条目</span></p>
<p>R1# show ip route</p>
<p>10.0.0.0/8 is variably subnetted, 5 subnets, 2 masks<br />
C       10.1.1.8/30 is directly connected, Loopback1<br />
<span style="color: #ff0000;">O N2    10.1.1.12/30 [110/20] via 10.1.1.6, 00:00:27, Serial0/1.103</span><br />
C       10.1.1.0/30 is directly connected, Serial0/1.102<br />
C       10.1.1.4/30 is directly connected, Serial0/1.103<span style="color: #ff0000;"><br />
O IA    10.1.1.96/27 [110/65] via 10.1.1.2, 00:00:27, Serial0/1.102</span></p>
]]></content:encoded>
			<wfw:commentRss>http://www.joansky.com/ccnp-ospf-frame-relay.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>CCNP实验---使用重分布静态路由+prefix lists，对RIP进行路由汇总</title>
		<link>http://www.joansky.com/ccnp-static-prefix-lists-rip.html</link>
		<comments>http://www.joansky.com/ccnp-static-prefix-lists-rip.html#comments</comments>
		<pubDate>Thu, 29 Sep 2011 05:03:34 +0000</pubDate>
		<dc:creator>Joan</dc:creator>
				<category><![CDATA[CCNP实验报告]]></category>
		<category><![CDATA[cisco]]></category>
		<category><![CDATA[route]]></category>

		<guid isPermaLink="false">http://www.joansky.com/?p=183</guid>
		<description><![CDATA[一、实验拓扑 二、实验描述 R1和R2都运行RIPv2，让双方都拥有全网拓扑。关闭RIPv2自动汇总功能。为了减少R2上的路由条目，在R1上使用 ip summary-address rip命令进行手工汇总，但是RIPv2中手工汇总所宣告的子网掩码长度只能大于等于主类路由的子网掩码长度。 这样，使用 ip summary-address rip命令肯定是行不通。怎么办呢?下面我将提供另一种方法进行RIPV2的汇总。 三、实验步骤 1 R1基本配置 interface Loopback0 ip address 172.16.1.1 255.255.255.0 ! interface Loopback48 ip address 192.168.48.1 255.255.255.0 ! interface Loopback49 ip address 192.168.49.1 255.255.255.0 ! interface Loopback50 ip address 192.168.50.1 255.255.255.0 ! interface Loopback51 ip address 192.168.51.1 255.255.255.0 ! interface Serial0/0 bandwidth 64 ip address 172.16.12.1 [...]]]></description>
			<content:encoded><![CDATA[<p><span style="color: #0000ff;">一、实验拓扑</span><br />
<img class="alignnone size-full wp-image-182" title="RIP_summary" src="http://www.joansky.com/wp-content/uploads/2011/09/RIP_summary.png" alt="RIP_summary" width="524" height="208" /></p>
<p><span style="color: #0000ff;">二、实验描述</span></p>
<p>R1和R2都运行RIPv2，让双方都拥有全网拓扑。关闭RIPv2自动汇总功能。为了减少R2上的路由条目，在R1上使用 ip summary-address rip命令进行手工汇总，但是RIPv2中手工汇总所宣告的子网掩码长度只能大于等于主类路由的子网掩码长度。</p>
<p>这样，使用 ip summary-address rip命令肯定是行不通。怎么办呢?下面我将提供另一种方法进行RIPV2的汇总。</p>
<p><span style="color: #0000ff;">三、实验步骤</span></p>
<p><span style="color: #0000ff;">1 R1基本配置</span></p>
<p>interface Loopback0<br />
ip address 172.16.1.1 255.255.255.0<br />
!<br />
interface Loopback48<br />
ip address 192.168.48.1 255.255.255.0<br />
!<br />
interface Loopback49<br />
ip address 192.168.49.1 255.255.255.0<br />
!<br />
interface Loopback50<br />
ip address 192.168.50.1 255.255.255.0<br />
!<br />
interface Loopback51<br />
ip address 192.168.51.1 255.255.255.0<br />
!<br />
interface Serial0/0<br />
bandwidth 64<br />
ip address 172.16.12.1 255.255.255.0<br />
serial restart-delay 0<br />
clock rate 64000<br />
!<br />
router rip<br />
version 2<br />
//只让s0/0接口发送更新，减少路由器资源<br />
passive-interface default<br />
no passive-interface Serial0/0<br />
network 172.16.0.0<br />
network 192.168.48.0<br />
network 192.168.49.0<br />
network 192.168.50.0<br />
network 192.168.51.0<br />
no auto-summary<br />
!</p>
<p><span style="color: #0000ff;">2 R2基本配置</span></p>
<p>interface Loopback0<br />
ip address 172.16.2.1 255.255.255.0<br />
!<br />
interface Serial0/0<br />
bandwidth 64<br />
ip address 172.16.12.2 255.255.255.0<br />
serial restart-delay 0<br />
!<br />
router rip<br />
version 2<br />
passive-interface Loopback0<br />
network 172.16.0.0<br />
no auto-summary<br />
!</p>
<p><span style="color: #0000ff;">3 查看R2路由器条目</span></p>
<p>R2# show ip route rip<br />
172.16.0.0/24 is subnetted, 4 subnets<br />
R       172.16.1.0 [120/1] via 172.16.12.1, 00:00:29, Serial0/0<br />
R    192.168.51.0/24 [120/1] via 172.16.12.1, 00:00:29, Serial0/0<br />
R    192.168.50.0/24 [120/1] via 172.16.12.1, 00:00:29, Serial0/0<br />
R    192.168.49.0/24 [120/1] via 172.16.12.1, 00:00:29, Serial0/0<br />
R    192.168.48.0/24 [120/1] via 172.16.12.1, 00:00:29, Serial0/0</p>
<p><span style="color: #0000ff;">4 在R1上做路由汇总</span></p>
<p>R1(config)# interface serial 0/0<br />
R1(config-if)# ip summary-address rip 192.168.48.0 255.255.252.0<br />
<span style="color: #ff0000;">Summary mask must be greater or equal to major net </span></p>
<p><span style="color: #ff0000;">将连续的C类路由在R1的s0/0使用ip summary address rip命令进行路由汇总时，你会发现路由器只允许汇总的子网掩码长度大于等于主类网络。<br />
注：其它路由协议汇总并没有此限制</span></p>
<p><span style="color: #0000ff;">5 R1上进行静态路由重分布</span></p>
<p>想一下，EIGRP中汇总路由条目在汇总路由器上的下一跳接口可以指向Null0，那么我们是不是也可以在R1上创建这样一条汇总路由让它下一跳指向Null0，并进行路由重分布呢。</p>
<p><span style="color: #ff0000;">R1(config)# ip route 192.168.48.0 255.255.252.0 null0<br />
R1(config)# router rip<br />
R1(config-router)# redistribute static </span></p>
<p><span style="color: #0000ff;">6 查看R1和R2路由条目</span></p>
<p>R1# show ip route</p>
<p>Gateway of last resort is not set</p>
<p>172.16.0.0/24 is subnetted, 4 subnets<br />
C       172.16.12.0 is directly connected, Serial0/0<br />
C       172.16.1.0 is directly connected, Loopback0<br />
R       172.16.2.0 [120/1] via 172.16.12.2, 00:00:27, Serial0/0<br />
C    192.168.51.0/24 is directly connected, Loopback51<br />
C    192.168.50.0/24 is directly connected, Loopback50<br />
C    192.168.49.0/24 is directly connected, Loopback49<br />
C    192.168.48.0/24 is directly connected, Loopback48<br />
<span style="color: #0000ff;">S    192.168.48.0/22 is directly connected, Null0 </span></p>
<p>R2# show ip route</p>
<p>Gateway of last resort is not set</p>
<p>172.16.0.0/24 is subnetted, 4 subnets<br />
C       172.16.12.0 is directly connected, Serial0/0<br />
R       172.16.1.0 [120/1] via 172.16.12.1, 00:00:05, Serial0/0<br />
C       172.16.2.0 is directly connected, Loopback0<br />
<span style="color: #0000ff;">R    192.168.51.0/24 [120/1] via 172.16.12.1, 00:00:05, Serial0/0<br />
R    192.168.50.0/24 [120/1] via 172.16.12.1, 00:00:05, Serial0/0<br />
R    192.168.49.0/24 [120/1] via 172.16.12.1, 00:00:05, Serial0/0<br />
R    192.168.48.0/24 [120/1] via 172.16.12.1, 00:00:07, Serial0/0 </span><br />
<span style="color: #ff0000;">R    192.168.48.0/22 [120/1] via 172.16.12.1, 00:00:07, Serial0/0</span></p>
<p>可以看到R1和R2都出现汇总路由，但显然4条连续C类路由还是出现在R2上<br />
<span style="color: #ff0000;">注：RIP或EIGRP这样的距离矢量路由，要求全网路由表是要同步的。</span></p>
<p><span style="color: #0000ff;">7 使用prefix list过滤路由条目</span></p>
<p>为了减少R2路由条目，只能进行路由过滤，这里使用prefix lists过滤路由条目。在R1上使用 prefix list作为分发列表来过滤loopback口上48到51的路由，并允许其他的路由包括总结路由</p>
<p><span style="color: #ff0000;">R1(config)# ip prefix-list RIP-OUT permit 192.168.48.0/22<br />
R1(config)# ip prefix-list RIP-OUT deny 192.168.48.0/22 le 24<br />
R1(config)# ip prefix-list RIP-OUT permit 0.0.0.0/0 le 32 </span></p>
<p>第一条的prefix list允许总结路由，因为它使用22位的子网掩码严格匹配192.168.48.0网络</p>
<p>第二条的prefix list禁止子网掩码长度在22到24的192.168.48.0/22的网络块。这条也会匹配22位的总结路由。</p>
<p>第三条允许其它所有的路由</p>
<p><span style="color: #0000ff;">8 将过滤列表应用在R1的出口方向上</span></p>
<p><span style="color: #ff0000;">R1(config)# router rip<br />
R1(config-router)# distribute-list prefix RIP-OUT out serial0/0</span></p>
<p><span style="color: #0000ff;">9 清除路由条目</span></p>
<p><span style="color: #0000ff;">R2#clear ip route * </span></p>
<p>R2# show ip route rip<br />
172.16.0.0/24 is subnetted, 4 subnets<br />
R       172.16.1.0 [120/1] via 172.16.12.1, 00:00:12, Serial0/0<br />
<span style="color: #0000ff;">R    192.168.48.0/22 [120/1] via 172.16.12.1, 00:00:12, Serial0/0</span></p>
]]></content:encoded>
			<wfw:commentRss>http://www.joansky.com/ccnp-static-prefix-lists-rip.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>CCNP实验---多种方法影响BGP路径选择</title>
		<link>http://www.joansky.com/ccnp-bgp-attribute.html</link>
		<comments>http://www.joansky.com/ccnp-bgp-attribute.html#comments</comments>
		<pubDate>Fri, 02 Sep 2011 18:08:00 +0000</pubDate>
		<dc:creator>Joan</dc:creator>
				<category><![CDATA[CCNP实验报告]]></category>
		<category><![CDATA[CCNP]]></category>
		<category><![CDATA[cisco]]></category>

		<guid isPermaLink="false">http://www.joansky.com/?p=181</guid>
		<description><![CDATA[1、实验目的：修改attribute中的weigtht、local preference、AS-path以及MED属性值来满足BGP路径选择需求 2、实验环境：C3640-IK9O3S-M Version 12.4(10) 3、实验拓扑 4、实验描述 四个路由器运行BGP，R1与R2、R4与R3为IBGP关系，R1与R4、R2与R3为EBGP关系。四个路由器分别使用环回口建立子网，且让对方互相学习到路由信息，实现全拓扑互通。 按照正常配置，会发现R3到达R1的1.1.1.1/24网段有两种路径，第一种，R3-&#62;R4-&#62;R1，第二种，R3-&#62;R2-&#62;R1。根据BGP选路的11个原则（这里就不一一列出来了，需要的话到思科官方网站上查阅），匹配第7条---Prefer EBGP over IBGP paths，故R3会选择第二种路径，经过R2。 但是R3到达1.1.1.1/24网段使用R2作为下一跳并不是最佳路径选择，因为R3与R2是串行链路，而R1与R4是以太网线路，很明显我们应该选择带宽较大的R4作为下一跳。为了让R3选择R4作为下一跳，我们可以分别修改BGP attribute中的weigtht、local preference、AS-path以及MED值来达到目的。 5、实验步骤 A、R1基本配置 interface Loopback0 ip address 1.1.1.1 255.255.255.0 ! interface Serial0/0 ip address 12.0.0.1 255.255.255.0 ! interface FastEthernet1/0 ip address 14.0.0.1 255.255.255.0 ! router rip version 2 network 1.0.0.0 network 12.0.0.0 ! router bgp 12 no synchronization bgp router-id [...]]]></description>
			<content:encoded><![CDATA[<p><span style="color: #0000ff;">1、实验目的：修改attribute中的weigtht、local preference、AS-path以及MED属性值来满足BGP路径选择需求<br />
</span></p>
<p><span style="color: #0000ff;">2、实验环境：C3640-IK9O3S-M Version 12.4(10)</span></p>
<p><span style="color: #0000ff;">3、实验拓扑</span><br />
<img class="alignnone size-full wp-image-180" title="BGP_attribute" src="http://www.joansky.com/wp-content/uploads/2011/09/BGP_attribute.png" alt="BGP_attribute" width="595" height="348" /></p>
<p><span style="color: #0000ff;">4、实验描述</span></p>
<p>四个路由器运行BGP，R1与R2、R4与R3为IBGP关系，R1与R4、R2与R3为EBGP关系。四个路由器分别使用环回口建立子网，且让对方互相学习到路由信息，实现全拓扑互通。</p>
<p>按照正常配置，会发现R3到达R1的1.1.1.1/24网段有两种路径，第一种，R3-&gt;R4-&gt;R1，第二种，R3-&gt;R2-&gt;R1。根据BGP选路的11个原则（这里就不一一列出来了，需要的话到<a href="http://www.cisco.com/en/US/tech/tk365/technologies_tech_note09186a0080094431.shtml" target="_blank">思科官方网站上</a>查阅），匹配第7条---<span class="content">Prefer EBGP over IBGP paths，故R3会选择第二种路径，经过R2。</span></p>
<p><span class="content">但是R3到达</span>1.1.1.1/24网段使用R2作为下一跳并不是最佳路径选择，因为R3与R2是串行链路，而R1与R4是以太网线路，很明显我们应该选择带宽较大的R4作为下一跳。为了让R3选择R4作为下一跳，我们可以分别修改BGP attribute中的weigtht、local preference、AS-path以及MED值来达到目的。</p>
<p><span style="color: #0000ff;">5、实验步骤</span></p>
<p><span style="color: #0000ff;">A、R1基本配置</span></p>
<p>interface Loopback0<br />
ip address 1.1.1.1 255.255.255.0<br />
!<br />
interface Serial0/0<br />
ip address 12.0.0.1 255.255.255.0<br />
!<br />
interface FastEthernet1/0<br />
ip address 14.0.0.1 255.255.255.0<br />
!<br />
router rip<br />
version 2<br />
network 1.0.0.0<br />
network 12.0.0.0<br />
!<br />
router bgp 12<br />
no synchronization<br />
bgp router-id 1.1.1.1<br />
bgp log-neighbor-changes<br />
network 1.1.1.0 mask 255.255.255.0<br />
neighbor 2.2.2.2 remote-as 12<br />
neighbor 2.2.2.2 update-source Loopback0<br />
neighbor 2.2.2.2 next-hop-self<br />
neighbor 14.0.0.4 remote-as 34<br />
no auto-summary</p>
<p><span style="color: #0000ff;">B、R2基本配置</span></p>
<p>interface Loopback0<br />
ip address 2.2.2.2 255.255.255.0<br />
!<br />
interface Serial0/0<br />
ip address 12.0.0.2 255.255.255.0<br />
!<br />
interface Serial0/1<br />
ip address 23.0.0.2 255.255.255.0<br />
!<br />
router rip<br />
version 2<br />
network 2.0.0.0<br />
network 12.0.0.0<br />
no auto-summary<br />
!<br />
router bgp 12<br />
no synchronization<br />
bgp router-id 2.2.2.2<br />
bgp log-neighbor-changes<br />
network 2.2.2.0 mask 255.255.255.0<br />
neighbor 1.1.1.1 remote-as 12<br />
neighbor 1.1.1.1 update-source Loopback0<br />
neighbor 1.1.1.1 next-hop-self<br />
neighbor 23.0.0.3 remote-as 34<br />
no auto-summary</p>
<p><span id="more-181"></span></p>
<p><span style="color: #0000ff;">C、R3基本配置</span></p>
<p>interface Loopback0<br />
ip address 3.3.3.3 255.255.255.0<br />
!<br />
interface Serial0/0<br />
ip address 34.0.0.3 255.255.255.0<br />
!<br />
interface Serial0/1<br />
ip address 23.0.0.3 255.255.255.0<br />
!<br />
router rip<br />
version 2<br />
network 3.0.0.0<br />
network 34.0.0.0<br />
no auto-summary<br />
!<br />
router bgp 34<br />
no synchronization<br />
bgp router-id 3.3.3.3<br />
bgp log-neighbor-changes<br />
network 3.3.3.0 mask 255.255.255.0<br />
neighbor 4.4.4.4 remote-as 34<br />
neighbor 4.4.4.4 update-source Loopback0<br />
neighbor 4.4.4.4 next-hop-self<br />
neighbor 23.0.0.2 remote-as 12<br />
no auto-summary</p>
<p><span style="color: #0000ff;">D、R4基本配置</span></p>
<p>interface Loopback0<br />
ip address 4.4.4.4 255.255.255.0<br />
!<br />
interface Serial0/0<br />
ip address 34.0.0.4 255.255.255.0<br />
!<br />
interface Serial0/1<br />
no ip address<br />
shutdown<br />
serial restart-delay 0<br />
!<br />
interface FastEthernet1/0<br />
ip address 14.0.0.4 255.255.255.0<br />
!<br />
router rip<br />
version 2<br />
network 4.0.0.0<br />
network 34.0.0.0<br />
no auto-summary<br />
!<br />
router bgp 34<br />
no synchronization<br />
bgp router-id 4.4.4.4<br />
bgp log-neighbor-changes<br />
network 4.4.4.0 mask 255.255.255.0<br />
neighbor 3.3.3.3 remote-as 34<br />
neighbor 3.3.3.3 update-source Loopback0<br />
neighbor 3.3.3.3 next-hop-self<br />
neighbor 14.0.0.1 remote-as 12<br />
no auto-summary</p>
<p><span style="color: #0000ff;">E、查看R3路由信息</span></p>
<p>R3#sh ip ro</p>
<p>34.0.0.0/24 is subnetted, 1 subnets<br />
C       34.0.0.0 is directly connected, Serial0/0<br />
1.0.0.0/24 is subnetted, 1 subnets<br />
<span style="color: #ff0000;">B       1.1.1.0 [20/0] via 23.0.0.2, 00:01:24</span><br />
2.0.0.0/24 is subnetted, 1 subnets<br />
B       2.2.2.0 [20/0] via 23.0.0.2, 00:10:09<br />
3.0.0.0/24 is subnetted, 1 subnets<br />
C       3.3.3.0 is directly connected, Loopback0<br />
4.0.0.0/24 is subnetted, 1 subnets<br />
R       4.4.4.0 [120/1] via 34.0.0.4, 00:00:21, Serial0/0<br />
23.0.0.0/24 is subnetted, 1 subnets<br />
C       23.0.0.0 is directly connected, Serial0/1</p>
<p>R3#sh ip bgp</p>
<p>Network          Next Hop            Metric LocPrf Weight Path<br />
<span style="color: #ff0000;">*&gt; 1.1.1.0/24       23.0.0.2                               0 12 i<br />
* i                 4.4.4.4                  0    100      0 12 i</span><br />
* i2.2.2.0/24       4.4.4.4                  0    100      0 12 i<br />
*&gt;                  23.0.0.2                 0             0 12 i<br />
*&gt; 3.3.3.0/24       0.0.0.0                  0         32768 i<br />
r&gt;i4.4.4.0/24       4.4.4.4                  0    100      0 i</p>
<p><span style="color: #ff0000;">注：根据BGP路由选择策略，由于默认weight、local preference、AS-path、MED、</span><span style="color: #ff0000;">ORIGIN属性</span><span style="color: #ff0000;">都一样，所以R3会根据第7条路由策略，优先选择EBGP路由，次选择联盟EBGP，最后选择IBGP。R3与R2是EBGP关系而与R4是IBGP，所以选择R2作为下一跳---23.0.0.2</span></p>
<p><span style="color: #0000ff;">F、使用route-map修改weight属性值</span></p>
<p><span style="color: #0000ff;">由于weight值只对本路由器有效。所以当R3收到从R4宣告1.1.1.0/24网络时，将weight值改为100（只要比默认值0大就可以），那么R3就会选择R4作为下一跳。<br />
</span></p>
<p>//定义ACL<br />
R3(config)#access-list 1 permit 1.1.1.0 0.0.0.255</p>
<p>//定义route-map，将1.1.1.0/24路由的weight值设为100<br />
R3(config)#route-map set_weight permit 10<br />
R3(config-route-map)#match ip address 1<br />
R3(config-route-map)#set weight 100<br />
R3(config-route-map)#exit<br />
//放过其它的流量<br />
R3(config)#route-map set_weight permit 20<br />
R3(config-route-map)#exit</p>
<p>//将route-map应用于R4对其宣告路由的入方向<br />
R3(config)#router bgp 34<br />
<span style="color: #0000ff;">R3(config-router)#neighbor 4.4.4.4 route-map set_weight in</span></p>
<p>//软清BGP进程<br />
R3#clear ip bgp * soft</p>
<p><span style="color: #ff0000;">注：weight属性是思科私有的，只能配置在本地路由器，不会宣告给任何其它BGP邻居。如果这条路由是本地产生的，weight默认值为32768，否则weight值为0。weight属性用于决定数据流从本地的哪个出口流出AS，选择高者。</span></p>
<p><span style="color: #0000ff;">G、使用route-map修改local preference属性值</span></p>
<p><span style="color: #0000ff;">R3收到R2和R4关于</span><span style="color: #0000ff;">1.1.1.0/24 的local preference值都为100。由于local preference只会在同一个AS内传播（只会传播给IBGP邻居），则只需将R4将此路由告诉给R3时，local preference值设为200（选择local preference值高的）。<br />
</span></p>
<p>//定义ACL<br />
R4(config)#access-list 1 permit 1.1.1.0 0.0.0.255</p>
<p>//定义route-map，将1.1.1.0/24路由local-preference值设为200<br />
R4(config)#route-map set_lp permit 10<br />
R4(config-route-map)#match ip address 1<br />
R4(config-route-map)#set local-preference 200<br />
R4(config-route-map)#exit<br />
//放过其它的流量<br />
R4(config)#route-map set_lp permit 20<br />
R4(config-route-map)#exit</p>
<p>//将route-map应用于R1对其宣告路由的入方向<br />
R4(config)#router bgp 34<br />
<span style="color: #0000ff;">R4(config-router)#neighbor 14.0.0.1 route-map set_lp in</span></p>
<p>//软清BGP进程<br />
R4#clear ip bgp * soft</p>
<p><span style="color: #ff0000;">注：local preference属性只会传递给IBGP邻居，默认是100。用于影响数据流如何流出本地自治系统，选择高者</span></p>
<p><span style="color: #0000ff;">H、使用route-map修改AS-path属性值</span></p>
<p><span style="color: #0000ff;">R3收到R4和R2关于1.1.1.0/24路由时，AS-Path属性值都只有一个AS号。想要通过AS-Path来影响R3的关于该网络的下一跳，那么可以修改AS-Path值。让R2经过更多一个的AS号。由于AS-Path是用于防止环路的，所以建议R2增加的AS是自己的AS号。（手动添加的AS号是允许重复的）</span></p>
<p>//定义ACL<br />
R2(config)#access-list 1 permit 1.1.1.0 0.0.0.255</p>
<p>//定义route-map，在1.1.1.0/24路由的AS-path属性上添加两个AS号使路径变长<br />
R2(config)#route-map set_prepend permit 10<br />
R2(config-route-map)#match ip address 1<br />
R2(config-route-map)#set as-path prepend 12 12<br />
R2(config-route-map)#exit<br />
//放过其它的流量<br />
R2(config)#route-map set_prepend permit 20<br />
R2(config-route-map)#exit</p>
<p>//将route-map应用于向R3宣告路由的出方向<br />
R2(config)#router bgp 12<br />
<span style="color: #0000ff;">R2(config-router)#neighbor 23.0.0.3 route-map set_prepend out</span></p>
<p>//软清BGP进程<br />
R2#clear ip bgp * soft</p>
<p><span style="color: #ff0000;">注：在set as-path prepend后添加的AS号，最好是本地自治系统号，否则可能会产生无效路由。<br />
当路由器将信息传给EBGP时会在as-path前面加上自己的AS号，传给IBGP则不加。优先选择AS-PATH最短的路径。</span></p>
<p>R3的bgp表</p>
<p>R3#sh ip bgp</p>
<p>Network          Next Hop            Metric LocPrf Weight Path<br />
<span style="color: #ff0000;">*  1.1.1.0/24       23.0.0.2                               0 12 12 12 i</span><br />
*&gt;i                 4.4.4.4                  0    100      0 12 i<br />
* i2.2.2.0/24       4.4.4.4                  0    100      0 12 i<br />
*&gt;                  23.0.0.2                 0             0 12 i<br />
*&gt; 3.3.3.0/24       0.0.0.0                  0         32768 i<br />
r&gt;i4.4.4.0/24       4.4.4.4                  0    100      0 i</p>
<p><span style="color: #0000ff;">I、使用route-map修改MED属性值</span></p>
<p><span style="color: #0000ff;">R3收到原本R2与R4关于1.1.1.0/24网络的MED值都为0。由于MED是通过EBGP进行传播的，且R3会选择MED值小的到达该网络，所以只要将R2关于此网络的MED值设为100（比默认值0高），则R3会选择R4作为下一跳（选择MED值小的）。<br />
</span></p>
<p>//定义ACL<br />
R2(config)#access-list 1 permit 1.1.1.0 0.0.0.255</p>
<p>//定义route-map，将1.1.1.0/24路由metric值设为100<br />
R2(config)#route-map set_med permit 10<br />
R2(config-route-map)#match ip address 1<br />
R2(config-route-map)#set metric 100<br />
R2(config-route-map)#exit<br />
//放过其它的流量<br />
R2(config)#route-map set_med permit 20<br />
R2(config-route-map)#exit</p>
<p>//将route-map应用于向R3宣告路由的出方向<br />
R2(config)#router bgp 12<br />
<span style="color: #0000ff;">R2(config-router)#neighbor 23.0.0.3 route-map set_med out</span></p>
<p>//软清BGP进程<br />
R2#clear ip bgp * soft</p>
<p><span style="color: #ff0000;">注：MED属性只会传递给EBGP peer，也会传播到该peer所在的整个AS内，但是该peer不会将其传递给其它AS。MED属性值默认是0。影响其它的自治系统的数据流，如何流入本地自治系统。选择低者</span></p>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 2765px; width: 1px; height: 1px; overflow: hidden;">R3#sh ip bgp</div>
]]></content:encoded>
			<wfw:commentRss>http://www.joansky.com/ccnp-bgp-attribute.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>CCNP实验---双点双向路由重分布问题</title>
		<link>http://www.joansky.com/ccnp-rip-redistribute-to-ospf.html</link>
		<comments>http://www.joansky.com/ccnp-rip-redistribute-to-ospf.html#comments</comments>
		<pubDate>Tue, 30 Aug 2011 17:40:39 +0000</pubDate>
		<dc:creator>Joan</dc:creator>
				<category><![CDATA[CCNP实验报告]]></category>
		<category><![CDATA[CCNP]]></category>
		<category><![CDATA[cisco]]></category>

		<guid isPermaLink="false">http://www.joansky.com/?p=179</guid>
		<description><![CDATA[1、实验目的：使用RIP和OSPF进行双点双向重分布，实现网络互通和冗余备份。 2、实验环境：C3640-IK9O3S-M Version 12.4(10) 3、实验拓扑 4、实验描述 该网络中，R1、R2同时运行RIP和OSPF，而R3运行OSPF，R4运行RIP，并在R3、R4上模拟两个子网。这样R3和R4并不能互相学习到对方的子网信息，这时我们需要采用路由重分布进行解决。实际上，我们只需在R1或者R2上部署路由重分布就可以让R3与R4互访子网，但我们为了保证网络的高可用性，让R1和R2同时进行路由重分布。 这时问题出现了，当进行R1和R2都进行双向重分布时，会出现R2（R1）访问4.4.4.0/24网络时先经过R3到R1（R2）最后才到达R4。而不是选择最优的路径，直接到达R4。因为在进行双点双向重分布时，R1将重分布进OSPF的4.4.4.0/24的网络传给R2，由于OSPF的AD值110&#62;RIP的AD 值120，所以R2将使用从R1学习到4.4.4.0/24的网络。 为了解决这个问题，那么可以通过修改OSPF的AD值，当R2从R1学到的关于OSPF的AD值&#62;RIP的AD值，即可解决这个问题 5、实验步骤： A、R1基本配置 interface Serial0/0 ip address 14.0.0.1 255.255.255.0 ! interface Serial0/1 ip address 13.0.0.1 255.255.255.0 ! B、R2基本配置 interface Serial0/0 ip address 23.0.0.2 255.255.255.0 ! interface Serial0/1 ip address 24.0.0.2 255.255.255.0 ! C、R3基本配置 interface Loopback0 ip address 3.3.3.3 255.255.255.0 ! interface Serial0/0 ip address 23.0.0.3 255.255.255.0 [...]]]></description>
			<content:encoded><![CDATA[<p><span style="color: #0000ff;">1、实验目的：使用RIP和OSPF进行双点双向重分布，实现网络互通和冗余备份。<br />
</span></p>
<p><span style="color: #0000ff;">2、实验环境：</span><span style="color: #0000ff;">C3640-IK9O3S-M Version 12.4(10)</span></p>
<p><span style="color: #0000ff;">3、实验拓扑</span></p>
<p><span style="color: #0000ff;"><img class="alignnone size-full wp-image-178" title="RIP-into-OSPF" src="http://www.joansky.com/wp-content/uploads/2011/08/RIP-into-OSPF.png" alt="RIP-into-OSPF" width="695" height="271" /><br />
</span></p>
<p><span style="color: #0000ff;">4、实验描述</span></p>
<p>该网络中，R1、R2同时运行RIP和OSPF，而R3运行OSPF，R4运行RIP，并在R3、R4上模拟两个子网。这样R3和R4并不能互相学习到对方的子网信息，这时我们需要采用路由重分布进行解决。实际上，我们只需在R1或者R2上部署路由重分布就可以让R3与R4互访子网，但我们为了保证网络的高可用性，让R1和R2同时进行路由重分布。</p>
<p>这时问题出现了，当进行R1和R2都进行双向重分布时，会出现R2（R1）访问4.4.4.0/24网络时先经过R3到R1（R2）最后才到达R4。而不是选择最优的路径，直接到达R4。因为在进行双点双向重分布时，R1将重分布进OSPF的4.4.4.0/24的网络传给R2，由于OSPF的AD值110&gt;RIP的AD 值120，所以R2将使用从R1学习到4.4.4.0/24的网络。</p>
<p><span style="color: #ff0000;">为了解决这个问题，那么可以通过修改OSPF的AD值，当R2从R1学到的关于OSPF的AD值&gt;RIP的AD值，即可解决这个问题</span></p>
<p><span style="color: #0000ff;">5、实验步骤：</span></p>
<p><span style="color: #0000ff;">A、R1基本配置</span></p>
<p>interface Serial0/0<br />
ip address 14.0.0.1 255.255.255.0<br />
!<br />
interface Serial0/1<br />
ip address 13.0.0.1 255.255.255.0<br />
!</p>
<p><span style="color: #0000ff;">B、R2基本配置</span></p>
<p>interface Serial0/0<br />
ip address 23.0.0.2 255.255.255.0<br />
!<br />
interface Serial0/1<br />
ip address 24.0.0.2 255.255.255.0<br />
!</p>
<p><span style="color: #0000ff;">C、R3基本配置</span></p>
<p>interface Loopback0<br />
ip address 3.3.3.3 255.255.255.0<br />
!<br />
interface Serial0/0<br />
ip address 23.0.0.3 255.255.255.0<br />
!<br />
interface Serial0/1<br />
ip address 13.0.0.3 255.255.255.0<br />
!</p>
<p><span style="color: #0000ff;">D、R4基本配置</span></p>
<p>interface Loopback0<br />
ip address 4.4.4.4 255.255.255.0<br />
!<br />
interface Serial0/0<br />
ip address 14.0.0.4 255.255.255.0<br />
!<br />
interface Serial0/1<br />
ip address 24.0.0.4 255.255.255.0<br />
!</p>
<p><span style="color: #0000ff;">E、R1路由协议配置</span></p>
<p>router ospf 1<br />
router-id 1.1.1.1<br />
<span style="color: #ff0000;">//将RIP重分布进OSPF<br />
redistribute rip subnets</span><br />
network 13.0.0.0 0.0.0.255 area 0<br />
!<br />
router rip<br />
version 2<br />
<span style="color: #ff0000;">//将OSPF重分布进RIP，并将metric值设为5。如果没有设置，metric值默认是无穷大<br />
redistribute ospf 1 metric 5</span><br />
network 14.0.0.0<br />
no auto-summary</p>
<p><span style="color: #0000ff;">F、R2路由协议配置</span></p>
<p>router ospf 1<br />
router-id 2.2.2.2<br />
<span style="color: #ff0000;">//将RIP重分布进OSPF<br />
redistribute rip subnets</span><br />
network 23.0.0.0 0.0.0.255 area 0<br />
!<br />
router rip<br />
version 2<br />
<span style="color: #ff0000;">//将OSPF重分布进RIP，并将metric值设为5。如果没有设置，metric值默认是无穷大<br />
redistribute ospf 1 metric 5</span><br />
network 24.0.0.0<br />
no auto-summary</p>
<p><span style="color: #0000ff;">G、R3路由协议配置</span></p>
<p>router ospf 1<br />
router-id 3.3.3.3<br />
log-adjacency-changes<br />
network 3.3.3.3 0.0.0.0 area 0<br />
network 13.0.0.0 0.0.0.255 area 0<br />
network 23.0.0.0 0.0.0.255 area 0</p>
<p><span style="color: #0000ff;">H、R4路由协议配置</span></p>
<p>router rip<br />
version 2<br />
network 4.0.0.0<br />
network 14.0.0.0<br />
network 24.0.0.0<br />
no auto-summary</p>
<p><span style="color: #0000ff;">I、查看R2路由表</span></p>
<p>3.0.0.0/32 is subnetted, 1 subnets<br />
O       3.3.3.3 [110/65] via 23.0.0.3, 00:00:12, Serial0/0<br />
4.0.0.0/24 is subnetted, 1 subnets<br />
<span style="color: #ff0000;">O E2    4.4.4.0 [110/20] via 23.0.0.3, 00:00:12, Serial0/0</span><br />
23.0.0.0/24 is subnetted, 1 subnets<br />
C       23.0.0.0 is directly connected, Serial0/0<br />
24.0.0.0/24 is subnetted, 1 subnets<br />
C       24.0.0.0 is directly connected, Serial0/1<br />
13.0.0.0/24 is subnetted, 1 subnets<br />
O       13.0.0.0 [110/128] via 23.0.0.3, 00:00:12, Serial0/0<br />
14.0.0.0/24 is subnetted, 1 subnets<br />
O E2    14.0.0.0 [110/20] via 23.0.0.3, 00:00:14, Serial0/0</p>
<p><span style="color: #ff0000;">可以发现4.4.4.0/24的下一跳IP地址是23.0.0.3，这就造成R2出现非最优路径选择问题</span></p>
<p><span style="color: #ff0000;">J、修改R1和R2互相学习到AD值</span></p>
<p><span style="color: #ff0000;"><span style="color: #0000ff;">因为出现次路由选择是因为R1或者R2学习到的外部路由协议AD值（RIP---120）比内部路由协议（OSPF---90）（R1、R2互相学习对方的路由）值高，所以只要将R1与R2互相学习的AD值改为121（比RIP AD大就可以）</span><br />
</span></p>
<p><span style="color: #ff0000;">//在R1上将从R2学习的路由AD值设为121，2.2.2.2 0.0.0.0为R2的router-id<br />
distance 121 2.2.2.2 0.0.0.0</span></p>
<p><span style="color: #ff0000;">//在R2上将从R1学习的路由AD值设为121，1.1.1.1 0.0.0.0为R1的router-id<br />
distance 121 1.1.1.1 0.0.0.0</span></p>
<p><span style="color: #ff0000;">需要同时在R1和R2上配置，因为R1和R2谁先学习对方的路由信息是随机的。</span></p>
<p><span style="color: #0000ff;">K、修改AD值后再查看R2的路由表</span></p>
<p>3.0.0.0/32 is subnetted, 1 subnets<br />
O       3.3.3.3 [110/65] via 23.0.0.3, 00:00:16, Serial0/0<br />
4.0.0.0/24 is subnetted, 1 subnets<br />
<span style="color: #ff0000;">R       4.4.4.0 [120/1] via 24.0.0.4, 00:00:08, Serial0/1</span><br />
23.0.0.0/24 is subnetted, 1 subnets<br />
C       23.0.0.0 is directly connected, Serial0/0<br />
24.0.0.0/24 is subnetted, 1 subnets<br />
C       24.0.0.0 is directly connected, Serial0/1<br />
13.0.0.0/24 is subnetted, 1 subnets<br />
O       13.0.0.0 [110/128] via 23.0.0.3, 00:00:16, Serial0/0<br />
14.0.0.0/24 is subnetted, 1 subnets<br />
R       14.0.0.0 [120/1] via 24.0.0.4, 00:00:09, Serial0/1</p>
<p>问题解决了~</p>
]]></content:encoded>
			<wfw:commentRss>http://www.joansky.com/ccnp-rip-redistribute-to-ospf.html/feed</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>CCNA实验(7)---动态路由之OSPF协议</title>
		<link>http://www.joansky.com/routing-ospf.html</link>
		<comments>http://www.joansky.com/routing-ospf.html#comments</comments>
		<pubDate>Wed, 13 Jul 2011 09:19:26 +0000</pubDate>
		<dc:creator>Joan</dc:creator>
				<category><![CDATA[CCNA实验报告]]></category>
		<category><![CDATA[cisco]]></category>
		<category><![CDATA[routing]]></category>
		<category><![CDATA[配置]]></category>

		<guid isPermaLink="false">http://www.joansky.com/?p=177</guid>
		<description><![CDATA[1、实验目的：使用ospf协议配置方式使其网络互通 2、实验环境：Packet Tracer 5.3.0 3、实验步骤： 实验拓扑如下图所示 A、根据拓扑图，配置各路由器的ip地址和启动端口。 B、配置各PC机的IP地址。 C、配置ospf协议 R1配置命令： R1(config)#ro os 100 R1(config-router)#net 172.17.0.0 0.0.255.255 a 0 R1(config-router)#net 10.0.1.0 0.0.0.255 a 0 ro os 100,100是本地ospf的进程号，与其他路由器没有任何关系。为了方便记忆，我还是统一配成一致的。 注：net ip wailcard-mask area 0,0是主干区域号。因为这里是涉及到单区域的配置，而单区域一定要是主干主域，所以这里一定是0 wailcard-mask不能省略，在eigrp中是可以省略的 这条命令“R1(config-router)#net 10.0.1.0 0.0.0.255 a 0”可以用下面命令进行代替。network只是用来告诉路由器那个端口进行处理ospf R1(config-router) network 10.0.1.1 0.0.0.0 area 0 R2配置命令： R2(config)#ro os 100 R2(config-router)#net 10.0.0.0 0.0.255.255 a 0 R3配置命令： R3(config)#ro os [...]]]></description>
			<content:encoded><![CDATA[<p><span style="color: #0000ff;">1、实验目的：使用ospf协议配置方式使其网络互通</span></p>
<p><span style="color: #0000ff;">2、实验环境：Packet Tracer 5.3.0</span></p>
<p><span style="color: #0000ff;">3、实验步骤：</span></p>
<p>实验拓扑如下图所示</p>
<p><img class="alignnone size-full wp-image-175" title="ospf" src="http://www.joansky.com/wp-content/uploads/2011/07/eigrp.png" alt="ospf" width="609" height="229" /></p>
<p>A、根据拓扑图，配置各路由器的ip地址和启动端口。</p>
<p>B、配置各PC机的IP地址。</p>
<p>C、配置ospf协议</p>
<p>R1配置命令：</p>
<p>R1(config)#ro os 100<br />
R1(config-router)#net 172.17.0.0 0.0.255.255 a 0<br />
R1(config-router)#net 10.0.1.0 0.0.0.255 a 0</p>
<p><span style="color: #0000ff;">ro os 100,100是本地ospf的进程号，与其他路由器没有任何关系。为了方便记忆，我还是统一配成一致的。</span></p>
<p><span style="color: #ff0000;">注：net ip wailcard-mask area 0,0是主干区域号。因为这里是涉及到单区域的配置，而单区域一定要是主干主域，所以这里一定是0<br />
</span></p>
<p><span style="color: #ff0000;">wailcard-mask不能省略，在eigrp中是可以省略的</span></p>
<p><span style="color: #0000ff;">这条命令“R1(config-router)#net 10.0.1.0 0.0.0.255 a 0”可以用下面命令进行代替。network只是用来告诉路由器那个端口进行处理ospf</span></p>
<p>R1(config-router) network 10.0.1.1 0.0.0.0 area 0</p>
<p>R2配置命令：</p>
<p>R2(config)#ro os 100<br />
R2(config-router)#net 10.0.0.0 0.0.255.255 a 0</p>
<p>R3配置命令：</p>
<p>R3(config)#ro os 100<br />
R3(config-router)#net 172.17.0.0 0.0.255.255 a 0<br />
R3(config-router)#net 10.0.2.0 0.0.0.255 a0</p>
<p><span style="color: #ff0000;">还需注意一点是，ospf没有自动汇总功能。不用担心不连续子网问题。</span></p>
]]></content:encoded>
			<wfw:commentRss>http://www.joansky.com/routing-ospf.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>CCNA实验(6)---动态路由之EIGRP协议</title>
		<link>http://www.joansky.com/routing-eigrp.html</link>
		<comments>http://www.joansky.com/routing-eigrp.html#comments</comments>
		<pubDate>Tue, 12 Jul 2011 13:15:01 +0000</pubDate>
		<dc:creator>Joan</dc:creator>
				<category><![CDATA[CCNA实验报告]]></category>
		<category><![CDATA[cisco]]></category>
		<category><![CDATA[routing]]></category>
		<category><![CDATA[配置]]></category>

		<guid isPermaLink="false">http://www.joansky.com/?p=176</guid>
		<description><![CDATA[1、实验目的：使用eigrp协议通过多种配置配置方式使其网络互通 2、实验环境：Packet Tracer 5.3.0 3、实验步骤： 实验拓扑如下图所示 注：R1和R2需增加端口模块。单击路由器，选择physical面板，关闭电源，拖动modules下的WIC-1ENEC到右边大小相符的空闲口，打开电源。 A、根据拓扑图，配置各路由器的ip地址和启动端口。 B、配置各PC机的IP地址。 C、配置eigrp协议 R1配置命令： R1(config)#ro eig 100 R1(config-router)net 172.17.0.0 R1(config-router)net 10.0.0.0 如果后面的wailcard-mask省略，路由器将采用对应有类地址的wailcard-mask 注：这条命令“net 172.17.0.0”可以用下面两条命令进行代替。只宣告路由器对应端口的IP地址 R1(config-router)net 172.17.1.254 0.0.0.0 R1(config-router)net 172.17.2.254 0.0.0.0 “network  IP wailcard-mask”，是一个地址范围，仅仅用于告诉路由器哪一个端口进行处理eigrp R2配置命令： R2(config)#ro eig 100 R2(config-router)net 10.0.0.0 R3配置命令： R3(config)#ro eig 100 R3(config-router)net 172.17.0.0 R3(config-router)net 10.0.0.0 D、关闭路由自动汇总功能。在每台路由器上都执行下面命令 Router(config-router)#no auto 因为此网络出现不连续子网，所以需关闭自动汇总功能，理由见《EIGRP协议：启用与关闭自动汇总功能》 注：路由自动汇总是按有类路由网络地址范围进行汇总，范围过大会出现错误。有需要的话可以使用手动汇总 这里以R3为例进行说明。R3的网段172.17.3.0/24和172.17.4.0/24可汇总为172.17.0.0/21 Router(config-if)#int f0/0 Router(config-if)#ip summary-address eig [...]]]></description>
			<content:encoded><![CDATA[<p><span style="color: #0000ff;">1、实验目的：使用eigrp协议通过多种配置配置方式使其网络互通</span></p>
<p><span style="color: #0000ff;">2、实验环境：Packet Tracer 5.3.0</span></p>
<p><span style="color: #0000ff;">3、实验步骤：</span></p>
<p>实验拓扑如下图所示</p>
<p><img class="alignnone size-full wp-image-175" title="eigrp" src="http://www.joansky.com/wp-content/uploads/2011/07/eigrp.png" alt="eigrp" width="609" height="229" /></p>
<p><span style="color: #ff0000;">注：R1和R2需增加端口模块。单击路由器，选择physical面板，关闭电源，拖动modules下的WIC-1ENEC到右边大小相符的空闲口，打开电源。</span></p>
<p>A、根据拓扑图，配置各路由器的ip地址和启动端口。</p>
<p>B、配置各PC机的IP地址。</p>
<p>C、配置eigrp协议</p>
<p>R1配置命令：</p>
<p>R1(config)#ro eig 100<br />
R1(config-router)net 172.17.0.0<br />
R1(config-router)net 10.0.0.0</p>
<p>如果后面的wailcard-mask省略，路由器将采用对应有类地址的wailcard-mask</p>
<p><span style="color: #ff0000;">注：这条命令“net 172.17.0.0”可以用下面两条命令进行代替。只宣告路由器对应端口的IP地址</span></p>
<p><span style="color: #ff0000;">R1(config-router)net 172.17.1.254 0.0.0.0<br />
R1(config-router)net 172.17.2.254 0.0.0.0</span></p>
<p><span style="color: #ff0000;">“network  IP wailcard-mask”，是一个地址范围，仅仅用于告诉路由器哪一个端口进行处理eigrp</span></p>
<p>R2配置命令：</p>
<p>R2(config)#ro eig 100<br />
R2(config-router)net 10.0.0.0</p>
<p>R3配置命令：</p>
<p>R3(config)#ro eig 100<br />
R3(config-router)net 172.17.0.0<br />
R3(config-router)net 10.0.0.0</p>
<p>D、关闭路由自动汇总功能。在每台路由器上都执行下面命令</p>
<p>Router(config-router)#no auto</p>
<p>因为此网络出现不连续子网，所以需关闭自动汇总功能，理由见<a href="http://www.joansky.com/eigrp-auto-summary.html" target="_blank">《EIGRP协议：启用与关闭自动汇总功能》</a></p>
<p><span style="color: #ff0000;">注：路由自动汇总是按有类路由网络地址范围进行汇总，范围过大会出现错误。有需要的话可以使用手动汇总</span></p>
<p><span style="color: #ff0000;">这里以R3为例进行说明。R3的网段172.17.3.0/24和172.17.4.0/24可汇总为172.17.0.0/21</span></p>
<p><span style="color: #ff0000;">Router(config-if)#int f0/0<br />
Router(config-if)#ip summary-address eig 100 172.17.0.0 255.255.248.0</span></p>
<p><span style="color: #ff0000;">R3(config-router)no net 172.17.0.0</span></p>
<p><span style="color: #ff0000;">已经手动汇总了这两个网段那么就不需要使用network 命令进行宣告</span></p>
<p>E、启动R1和R3的passive-interface（配不配置不影响网络连接）</p>
<p>让R1的F0/0、E0/0/0和R3的F0/1、E0/0/0接口接收路由更新而不发送路由更新，它们属于末端网络，不需要再将路由更新传递下去。</p>
<p>R1(config-router)#passive-interface f0/0<br />
R1(config-router)#passive-interface e0/0/0</p>
<p>R3(config-router)#passive-interface f0/1<br />
R3(config-router)#passive-interface e0/0/0</p>
<p>F、查看路由协议状态</p>
<p>查看路由器上哪些端口处理erigrp<br />
Router#sh ip eig int</p>
<p>与eigrp建立邻居关系有哪些<br />
Router#sh ip eig nei</p>
<p>查看eigrp建立的拓扑表<br />
Router#sh ip eig to</p>
<p><span style="color: #0000ff;">packet tracker不支持下面这条debug命令</span><br />
Router#debug ip eigrp</p>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 1136px; width: 1px; height: 1px; overflow: hidden;"><!--[if gte mso 9]><xml> <w:WordDocument> <w:View>Normal</w:View> <w:Zoom>0</w:Zoom> <w:PunctuationKerning /> <w:DrawingGridVerticalSpacing>7.8 磅</w:DrawingGridVerticalSpacing> <w:DisplayHorizontalDrawingGridEvery>0</w:DisplayHorizontalDrawingGridEvery> <w:DisplayVerticalDrawingGridEvery>2</w:DisplayVerticalDrawingGridEvery> <w:ValidateAgainstSchemas /> <w:SaveIfXMLInvalid>false</w:SaveIfXMLInvalid> <w:IgnoreMixedContent>false</w:IgnoreMixedContent> <w:AlwaysShowPlaceholderText>false</w:AlwaysShowPlaceholderText> <w:Compatibility> <w:SpaceForUL /> <w:BalanceSingleByteDoubleByteWidth /> <w:DoNotLeaveBackslashAlone /> <w:ULTrailSpace /> <w:DoNotExpandShiftReturn /> <w:AdjustLineHeightInTable /> <w:BreakWrappedTables /> <w:SnapToGridInCell /> <w:WrapTextWithPunct /> <w:UseAsianBreakRules /> <w:DontGrowAutofit /> <w:UseFELayout /> </w:Compatibility> <w:BrowserLevel>MicrosoftInternetExplorer4</w:BrowserLevel> </w:WordDocument> </xml><![endif]--><!--[if gte mso 9]><xml> <w:LatentStyles DefLockedState="false" LatentStyleCount="156"> </w:LatentStyles> </xml><![endif]--><!--[if gte mso 10]> <mce:style><!   /* Style Definitions */  table.MsoNormalTable 	{mso-style-name:普通表格; 	mso-tstyle-rowband-size:0; 	mso-tstyle-colband-size:0; 	mso-style-noshow:yes; 	mso-style-parent:""; 	mso-padding-alt:0cm 5.4pt 0cm 5.4pt; 	mso-para-margin:0cm; 	mso-para-margin-bottom:.0001pt; 	mso-pagination:widow-orphan; 	font-size:10.0pt; 	font-family:"Times New Roman"; 	mso-fareast-font-family:"Times New Roman"; 	mso-ansi-language:#0400; 	mso-fareast-language:#0400; 	mso-bidi-language:#0400;} --> <!--[endif]--></p>
<p class="MsoNormal"><span lang="EN-US">R#show ip route</span></p>
<p class="MsoNormal"><span lang="EN-US">R#show ip route eigrp</span></p>
<p class="MsoNormal"><span lang="EN-US">R#show ip eigrp neighbors</span></p>
<p class="MsoNormal"><span lang="EN-US">R#show ip eigrp topology</span></p>
<p class="MsoNormal"><span lang="EN-US">R#show ip protocols</span></p>
</div>
]]></content:encoded>
			<wfw:commentRss>http://www.joansky.com/routing-eigrp.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>CCNA实验(5)---动态路由之RIP协议</title>
		<link>http://www.joansky.com/routing-rip.html</link>
		<comments>http://www.joansky.com/routing-rip.html#comments</comments>
		<pubDate>Sun, 10 Jul 2011 06:36:24 +0000</pubDate>
		<dc:creator>Joan</dc:creator>
				<category><![CDATA[CCNA实验报告]]></category>
		<category><![CDATA[cisco]]></category>
		<category><![CDATA[routing]]></category>
		<category><![CDATA[配置]]></category>

		<guid isPermaLink="false">http://www.joansky.com/?p=174</guid>
		<description><![CDATA[1、实验目的：使用rip协议配置路由条目使其网络互通 2、实验环境：Packet Tracer 5.3.0 3、实验步骤： 拓扑结构如下所示 注：路由器端口接线顺序是左0右1。如R1与PC1连接的端口是f0/0，与R2连接的端口是f0/1； 设备的IP地址由设备端口的标号和网络号给出。如R1的f0/0端口标着254，处于网段172.16.1.0/24，则R1f0/0端口的ip为172.16.1.254 A、按照拓扑图，启动路由器各端口和配置ip地址（基本功，这里不详细讲了） B、填写PC1和PC2的IP地址信息 C、确保PC1能ping通R1，PC2能ping通R3再往下做实验 D、配置R1和R3的rip协议 Router(config)#router rip Router(config-router)#network 10.0.0.0 Router(config-router)#network 172.16.0.0 R1和R3直连的主类网络号是一样的，因此配置命令一样 注：network ip_address中，ip_address为路由器直连的A、B、C网络号。即时你输入子网号（假如为10.1.1.0），路由器依旧将其转化为A、B、C类网络。 E、配置R2的rip协议 R1(config)#router rip R1(config-router)#network 10.0.0.0 F、配置完rip协议后，你发现PC1并不能ping同PC2。 想想为什么。数据包是根据路由条目进行转化的，所以查看R1和R3的路由表：Router#sh ip ro，是比较有效的一种方法 下面以R1为例说明原因，R1路由表中条目如下： 10.0.0.0/24 is subnetted, 2 subnets C       10.1.1.0 is directly connected, FastEthernet0/1 R       10.1.2.0 [120/1] via 10.1.1.2, 00:00:18, FastEthernet0/1 172.16.0.0/24 is subnetted, 1 subnets C       [...]]]></description>
			<content:encoded><![CDATA[<p><span style="color: #0000ff;">1、实验目的：使用rip协议配置路由条目使其网络互通</span></p>
<p><span style="color: #0000ff;">2、实验环境：Packet Tracer 5.3.0</span></p>
<p><span style="color: #0000ff;">3、实验步骤：</span></p>
<p>拓扑结构如下所示</p>
<p><img class="alignnone size-full wp-image-173" title="RIP" src="http://www.joansky.com/wp-content/uploads/2011/07/RIP.png" alt="RIP" width="577" height="236" /></p>
<p><span style="color: #ff0000;">注：路由器端口接线顺序是左0右1。如R1与PC1连接的端口是f0/0，与R2连接的端口是f0/1；<br />
设备的IP地址由设备端口的标号和网络号给出。如R1的f0/0端口标着254，处于网段172.16.1.0/24，则R1f0/0端口的ip为172.16.1.254</span></p>
<p>A、按照拓扑图，启动路由器各端口和配置ip地址（基本功，这里不详细讲了）</p>
<p>B、填写PC1和PC2的IP地址信息</p>
<p>C、确保PC1能ping通R1，PC2能ping通R3再往下做实验</p>
<p>D、配置R1和R3的rip协议</p>
<p>Router(config)#router rip<br />
Router(config-router)#network 10.0.0.0<br />
Router(config-router)#network 172.16.0.0</p>
<p>R1和R3直连的主类网络号是一样的，因此配置命令一样</p>
<p><span style="color: #ff0000;">注：network ip_address中，ip_address为路由器直连的A、B、C网络号。即时你输入子网号（假如为10.1.1.0），路由器依旧将其转化为A、B、C类网络。<br />
</span><br />
E、配置R2的rip协议</p>
<p>R1(config)#router rip<br />
R1(config-router)#network 10.0.0.0</p>
<p>F、配置完rip协议后，你发现PC1并不能ping同PC2。</p>
<p>想想为什么。数据包是根据路由条目进行转化的，所以查看R1和R3的路由表：Router#sh ip ro，是比较有效的一种方法</p>
<p><span style="color: #0000ff;">下面以R1为例说明原因，R1路由表中条目如下：</span></p>
<p><span style="color: #0000ff;">10.0.0.0/24 is subnetted, 2 subnets<br />
C       10.1.1.0 is directly connected, FastEthernet0/1<br />
R       10.1.2.0 [120/1] via 10.1.1.2, 00:00:18, FastEthernet0/1<br />
172.16.0.0/24 is subnetted, 1 subnets<br />
C       172.16.1.0 is directly connected, FastEthernet0/0</span></p>
<p>在路由表中没有看到172.16.2.0网络的信息。因为网络中出现了不连续子网，且有类路由信息不能区别子网信息（宣告网络时不带子网掩码）。具体解释见<a href="http://www.joansky.com/eigrp-auto-summary.html" target="_blank">《EIGRP协议：启用与关闭自动汇总功能》</a></p>
<p>G、有类路由不能有效解决不连续子网问题，那么需使用RIP V2</p>
<p>分别在三个路由器上配置rip为V2版本</p>
<p>Router(config)#ro rip<br />
Router(config-router)#ver 2（启动rip v2版本）<br />
Router(config-router)#no auto（关闭自动汇总）<br />
<span style="color: #0000ff;">现在查看R1的路由表：</span></p>
<p><span style="color: #0000ff;">10.0.0.0/24 is subnetted, 2 subnets<br />
C       10.1.1.0 is directly connected, FastEthernet0/1<br />
R       10.1.2.0 [120/1] via 10.1.1.2, 00:00:06, FastEthernet0/1<br />
172.16.0.0/24 is subnetted, 2 subnets<br />
C       172.16.1.0 is directly connected, FastEthernet0/0<br />
R       172.16.2.0 [120/2] via 10.1.1.2, 00:00:06, FastEthernet0/1</span></p>
<p><span style="color: #0000ff;">这时应该能看到R1路由表条目出现了172.17.2.0的信息。</span></p>
<p>H、启动R1和R3的passive-interface</p>
<p><span style="color: #ff0000;">让R1的F0/0和R3的F0/1接口接收路由更新而不发送路由更新，它们属于末端网络，不需要再将路由更新传递下去。</span></p>
<p>R1(config-router)#passive-interface f0/0<br />
R3(config-router)#passive-interface f0/1</p>
<p>I、观看路由器收发rip包的情况</p>
<p>Router#debug ip rip</p>
<p><span style="color: #ff0000;">仔细观察，对比RIP V1和RIP V2的异同和设置了passive-interface前后数据包的收发情况，加深理解</span></p>
]]></content:encoded>
			<wfw:commentRss>http://www.joansky.com/routing-rip.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>CCNA实验(4)---静态路由配置</title>
		<link>http://www.joansky.com/routing-config1.html</link>
		<comments>http://www.joansky.com/routing-config1.html#comments</comments>
		<pubDate>Fri, 08 Jul 2011 05:29:01 +0000</pubDate>
		<dc:creator>Joan</dc:creator>
				<category><![CDATA[CCNA实验报告]]></category>
		<category><![CDATA[cisco]]></category>
		<category><![CDATA[routing]]></category>
		<category><![CDATA[配置]]></category>

		<guid isPermaLink="false">http://www.joansky.com/?p=171</guid>
		<description><![CDATA[1、实验目的：让网络中的主机能互相通信 2、实验环境：Packet Tracer 5.3.0 3、实验步骤： 实验拓扑图如下所示 A、配置R1路由器IP和启用端口 R2(config)#int f0/0 R2(config-if)#ip add 11.0.0.1 255.255.0.0 R2(config-if)#no shut R2(config-if)#int f0/1 R2(config-if)#ip add 10.1.0.254 255.255.0.0 R2(config-if)#no shut B、配置R2路由器IP和启用端口 R2(config)#int f0/0 R2(config-if)#ip add 11.0.0.2 255.255.0.0 R2(config-if)#no shut R2(config-if)#int f0/1 R2(config-if)#ip add 10.2.0.254 255.255.0.0 R2(config-if)#no shut C、配置PC1、PC2的IP PC1： IP Address：10.1.0.1 Subnet Mask：255.255.0.0 Default Gateway：10.1.0.254 PC2： IP Address：10.2.0.1 Subnet Mask：255.255.0.0 Default Gateway：10.2.0.254 [...]]]></description>
			<content:encoded><![CDATA[<p><span style="color: #0000ff;">1、实验目的：让网络中的主机能互相通信</span></p>
<p><span style="color: #0000ff;">2、实验环境：Packet Tracer 5.3.0</span></p>
<p><span style="color: #0000ff;">3、实验步骤：</span></p>
<p>实验拓扑图如下所示</p>
<p><img class="alignnone size-full wp-image-172" title="静态路由" src="http://www.joansky.com/wp-content/uploads/2011/07/静态路由.png" alt="静态路由" width="496" height="184" /></p>
<p>A、配置R1路由器IP和启用端口</p>
<p>R2(config)#int f0/0<br />
R2(config-if)#ip add 11.0.0.1 255.255.0.0<br />
R2(config-if)#no shut</p>
<p>R2(config-if)#int f0/1<br />
R2(config-if)#ip add 10.1.0.254 255.255.0.0<br />
R2(config-if)#no shut</p>
<p>B、配置R2路由器IP和启用端口</p>
<p>R2(config)#int f0/0<br />
R2(config-if)#ip add 11.0.0.2 255.255.0.0<br />
R2(config-if)#no shut</p>
<p>R2(config-if)#int f0/1<br />
R2(config-if)#ip add 10.2.0.254 255.255.0.0<br />
R2(config-if)#no shut</p>
<p>C、配置PC1、PC2的IP</p>
<p>PC1：<br />
IP Address：10.1.0.1<br />
Subnet Mask：255.255.0.0<br />
Default Gateway：10.1.0.254</p>
<p>PC2：<br />
IP Address：10.2.0.1<br />
Subnet Mask：255.255.0.0<br />
Default Gateway：10.2.0.254</p>
<p>D、测试PC1与R1的连通性</p>
<p>PC1&gt;ping 11.0.0.1（能通）<br />
PC1&gt;ping 11.0.0.2（不能通）<br />
<span style="color: #ff0000;">注：PC1能把包发给R2的11.0.0.2，但是R2不能返回给PC1，想想为什么</span></p>
<p>E、配置静态路由</p>
<p>R1(config)#ip route 10.2.0.0 255.255.0.0 11.0.0.2<br />
R2(config)#ip route 10.1.0.0 255.255.0.0 11.0.0.1</p>
<p>F、配置默认路由</p>
<p>R1(config)#ip route 0.0.0.0 0.0.0.0 11.0.0.2<br />
R2(config)#ip route 0.0.0.0 0.0.0.0 11.0.0.1<br />
注：在配置默认路由时需开启”ip classless“，默认是开启的</p>
<p><span style="color: #ff0000;">注：E和F步骤是任选其一进行配置。</span></p>
<p><span style="color: #0000ff;">4、实验测试：</span></p>
<p>R#show ip route<br />
使用这条命令进行对比两种配置的异同</p>
<p>PC1&gt;ping 10.2.0.1<br />
PC1能ping通PC2，实验成功</p>
]]></content:encoded>
			<wfw:commentRss>http://www.joansky.com/routing-config1.html/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>关于IOS的几条友好操作命令</title>
		<link>http://www.joansky.com/ios-commands-friendly-operation.html</link>
		<comments>http://www.joansky.com/ios-commands-friendly-operation.html#comments</comments>
		<pubDate>Thu, 07 Jul 2011 07:21:38 +0000</pubDate>
		<dc:creator>Joan</dc:creator>
				<category><![CDATA[电脑技巧]]></category>
		<category><![CDATA[cisco]]></category>
		<category><![CDATA[配置]]></category>

		<guid isPermaLink="false">http://www.joansky.com/?p=170</guid>
		<description><![CDATA[A、关闭域名查询 Router(config)#no ip domain-lookup 在实验环境中，当输入错误命令时，会进行域名查询。需要等待它查询完成返回结果才能继续进行实验，的确很烦，建议手动关掉 B、防止输入命令被输出信息冲断 Router(config)#line console 0 Router(config-line)#logging synchronous 在启动debug命令时，控制台会输出信息，这时，你刚好在输入命令，debug信息出现会把你输入命令冲断 例如像这样的情况： Router#show ip roRIP: sending  v1 update to 255.255.255.255 via FastEthernet0/0 (10.1.1.2) C、防止超时退出 Router(config)#line console 0 Router(config-line)#exec-timeout 0 0 在你一段时间没有进行操作时，控制台会自动退出到用户模式。在实验环境中，不考虑安全性，可输入这命令较少繁琐操作]]></description>
			<content:encoded><![CDATA[<p><span style="color: #0000ff;">A、关闭域名查询</span></p>
<p>Router(config)#no ip domain-lookup</p>
<p>在实验环境中，当输入错误命令时，会进行域名查询。需要等待它查询完成返回结果才能继续进行实验，的确很烦，建议手动关掉</p>
<p><span style="color: #0000ff;">B、防止输入命令被输出信息冲断</span></p>
<p>Router(config)#line console 0<br />
Router(config-line)#logging synchronous</p>
<p>在启动debug命令时，控制台会输出信息，这时，你刚好在输入命令，debug信息出现会把你输入命令冲断</p>
<p>例如像这样的情况：</p>
<p>Router#show ip roRIP: sending  v1 update to 255.255.255.255 via FastEthernet0/0 (10.1.1.2)</p>
<p><span style="color: #0000ff;">C、防止超时退出</span></p>
<p>Router(config)#line console 0<br />
Router(config-line)#exec-timeout 0 0</p>
<p>在你一段时间没有进行操作时，控制台会自动退出到用户模式。在实验环境中，不考虑安全性，可输入这命令较少繁琐操作</p>
]]></content:encoded>
			<wfw:commentRss>http://www.joansky.com/ios-commands-friendly-operation.html/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>CCNA实验(3)---IOS之版本升级</title>
		<link>http://www.joansky.com/ios-upgrade.html</link>
		<comments>http://www.joansky.com/ios-upgrade.html#comments</comments>
		<pubDate>Thu, 07 Jul 2011 02:10:35 +0000</pubDate>
		<dc:creator>Joan</dc:creator>
				<category><![CDATA[CCNA实验报告]]></category>
		<category><![CDATA[cisco]]></category>
		<category><![CDATA[配置]]></category>

		<guid isPermaLink="false">http://www.joansky.com/?p=169</guid>
		<description><![CDATA[1、实验目的：升级IOS版本号 2、实验环境：Packet Tracer 5.3.0 3、实验步骤： 拓扑如下图所示 A、配置R1的f0/0端口地址 Router(config)#int f0/0 Router(config-if)#no shutdown Router(config-if)#ip address 192.168.1.254 255.255.255.0 B、配置S1的IP地址 （1）左键单击S1，选择“Desktop”-&#62;点击“IP Configuration” （2）填写IP地址，IP Address为192.168.1.1；Subnet Mask为255.255.255.0 C、测试R1与S1的连通性 Router#ping 192.168.1.1；能ping通再继续下面的实验。 D、查看IOS的版本 Router#show version Cisco IOS Software, 1841 Software (C1841-ADVIPSERVICESK9-M), Version 12.4(15)T1, RELEASE SOFTWARE (fc2)...... 注：升级后可通过对比，看是否已升级成功 E、Router#show flash System flash directory: File  Length   Name/status 3   33591768 c1841-advipservicesk9-mz.124-15.T1.bin（这个文件在升级前需先进行保存，如果你比较懒可以不保存） 2   28282    sigdef-category.xml 1   227537   [...]]]></description>
			<content:encoded><![CDATA[<p><span style="color: #0000ff;">1、实验目的：升级IOS版本号</span></p>
<p><span style="color: #0000ff;">2、实验环境：Packet Tracer 5.3.0</span></p>
<p><span style="color: #0000ff;">3、实验步骤：</span></p>
<p>拓扑如下图所示</p>
<p><img class="alignnone size-full wp-image-168" title="IOS升级" src="http://www.joansky.com/wp-content/uploads/2011/07/IOS升级1.png" alt="IOS升级" width="267" height="223" /></p>
<p>A、配置R1的f0/0端口地址</p>
<p>Router(config)#int f0/0</p>
<p>Router(config-if)#no shutdown</p>
<p>Router(config-if)#ip address 192.168.1.254 255.255.255.0</p>
<p>B、配置S1的IP地址</p>
<p>（1）左键单击S1，选择“Desktop”-&gt;点击“IP Configuration”</p>
<p>（2）填写IP地址，IP Address为192.168.1.1；Subnet Mask为255.255.255.0</p>
<p>C、测试R1与S1的连通性</p>
<p>Router#ping 192.168.1.1；能ping通再继续下面的实验。</p>
<p>D、查看IOS的版本</p>
<p>Router#show version<br />
Cisco IOS Software, 1841 Software (C1841-ADVIPSERVICESK9-M), Version 12.4(15)T1, RELEASE SOFTWARE (fc2)......</p>
<p><span style="color: #ff0000;">注：升级后可通过对比，看是否已升级成功</span></p>
<p>E、Router#show flash</p>
<p>System flash directory:<br />
File  Length   Name/status<br />
<span style="color: #ff0000;">3   33591768 c1841-advipservicesk9-mz.124-15.T1.bin</span><span style="color: #ff0000;">（这个文件在升级前需先进行保存，如果你比较懒可以不保存）</span><br />
2   28282    sigdef-category.xml<br />
1   227537   sigdef-default.xml<br />
[33847587 bytes used, 30168797 available, 64016384 total]<br />
63488K bytes of processor board System flash (Read/Write)</p>
<p>F、升级前先对IOS保存</p>
<p>Router#copy flash tftp<br />
Source filename []? c1841-advipservicesk9-mz.124-15.T1.bin<br />
Address or name of remote host []? 192.168.1.1（S1的IP）<br />
Destination filename [c1841-advipservicesk9-mz.124-15.T1.bin]?（直接回车）</p>
<p><span style="color: #ff0000;">注:当你看到一大堆叹号说明已成功地再进行保存了</span></p>
<p>D、进入升级</p>
<p>Router#copy tftp flash<br />
Address or name of remote host []? 192.168.1.1（S1的IP）<br />
Source filename []? c2800nm-advipservicesk9-mz.124-15.T1.bin<br />
Destination filename [c2800nm-advipservicesk9-mz.124-15.T1.bin]?（直接回车）</p>
<p><span style="color: #ff0000;">注：在S1上先查看TFTP服务器都有什么IOS文件</span></p>
<p><span style="color: #ff0000;">打开S1，点击config-&gt;services-&gt;TFTP，在File里可查看都有什么文件</span></p>
<p>E、完成后，保存配置，重启</p>
<p>Router#wr</p>
<p>Router#reload</p>
<p><span style="color: #0000ff;">实验测试：使用下面两条命令查看是否已修改</span></p>
<p>Router#show version</p>
<p>Router#show flash</p>
<p><span style="color: #0000ff;">附：想使用Packet Tracer实现在rommon模式下进行升级实验，没成功，但在真机上没问题</span></p>
<p><span style="color: #0000ff;">写下在真机上的实验操作，这种方法适合在IOS已损坏的情况进行</span></p>
<p>A、同样地需要让R1和S1能互通，步骤我就不祥说了</p>
<p>B、进入Rommon模式。在启动设备的60s内使用组合键"CTRL+BREAK"</p>
<p>C、配置使用命令“tftpdnld”所需要的参数</p>
<p>rommon 2 &gt;  IP_ADDRESS=192.168.1.254<br />
rommon 3 &gt; IP_SUBNET_MASK=255.255.255.0<br />
rommon 4 &gt; DEFAULT_GATEWAY=192.168.1.254<br />
rommon 5 &gt; TFTP_SERVER=192.168.1.1<br />
rommon 6 &gt; TFTP_FILE=C2800NM-ADVIPSERVICESK9-MZ.124-15.T1.BIN</p>
<p><span style="color: #ff0000;">注：这几个都是必配参数，少哪个都不行</span></p>
<p>D、开始升级</p>
<p>rommon 2 &gt; tftpdnld</p>
<p>E、检查是否升级成功</p>
<p>rommon 2 &gt; dir flash:</p>
<p><span style="color: #ff0000;">更正说明：slyar做了实验，其实Packet Tracer可以实现在ROMMON模式下进行版本升级。我之前失败是因为没有将设备的第一个以太网接口与服务器建立连接。因为进入ROMMON模式，设备接口处于DOWN状态，这时设备会试图通过第一个接口与外部建立连接。（个人理解）</span></p>
]]></content:encoded>
			<wfw:commentRss>http://www.joansky.com/ios-upgrade.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>CCNA实验(2)---IOS之口令恢复</title>
		<link>http://www.joansky.com/ios-password-recovery.html</link>
		<comments>http://www.joansky.com/ios-password-recovery.html#comments</comments>
		<pubDate>Mon, 04 Jul 2011 15:07:41 +0000</pubDate>
		<dc:creator>Joan</dc:creator>
				<category><![CDATA[CCNA实验报告]]></category>
		<category><![CDATA[cisco]]></category>
		<category><![CDATA[配置]]></category>

		<guid isPermaLink="false">http://www.joansky.com/?p=166</guid>
		<description><![CDATA[1、实验目的：恢复cisco设备密码 2、实验环境：Packet Tracer 5.3.0 设备说明：采用Router 1841进行口令恢复操作 3、实验步骤： A、启动设备，在启动设备的60s内使用组合键"CTRL+BREAK"执行中断进入ROM-monitor模式 注：如果设备已启用完成，可在设备全局模式下输入命令”reload“重新启动设备 B、修改配置寄存器的值 rommon 1&#62; confreg 0x2142 C、重载路由器 rommon 2&#62;reset D、进入特权模式，将startup-config文件复制到running-config文件 Router&#62;enable Router#copy startup-config running-config E、进入特权模式，修改口令 Router#conf t Router(config)#enable secret joan F、将配置寄存器重设为默认值 Router(config)#config-register 0x2102 G、回到特权模式，保存路由器的配置 Router(config)#exit Router#copy running-config startup-config H、重载路由器 Router#reload 4、实验测试： 查看寄存器是否已修改 Router#show version 查看密码是否已设置 Router#show running-config 注：寄存器中0x2102和0x2104的区别： 前者设备启用后在NVRAM中查找有效的配置文件。如果NVRAM中有startup-config文件，路由器将加载并运行此文件。后者启动设备后将忽略NVRAM中的内容，直接进入”configuration dialog“]]></description>
			<content:encoded><![CDATA[<p><span style="color: #0000ff;">1、实验目的：恢复cisco设备密码</span></p>
<p><span style="color: #0000ff;">2、实验环境：Packet Tracer 5.3.0</span></p>
<p>设备说明：采用Router 1841进行口令恢复操作</p>
<p><span style="color: #0000ff;">3、实验步骤：</span></p>
<p>A、启动设备，在启动设备的60s内使用组合键"CTRL+BREAK"执行中断进入ROM-monitor模式</p>
<p><span style="color: #ff0000;">注：如果设备已启用完成，可在设备全局模式下输入命令”reload“重新启动设备</span></p>
<p>B、修改配置寄存器的值</p>
<p>rommon 1&gt; confreg 0x2142</p>
<p>C、重载路由器</p>
<p>rommon 2&gt;reset</p>
<p>D、进入特权模式，将startup-config文件复制到running-config文件</p>
<p>Router&gt;enable</p>
<p>Router#copy startup-config running-config</p>
<p>E、进入特权模式，修改口令</p>
<p>Router#conf t</p>
<p>Router(config)#enable secret joan</p>
<p>F、将配置寄存器重设为默认值</p>
<p>Router(config)#config-register 0x2102</p>
<p>G、回到特权模式，保存路由器的配置</p>
<p>Router(config)#exit</p>
<p>Router#copy running-config startup-config</p>
<p>H、重载路由器</p>
<p>Router#reload</p>
<p><span style="color: #0000ff;">4、实验测试：</span></p>
<p>查看寄存器是否已修改</p>
<p>Router#show version</p>
<p>查看密码是否已设置</p>
<p>Router#show running-config</p>
<p><span style="color: #ff0000;">注：寄存器中0x2102和0x2104的区别：</span></p>
<p><span style="color: #ff0000;">前者设备启用后在NVRAM中查找有效的配置文件。如果NVRAM中有startup-config文件，路由器将加载并运行此文件。后者启动设备后将忽略NVRAM中的内容，直接进入”configuration dialog“</span></p>
]]></content:encoded>
			<wfw:commentRss>http://www.joansky.com/ios-password-recovery.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>CCNA实验(1)---IOS之管理方式安全配置</title>
		<link>http://www.joansky.com/ios-security.html</link>
		<comments>http://www.joansky.com/ios-security.html#comments</comments>
		<pubDate>Mon, 04 Jul 2011 12:43:04 +0000</pubDate>
		<dc:creator>Joan</dc:creator>
				<category><![CDATA[CCNA实验报告]]></category>
		<category><![CDATA[cisco]]></category>
		<category><![CDATA[安全管理]]></category>
		<category><![CDATA[配置]]></category>

		<guid isPermaLink="false">http://www.joansky.com/?p=165</guid>
		<description><![CDATA[1、实验目的：配置cisco设备管理密码，包括控制台和远程管理 2、实验环境：Packet Tracer 5.3.0 3、实验步骤： A、用console方式登陆 （1）将PC1与R1通过console线连接起来 （2）用面板中“connections”中的“console"线，将其分别连接到PC1的"RS 232”接口和R1的“console”接口。如下图所示 （3）左键单击PC1，选择“Desktop”-&#62;点击“Terminal”，点击“ok”按钮。出现“Continue with configuration dialog? [yes/no]: ”这条语句，意味着已经成功登陆R1 （4）输入：no。进入R1用户模式。 B、下面开始进行路由器的基本配置 （1）进入特权模式 Router&#62;en （2）进入全局配置模式 Router#conf t （3）配置主机名（可配可不配，只是为了便于区别设备） Router(config)#hostname joan （4）启用口令，密码以明文记录在路由器的配置文件中 joan(config)#enable password cisco （5）启用加密口令，密码使用MD5加密算法将结果记录在路由器的配置文件中 joan(config)#enable secret joan 注：如果（4）和（5）条命令同时配置，后一条命令起作用 C、配置控制台管理密码 （1）进入控制台端口 joan(config)#line console 0 （2）配置控制台口令 joan(config-line)#login joan(config-line)#password joan D、配置远程管理密码 （1）进入远程登陆虚拟端口 joan(config)#line vty 0 15 （2）配置远程登陆口令 joan(config-line)#login joan(config-line)#password joan （3）设置登陆后提示信息 joan(config-line)#banner [...]]]></description>
			<content:encoded><![CDATA[<p><span style="color: #0000ff;">1、实验目的：配置cisco设备管理密码，包括控制台和远程管理</span></p>
<p><span style="color: #0000ff;">2、实验环境：Packet Tracer 5.3.0<br />
</span></p>
<p><span style="color: #0000ff;">3、实验步骤：</span></p>
<p>A、用console方式登陆</p>
<p>（1）将PC1与R1通过console线连接起来</p>
<p>（2）用面板中“connections”中的“console"线，将其分别连接到PC1的"RS 232”接口和R1的“console”接口。如下图所示</p>
<p><img class="alignnone size-full wp-image-163" title="CCNA_console登陆" src="http://www.joansky.com/wp-content/uploads/2011/07/CCNA_console登陆.png" alt="CCNA_console登陆" width="325" height="151" /><br />
（3）左键单击PC1，选择“Desktop”-&gt;点击“Terminal”，点击“ok”按钮。出现“Continue with configuration dialog? [yes/no]: ”这条语句，意味着已经成功登陆R1</p>
<p>（4）输入：no。进入R1用户模式。</p>
<p>B、下面开始进行路由器的基本配置</p>
<p>（1）进入特权模式<br />
Router&gt;en</p>
<p>（2）进入全局配置模式<br />
Router#conf t</p>
<p>（3）配置主机名（可配可不配，只是为了便于区别设备）<br />
Router(config)#hostname joan</p>
<p>（4）启用口令，密码以明文记录在路由器的配置文件中<br />
joan(config)#enable password cisco</p>
<p>（5）启用加密口令，密码使用MD5加密算法将结果记录在路由器的配置文件中<br />
joan(config)#enable secret joan</p>
<p>注：如果（4）和（5）条命令同时配置，后一条命令起作用</p>
<p>C、配置控制台管理密码</p>
<p>（1）进入控制台端口</p>
<p>joan(config)#line console 0</p>
<p>（2）配置控制台口令</p>
<p>joan(config-line)#login</p>
<p>joan(config-line)#password joan</p>
<p>D、配置远程管理密码</p>
<p>（1）进入远程登陆虚拟端口</p>
<p>joan(config)#line vty 0 15</p>
<p>（2）配置远程登陆口令</p>
<p>joan(config-line)#login</p>
<p>joan(config-line)#password joan</p>
<p>（3）设置登陆后提示信息</p>
<p>joan(config-line)#banner motd #Welcome to joansky.com#</p>
<p><span style="color: #ff0000;">注：如果想需要让信息换行显示，直接在输入第一个”#“后按回车</span></p>
<p><span style="color: #ff0000;">注：使用”password“参数配置启用口令、控制台口令和登陆口令时，如需将密码以密文形式记录在路由器的配置文件中，那么可使用“enable password 7 082B434F07”替代，或者在全局模式下使用“service password-encryption”命令。（082B434F07是”joan“字符串经过cisco加密算法后得到的密文）。这两条命令都是使用cisco加密算法进行加密。</span></p>
<p><span style="color: #0000ff;">4、实验测试：</span></p>
<p>测试目标：测试远程登录口令是否设置成功</p>
<p>A、使用”copper cross-over“线将PC1的”FastEthernet“口和R1的”FastEthernet 0/0“连接。如下图所示</p>
<p><img class="alignnone size-full wp-image-164" title="CCNA_telnet登陆" src="http://www.joansky.com/wp-content/uploads/2011/07/CCNA_telnet登陆.png" alt="CCNA_telnet登陆" width="296" height="132" /></p>
<p>B、配置R1的IP地址</p>
<p>（1）进入R1的f0/0口</p>
<p>joan(config)#int f0/0</p>
<p>（2）启用端口</p>
<p>joan(config-if)#no shutdown</p>
<p>（3）配置端口IP地址</p>
<p>joan(config-if)#ip address 192.168.1.254 255.255.255.0</p>
<p>C、配置PC1的IP地址</p>
<p>（1）左键单击PC1，选择“Desktop”-&gt;点击“IP Configuration”，点击“ok”按钮。</p>
<p>（2）填写IP地址，IP Address为192.168.1.1；Subnet Mask为255.255.255.0； Default Gateway为192.168.1.254（这里也可以不填）</p>
<p>D、在PC1上使用“Terminal”工具进行测试</p>
<p>（1）打开“Terminal”工具，输入“telnet 192.168.1.254”</p>
<p>（2）回车，输入设置的密码，这里为“joan”</p>
<p><span style="color: #ff0000;">注：输入的密码并不会显示出来，直接回车就可以了</span></p>
]]></content:encoded>
			<wfw:commentRss>http://www.joansky.com/ios-security.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>配置DNS服务器之唯缓服务器---Windows Server 2003</title>
		<link>http://www.joansky.com/dns_4.html</link>
		<comments>http://www.joansky.com/dns_4.html#comments</comments>
		<pubDate>Thu, 30 Jun 2011 12:59:08 +0000</pubDate>
		<dc:creator>Joan</dc:creator>
				<category><![CDATA[网络相关]]></category>
		<category><![CDATA[windows server]]></category>
		<category><![CDATA[服务器]]></category>
		<category><![CDATA[配置]]></category>

		<guid isPermaLink="false">http://www.joansky.com/?p=162</guid>
		<description><![CDATA[配置目标：将服务器部署为唯缓（Caching-only） DNS服务器。用于响应用户的请求，并询问其它授权的域名服务器，将得到的回答信息返回给用户。 假设授权的域名服务器是主域服务器，IP地址：192.168.56.2 配置步骤如下： 1、打开DNS管理器，选择slyar2，单击右键，选择“属性”-&#62;“转发器”，填写“IP地址：192.168.56.2”（主域服务器IP），点击“应用”，确定。唯缓服务器配置完成。 测试唯缓服务器配置是否成功，步骤如下： 1、在唯缓服务器上使用CMD，使用命令：ping www.bnuep.com（主域服务可解析的域名） 2、在DNS管理器菜单栏，点击查看，选择高级，出现缓存的查找项，可以看到已经存储了关于域名解析的缓存记录]]></description>
			<content:encoded><![CDATA[<p>配置目标：将服务器部署为唯缓（Caching-only） DNS服务器。用于响应用户的请求，并询问其它授权的域名服务器，将得到的回答信息返回给用户。</p>
<p>假设授权的域名服务器是主域服务器，IP地址：192.168.56.2</p>
<p>配置步骤如下：</p>
<p>1、打开DNS管理器，选择slyar2，单击右键，选择“属性”-&gt;“转发器”，填写“IP地址：192.168.56.2”（主域服务器IP），点击“应用”，确定。唯缓服务器配置完成。</p>
<p><img class="alignnone size-full wp-image-160" title="唯缓服务器配置1" src="http://www.joansky.com/wp-content/uploads/2011/06/唯缓服务器配置1.png" alt="唯缓服务器配置1" width="405" height="467" /></p>
<p>测试唯缓服务器配置是否成功，步骤如下：</p>
<p>1、在唯缓服务器上使用CMD，使用命令：ping www.bnuep.com（主域服务可解析的域名）</p>
<p>2、在DNS管理器菜单栏，点击查看，选择高级，出现缓存的查找项，可以看到已经存储了关于域名解析的缓存记录</p>
<p><img class="alignnone size-full wp-image-161" title="唯缓服务器配置2" src="http://www.joansky.com/wp-content/uploads/2011/06/唯缓服务器配置2.png" alt="唯缓服务器配置2" width="700" height="200" /></p>
]]></content:encoded>
			<wfw:commentRss>http://www.joansky.com/dns_4.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>配置DNS服务器之辅助服务器---Windows Server 2003</title>
		<link>http://www.joansky.com/dns_3.html</link>
		<comments>http://www.joansky.com/dns_3.html#comments</comments>
		<pubDate>Thu, 30 Jun 2011 12:23:57 +0000</pubDate>
		<dc:creator>Joan</dc:creator>
				<category><![CDATA[网络相关]]></category>
		<category><![CDATA[windows server]]></category>
		<category><![CDATA[服务器]]></category>
		<category><![CDATA[配置]]></category>

		<guid isPermaLink="false">http://www.joansky.com/?p=159</guid>
		<description><![CDATA[配置目标：当主域服务器不可用时，代替主域服务器进行域名解析 主域服务器IP地址：192.168.56.2，区域名称为：bnuep.com 辅助服务器IP地址：192.168.56.4 具体配置如下： 1、先配置主域服务器的区域复制权限。在主域服务器上，打开DNS管理器，单击右键，选择“属性”-&#62;选择“区域复制项”，选择“到所有服务器”，确定。 2、开始配置辅助服务器。在辅助服务器上，打开DNS管理器，点击DNS，选择“slyar2”，单击右键，选择“新建区域” 3、点击“下一步”，选择“辅助区域”，取消“在Active Directory中存储区域” 4、点击“下一步”，填写“区域名称：bnuep.com” 5、点击“下一步”，填写“IP地址：192.168.56.2”（主域服务器IP地址），点击下一步，完成 6、点击“bnuep.com”可以看到主域服务器相关域名解析的记录，辅助服务器配置完成。 在cmd下使用命令：nslookup www.bnuep.com 192.168.56.4 （辅助服务器IP地址）测试辅助域名服务器配置是否成功。]]></description>
			<content:encoded><![CDATA[<p>配置目标：当主域服务器不可用时，代替主域服务器进行域名解析</p>
<p>主域服务器IP地址：192.168.56.2，区域名称为：bnuep.com</p>
<p>辅助服务器IP地址：192.168.56.4</p>
<p>具体配置如下：</p>
<p>1、先配置主域服务器的区域复制权限。在主域服务器上，打开DNS管理器，单击右键，选择“属性”-&gt;选择“区域复制项”，选择“到所有服务器”，确定。</p>
<p><img class="alignnone size-full wp-image-154" title="辅助服务器配置1" src="http://www.joansky.com/wp-content/uploads/2011/06/辅助服务器配置1.png" alt="辅助服务器配置1" width="404" height="416" /></p>
<p>2、开始配置辅助服务器。在辅助服务器上，打开DNS管理器，点击DNS，选择“slyar2”，单击右键，选择“新建区域”</p>
<p>3、点击“下一步”，选择“辅助区域”，取消“在Active Directory中存储区域”</p>
<p><img class="alignnone size-full wp-image-155" title="辅助服务器配置2" src="http://www.joansky.com/wp-content/uploads/2011/06/辅助服务器配置2.png" alt="辅助服务器配置2" width="503" height="362" /></p>
<p>4、点击“下一步”，填写“区域名称：bnuep.com”</p>
<p>5、点击“下一步”，填写“IP地址：192.168.56.2”（主域服务器IP地址），点击下一步，完成</p>
<p><img class="alignnone size-full wp-image-156" title="辅助服务器配置3" src="http://www.joansky.com/wp-content/uploads/2011/06/辅助服务器配置3.png" alt="辅助服务器配置3" width="503" height="362" /></p>
<p>6、点击“bnuep.com”可以看到主域服务器相关域名解析的记录，辅助服务器配置完成。</p>
<p><img class="alignnone size-full wp-image-157" title="辅助服务器配置4" src="http://www.joansky.com/wp-content/uploads/2011/06/辅助服务器配置4.png" alt="辅助服务器配置4" width="700" height="243" /></p>
<p>在cmd下使用命令：nslookup www.bnuep.com 192.168.56.4 （辅助服务器IP地址）测试辅助域名服务器配置是否成功。</p>
<p><img class="alignnone size-full wp-image-158" title="辅助服务器配置5" src="http://www.joansky.com/wp-content/uploads/2011/06/辅助服务器配置5.png" alt="辅助服务器配置5" width="514" height="326" /></p>
]]></content:encoded>
			<wfw:commentRss>http://www.joansky.com/dns_3.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>配置DNS服务器之委派服务器---Windows Server 2003</title>
		<link>http://www.joansky.com/dns_2.html</link>
		<comments>http://www.joansky.com/dns_2.html#comments</comments>
		<pubDate>Thu, 30 Jun 2011 11:57:24 +0000</pubDate>
		<dc:creator>Joan</dc:creator>
				<category><![CDATA[网络相关]]></category>
		<category><![CDATA[windows server]]></category>
		<category><![CDATA[服务器]]></category>
		<category><![CDATA[配置]]></category>

		<guid isPermaLink="false">http://www.joansky.com/?p=153</guid>
		<description><![CDATA[配置目标：主域服务器将信息技术学院的域名（itc.bnuep.com）解析委派给其他服务器（称“委派服务器”），委派服务器可以添加该学院拥有的FTP、WWW、EMAIL等服务器域名 委派服务器的IP地址：192.168.56.3 具体配置如下： 1、首先主域服务器需对信息技术学院的域名解析进行委派。打开主域服务器的DNS管理器，点击DNS，选择“slyar1”，右键点击“bnuep.com”，选择“新建委派” 2、点击“下一步”，选择“主要区域” 3、点击“下一步”，填写“委派的域：itc” 4、点击“下一步”，填写“服务器完全合格的域名：itc.bnuep.com”，IP地址填写192.168.56.3（委派服务器的IP地址），点击确定 5、点击“下一步”，完成 6、如下图所示，主域服务的委派任务配置完成。接下来配置委派服务器 7、打开委派服务器的DNS管理器。委派服务器的配置跟配置主域服务器的步骤一样（可参见配置DNS服务器之主域服务器——Windows Server 2003），选择“新建区域”，填写“区域名称：itc.bnuep.com” 8、接下来开始添加主机记录。选择“新建主机” 填写“名称：www，IP地址：1.1.1.1”，点击添加主机，确定 添加，“名称：ftp，IP地址：2.2.2.2”，点击添加主机，确定 添加，“名称：mail，IP地址：3.3.111.222”，点击添加主机，确定 添加所有需要的子域名后，点击完成。 如下图所示，委派服务器配置完成 在cmd下使用命令：nslookup ftp.itc.bnuep.com 测试主域服务配置是否成功]]></description>
			<content:encoded><![CDATA[<p>配置目标：主域服务器将信息技术学院的域名（itc.bnuep.com）解析委派给其他服务器（称“委派服务器”），委派服务器可以添加该学院拥有的FTP、WWW、EMAIL等服务器域名</p>
<p>委派服务器的IP地址：192.168.56.3</p>
<p>具体配置如下：</p>
<p>1、首先主域服务器需对信息技术学院的域名解析进行委派。打开主域服务器的DNS管理器，点击DNS，选择“slyar1”，右键点击“bnuep.com”，选择“新建委派”</p>
<p>2、点击“下一步”，选择“主要区域”</p>
<p>3、点击“下一步”，填写“委派的域：itc”</p>
<p><img class="alignnone size-full wp-image-146" title="委派服务器配置1" src="http://www.joansky.com/wp-content/uploads/2011/06/委派服务器配置1.png" alt="委派服务器配置1" width="502" height="362" /></p>
<p>4、点击“下一步”，填写“服务器完全合格的域名：itc.bnuep.com”，IP地址填写192.168.56.3（委派服务器的IP地址），点击确定</p>
<p><img class="alignnone size-full wp-image-147" title="委派服务器配置2" src="http://www.joansky.com/wp-content/uploads/2011/06/委派服务器配置2.png" alt="委派服务器配置2" width="404" height="416" /></p>
<p>5、点击“下一步”，完成</p>
<p><img class="alignnone size-full wp-image-148" title="委派服务器配置3" src="http://www.joansky.com/wp-content/uploads/2011/06/委派服务器配置3.png" alt="委派服务器配置3" width="503" height="362" /></p>
<p>6、如下图所示，主域服务的委派任务配置完成。接下来配置委派服务器</p>
<p><img class="alignnone size-full wp-image-149" title="委派服务器配置4" src="http://www.joansky.com/wp-content/uploads/2011/06/委派服务器配置4.png" alt="委派服务器配置4" width="702" height="241" /></p>
<p>7、打开委派服务器的DNS管理器。委派服务器的配置跟配置主域服务器的步骤一样（可参见<a href="http://www.joansky.com/145.html" target="_blank">配置DNS服务器之主域服务器——Windows Server 2003</a>），选择“新建区域”，填写“区域名称：itc.bnuep.com”</p>
<p><img class="alignnone size-full wp-image-150" title="委派服务器配置5" src="http://www.joansky.com/wp-content/uploads/2011/06/委派服务器配置5.png" alt="委派服务器配置5" width="503" height="362" /></p>
<p>8、接下来开始添加主机记录。选择“新建主机”<br />
填写“名称：www，IP地址：1.1.1.1”，点击添加主机，确定<br />
添加，“名称：ftp，IP地址：2.2.2.2”，点击添加主机，确定<br />
添加，“名称：mail，IP地址：3.3.111.222”，点击添加主机，确定<br />
添加所有需要的子域名后，点击完成。</p>
<p>如下图所示，委派服务器配置完成</p>
<p><img class="alignnone size-full wp-image-151" title="委派服务器配置6" src="http://www.joansky.com/wp-content/uploads/2011/06/委派服务器配置6.png" alt="委派服务器配置6" width="701" height="230" /></p>
<p>在cmd下使用命令：nslookup ftp.itc.bnuep.com 测试主域服务配置是否成功</p>
<p><img class="alignnone size-full wp-image-152" title="委派服务器配置7" src="http://www.joansky.com/wp-content/uploads/2011/06/委派服务器配置7.png" alt="委派服务器配置7" width="499" height="329" /></p>
]]></content:encoded>
			<wfw:commentRss>http://www.joansky.com/dns_2.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>配置DNS服务器之主域服务器---Windows Server 2003</title>
		<link>http://www.joansky.com/dns_1.html</link>
		<comments>http://www.joansky.com/dns_1.html#comments</comments>
		<pubDate>Wed, 29 Jun 2011 15:16:22 +0000</pubDate>
		<dc:creator>Joan</dc:creator>
				<category><![CDATA[网络相关]]></category>
		<category><![CDATA[windows server]]></category>
		<category><![CDATA[服务器]]></category>
		<category><![CDATA[配置]]></category>

		<guid isPermaLink="false">http://www.joansky.com/?p=145</guid>
		<description><![CDATA[配置目标：主服务器可以解析学校的二级域名以及学院子域名。各域名具体情况如下： 学校的二级域名：bnuep.com ，IP地址：111.111.111.111 文学院的子域名：wxy.bnuep.com，IP地址：222.222.222.222 国际商学部的子域名：ibm. bnuzh.edu，IP地址：111.222.111.222 具体配置如下： 1、打开DNS管理器，点击DNS，选择“slyar1”，单击右键，选择“新建区域”-&#62;点击“下一步”，选择“主要区域”，取消“在Active Directory中存储区域” 2、点击下一步，选择正向查找区域 3、点击下一步，填写“区域名称：bnuep.com”（学校二级域名） 4、点击下一步，直至完成 5、点击正向查找区域中，选择bnuep.com，点击右键-&#62;选择新建主机 6、填写“名称：www，IP地址：111.111.111.111”，点击添加主机，确定 添加，“名称：wxy，IP地址：222.222.222.222”，点击添加主机，确定 添加，“名称：ibm，IP地址：111.222.111.222”，点击添加主机，确定 添加所有需要的子域名后，点击完成。 7、如下图，主域服务器配置完成 在cmd下使用命令：nslookup www.bnuep.com 测试主域服务配置是否成功]]></description>
			<content:encoded><![CDATA[<p>配置目标：主服务器可以解析学校的二级域名以及学院子域名。各域名具体情况如下：</p>
<p>学校的二级域名：bnuep.com ，IP地址：111.111.111.111</p>
<p>文学院的子域名：wxy.bnuep.com，IP地址：222.222.222.222</p>
<p>国际商学部的子域名：ibm. bnuzh.edu，IP地址：111.222.111.222</p>
<p>具体配置如下：</p>
<p>1、打开DNS管理器，点击DNS，选择“slyar1”，单击右键，选择“新建区域”-&gt;点击“下一步”，选择“主要区域”，取消“在Active Directory中存储区域”</p>
<p><img class="alignnone size-full wp-image-139" title="主服务器配置1" src="http://www.joansky.com/wp-content/uploads/2011/06/主服务器配置1.png" alt="主服务器配置1" width="503" height="362" /></p>
<p>2、点击下一步，选择正向查找区域</p>
<p>3、点击下一步，填写“区域名称：bnuep.com”（学校二级域名）</p>
<p><img class="alignnone size-full wp-image-140" title="主服务器配置2" src="http://www.joansky.com/wp-content/uploads/2011/06/主服务器配置2.png" alt="主服务器配置2" width="503" height="362" /></p>
<p>4、点击下一步，直至完成</p>
<p>5、点击正向查找区域中，选择bnuep.com，点击右键-&gt;选择新建主机</p>
<p>6、填写“名称：www，IP地址：111.111.111.111”，点击添加主机，确定</p>
<p>添加，“名称：wxy，IP地址：222.222.222.222”，点击添加主机，确定</p>
<p>添加，“名称：ibm，IP地址：111.222.111.222”，点击添加主机，确定</p>
<p>添加所有需要的子域名后，点击完成。</p>
<p><img class="alignnone size-full wp-image-142" title="主服务器配置4" src="http://www.joansky.com/wp-content/uploads/2011/06/主服务器配置4.png" alt="主服务器配置4" width="347" height="300" /></p>
<p>7、如下图，主域服务器配置完成</p>
<p><img class="alignnone size-full wp-image-143" title="主服务器配置5" src="http://www.joansky.com/wp-content/uploads/2011/06/主服务器配置5.png" alt="主服务器配置5" width="701" height="226" /></p>
<p>在cmd下使用命令：nslookup <a href="http://www.bnuep.com/">www.bnuep.com</a> 测试主域服务配置是否成功</p>
<p><img class="alignnone size-full wp-image-144" title="主域服务器配置6" src="http://www.joansky.com/wp-content/uploads/2011/06/主域服务器配置6.png" alt="主域服务器配置6" width="501" height="225" /></p>
]]></content:encoded>
			<wfw:commentRss>http://www.joansky.com/dns_1.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>关于OSPF与ACL配置命令参数中wildcard_mask的区别</title>
		<link>http://www.joansky.com/wildcard_mask.html</link>
		<comments>http://www.joansky.com/wildcard_mask.html#comments</comments>
		<pubDate>Sun, 26 Jun 2011 11:27:15 +0000</pubDate>
		<dc:creator>Joan</dc:creator>
				<category><![CDATA[网络相关]]></category>
		<category><![CDATA[cisco]]></category>

		<guid isPermaLink="false">http://www.joansky.com/?p=138</guid>
		<description><![CDATA[在配置OSPF路由协议时，宣告网络使用命令： network IP_address wildcard_mask area area_# 在配置ACL时，使用命令： access-list numbers permit&#124;deny source_IP_address wildcard_mask 这两条配置命令的wildcard_mask参数有点小区别： OSPF的wildcard_mask参数（反掩码），必须是由连续的0组成，不能被1断开。 ACL的wildcard_mask参数（通配符），可以使用不连续的0组成，只需对应的位置匹配即可。 例如：access-list 1 permit 192.168.1.0 0.0.0.10 表示允许192.168.1.0、192.168.1.2、192.168.1.8、192.168.1.10这4个IP地址通过（假设192.168.1.0是主机地址）]]></description>
			<content:encoded><![CDATA[<p>在配置OSPF路由协议时，宣告网络使用命令：</p>
<p>network IP_address <span style="color: #0000ff;">wildcard_mask</span> area area_#</p>
<p>在配置ACL时，使用命令：</p>
<p>access-list numbers permit|deny source_IP_address <span style="color: #0000ff;">wildcard_mask </span></p>
<p>这两条配置命令的wildcard_mask参数有点小区别：</p>
<p><span style="color: #0000ff;">OSPF的wildcard_mask参数（反掩码），必须是由连续的0组成，不能被1断开。<br />
ACL的wildcard_mask参数（通配符），可以使用不连续的0组成，只需对应的位置匹配即可。</span></p>
<p>例如：access-list 1 permit 192.168.1.0 0.0.0.10</p>
<p>表示允许192.168.1.0、192.168.1.2、192.168.1.8、192.168.1.10这4个IP地址通过（假设192.168.1.0是主机地址）</p>
]]></content:encoded>
			<wfw:commentRss>http://www.joansky.com/wildcard_mask.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>安装WordPress优化插件All in One SEO Pack出现的小问题</title>
		<link>http://www.joansky.com/all-in-one-seo-pack.html</link>
		<comments>http://www.joansky.com/all-in-one-seo-pack.html#comments</comments>
		<pubDate>Mon, 20 Jun 2011 05:54:06 +0000</pubDate>
		<dc:creator>Joan</dc:creator>
				<category><![CDATA[电脑技巧]]></category>
		<category><![CDATA[wordpress]]></category>
		<category><![CDATA[插件]]></category>

		<guid isPermaLink="false">http://www.joansky.com/?p=137</guid>
		<description><![CDATA[安装并设置了All in One SEO Pack插件后，后台一直出现红色的提示 All in One SEO Pack must be configured. Go to the admin page to enable and configure the plugin. All in One SEO Pack now supports Custom Post Types. 到底是哪里没有启动呢。插件面板，确定All in One SEO Pack已处于启动状态，设置面板修改的All in One SEO Pack设置也保存了。难道是All in One SEO Pack必须全部填满？但是如果是必须设置的话应该会以"*"提示。 仔细检查了下设置发现Plugin Status 没有选择enabled，选择并保存，错误提示消失了。 这错误还是挺低级的，下回注意点。]]></description>
			<content:encoded><![CDATA[<p>安装并设置了All in One SEO Pack插件后，后台一直出现红色的提示</p>
<blockquote><p>All in One SEO Pack must be configured. Go to the admin page to enable and configure the plugin.<br />
All in One SEO Pack now supports Custom Post Types.</p></blockquote>
<p>到底是哪里没有启动呢。插件面板，确定All in One SEO Pack已处于启动状态，设置面板修改的All in One SEO Pack设置也保存了。难道是All in One SEO Pack必须全部填满？但是如果是必须设置的话应该会以"*"提示。</p>
<p>仔细检查了下设置发现Plugin Status 没有选择enabled，选择并保存，错误提示消失了。</p>
<p><img class="alignnone size-full wp-image-136" title="All in One SEO Pack" src="http://www.joansky.com/wp-content/uploads/2011/06/All-in-One-SEO-Pack.png" alt="All in One SEO Pack" width="400" height="158" /></p>
<p>这错误还是挺低级的，下回注意点。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.joansky.com/all-in-one-seo-pack.html/feed</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>EIGRP协议：启用与关闭自动汇总功能</title>
		<link>http://www.joansky.com/eigrp-auto-summary.html</link>
		<comments>http://www.joansky.com/eigrp-auto-summary.html#comments</comments>
		<pubDate>Mon, 30 May 2011 03:02:34 +0000</pubDate>
		<dc:creator>Joan</dc:creator>
				<category><![CDATA[网络相关]]></category>
		<category><![CDATA[cisco]]></category>
		<category><![CDATA[eigrp]]></category>

		<guid isPermaLink="false">http://www.joansky.com/?p=135</guid>
		<description><![CDATA[EIGRP支持无类路由协议，在默认情况下，EIGRP开启自动汇总功能，在不连续子网的情况下与有类路由协议行为相似。当你的网络中有不连续子网时，那么就要关闭自动汇总功能以支持无类路由协议 等一下，也许你会问什么是连续子网和不连续子网？ 连续子网：主类网络号相同，子网掩码相同 不连续子网=把连续子网隔开 如下图，172.17.2.0/24,172.17.1.0/24网段被192.168.0.0/16网段隔开，成为不连续子网 下面用这个图来详细说明启用与关闭汇总功能出现的情况。 1、如果被隔开网段所在的路由器开启了汇总功能auto-summary ，那么路由器会自动将路由条目汇总为主类网络发送出去。例如，Router1配置了network 172.17.2.0 0.0.0.255，但是进行网络宣告时，发现送出端口f0/0的网段是192.168.1.0/24，与172.17.2.0/24不处于同一连续子网就把172.17.2.0/24总结为主类网络172.17.0.0/16. Router1的路由条目 172.17.0.0/16 is variably subnetted, 2 subnets, 2 masks D       172.17.0.0/16 is a summary, 00:06:47, Null0 C       172.17.2.0/24 is directly connected, FastEthernet0/1 C    192.168.1.0/24 is directly connected, FastEthernet0/0 D    192.168.2.0/24 [90/30720] via 192.168.1.1, 00:07:06, FastEthernet0/0 进行自动汇总时，Router1收到来着Router2宣告的网络号172.17.0.0/16（Router3已经将172.17.1.0/24进行自动总结），发现自己已经有了该网段，就忽略该宣告信息。因此Router1无法了解到Router3的172.17.1.0/24网段，只能ping通主类网段172.17.1.0/16中的子网络172.17.2.0/24 Router2的路由条目 D    172.17.0.0/16 [90/30720] via 192.168.2.2, 00:00:29, FastEthernet0/1 [90/30720] [...]]]></description>
			<content:encoded><![CDATA[<p>EIGRP支持无类路由协议，在默认情况下，EIGRP开启自动汇总功能，在不连续子网的情况下与有类路由协议行为相似。当你的网络中有不连续子网时，那么就要关闭自动汇总功能以支持无类路由协议</p>
<p>等一下，也许你会问什么是连续子网和不连续子网？</p>
<p><span style="color: #0000ff;">连续子网：主类网络号相同，子网掩码相同</span></p>
<p><span style="color: #0000ff;">不连续子网=把连续子网隔开</span></p>
<p>如下图，172.17.2.0/24,172.17.1.0/24网段被192.168.0.0/16网段隔开，成为不连续子网</p>
<p><img class="alignnone size-full wp-image-134" title="EIGRP" src="http://www.joansky.com/wp-content/uploads/2011/05/EIGRP.png" alt="EIGRP" width="577" height="250" /></p>
<p>下面用这个图来详细说明启用与关闭汇总功能出现的情况。</p>
<p>1、如果被隔开网段所在的路由器开启了汇总功能<span style="color: #0000ff;">auto-summary</span> ，那么路由器会自动将路由条目汇总为主类网络发送出去。例如，Router1配置了network 172.17.2.0 0.0.0.255，但是进行网络宣告时，发现送出端口f0/0的网段是192.168.1.0/24，与172.17.2.0/24不处于同一连续子网就把172.17.2.0/24总结为主类网络172.17.0.0/16.</p>
<p>Router1的路由条目</p>
<p>172.17.0.0/16 is variably subnetted, 2 subnets, 2 masks<br />
D       172.17.0.0/16 is a summary, 00:06:47, Null0<br />
C       172.17.2.0/24 is directly connected, FastEthernet0/1<br />
C    192.168.1.0/24 is directly connected, FastEthernet0/0<br />
D    192.168.2.0/24 [90/30720] via 192.168.1.1, 00:07:06, FastEthernet0/0</p>
<p><span style="color: #0000ff;">进行自动汇总时，Router1收到来着Router2宣告的网络号172.17.0.0/16（Router3已经将172.17.1.0/24进行自动总结），发现自己已经有了该网段，就忽略该宣告信息。因此Router1无法了解到Router3的172.17.1.0/24网段，只能ping通主类网段172.17.1.0/16中的子网络172.17.2.0/24</span></p>
<p>Router2的路由条目</p>
<p>D    172.17.0.0/16 [90/30720] via 192.168.2.2, 00:00:29, FastEthernet0/1<br />
[90/30720] via 192.168.1.2, 00:00:29, FastEthernet0/0<br />
C    192.168.1.0/24 is directly connected, FastEthernet0/0<br />
C    192.168.2.0/24 is directly connected, FastEthernet0/1</p>
<p><span style="color: #0000ff;">Router2收到Router1和Router3关于主类网络172.17.0.0/16的宣告信息，简单认为存在两条路径能同时达到该网络，并进行负载均衡。事实上Router2从F0/0口发送的数据包只能到达172.17.1.0/24网段，从F0/1口发送的数据包只能到达172.17.2.0/24网段，当Router2有数据包发往172.17.2.0/24以及172.17.1.0/24网段时都会出现丢包情况。</span></p>
<p>Router3的路由条目</p>
<p>172.17.0.0/16 is variably subnetted, 2 subnets, 2 masks<br />
D       172.17.0.0/16 is a summary, 00:02:19, Null0<br />
C       172.17.1.0/24 is directly connected, FastEthernet0/0<br />
D    192.168.1.0/24 [90/30720] via 192.168.2.1, 00:01:41, FastEthernet0/1<br />
C    192.168.2.0/24 is directly connected, FastEthernet0/1</p>
<p><span style="color: #0000ff;">Router3跟Router1同理。</span></p>
<p>2、如果被隔开网段所在的路由器关闭了汇总功能<span style="color: #0000ff;">no auto-summary</span> ，那么路由器会如实地将配置的网络信息进行宣告。例如，Router1配置了network 172.17.2.0 255.255.255.0，进行网络宣告时将172.17.2.0/24网络从F0/0口发送出去。</p>
<p>Router1的路由条目</p>
<p>172.17.0.0/16 is variably subnetted, 3 subnets, 2 masks<br />
D       172.17.0.0/16 [90/33280] via 192.168.1.1, 00:26:20, FastEthernet0/0<br />
D       172.17.1.0/24 [90/33280] via 192.168.1.1, 00:17:14, FastEthernet0/0<br />
C       172.17.2.0/24 is directly connected, FastEthernet0/1<br />
C    192.168.1.0/24 is directly connected, FastEthernet0/0<br />
D    192.168.2.0/24 [90/30720] via 192.168.1.1, 00:26:20, FastEthernet0/0</p>
<p>Router2的路由条目</p>
<p>172.17.0.0/16 is variably subnetted, 3 subnets, 2 masks<br />
D       172.17.0.0/16 is a summary, 00:27:01, Null0<br />
D       172.17.1.0/24 [90/30720] via 192.168.2.2, 00:17:55, FastEthernet0/1<br />
D       172.17.2.0/24 [90/30720] via 192.168.1.2, 00:27:01, FastEthernet0/0<br />
C    192.168.1.0/24 is directly connected, FastEthernet0/0<br />
C    192.168.2.0/24 is directly connected, FastEthernet0/1</p>
<p>Router3的路由条目</p>
<p>172.17.0.0/16 is variably subnetted, 2 subnets, 2 masks<br />
D       172.17.0.0/16 [90/33280] via 192.168.2.1, 00:18:26, FastEthernet0/1<br />
C       172.17.1.0/24 is directly connected, FastEthernet0/0<br />
D    192.168.1.0/24 [90/30720] via 192.168.2.1, 00:18:26, FastEthernet0/1<br />
C    192.168.2.0/24 is directly connected, FastEthernet0/1</p>
<p><span style="color: #0000ff;">从上面三个Router条目可看到路由表条目都对应这具体的网络号。只要存在该网络，路由器都将正确发送到目的地址。</span></p>
<p>细心的你可能会发现，路由条目多了</p>
<p><span style="color: #0000ff;">D       172.17.0.0/16 is a summary, 00:27:01, Null0</span></p>
<p>这样一条转发端口为Null0的伪接口，是为了避免产生路由环路，当匹配这条路由的数据包会被路由器丢弃。</p>
<p>假如Router1上有一个数据包，其目的地址为172.17.3.1/24，则router1会将数据包从f0/0口发送出去，到了Router2时，数据包目的地址与Router2的172.17.0.0/16匹配，则将数据包发往Null0口，即丢弃。<br />
如果没有NUll0这一条路由条目，那么数据包会在三个路由器中来回地不停传送。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.joansky.com/eigrp-auto-summary.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>大三下学期各种忙</title>
		<link>http://www.joansky.com/college-life-1.html</link>
		<comments>http://www.joansky.com/college-life-1.html#comments</comments>
		<pubDate>Sat, 28 May 2011 15:55:44 +0000</pubDate>
		<dc:creator>Joan</dc:creator>
				<category><![CDATA[生活琐事]]></category>

		<guid isPermaLink="false">http://www.joansky.com/?p=133</guid>
		<description><![CDATA[这学期过得很充实，各种考试，各种项目，各种比赛，各种培训，罗列一下好了。 1、报了全国计算机等级考试——四级网络工程师，考试时间在三月末，虽说基础还行但是概念什么的还是得看得背，开学后就忙这了。考试成绩在前两天已经出来了，算飘过了。 2、三月底参加信息技术学院举办的ACM校内赛，拿了一等奖。 3、4月份忙着做项目——POJ题数统计系统。主要负责网站的前台开发，虽然之前学过Html，Css基本知识，但这个项目涉及Ajax，Jquery技术，我花了一星期泡图书馆看书，便开工了，边学边做，再加上文档的编写花了几个星期的时间。 4、参加了计算机技术与软件专业技术资格（水平）考试——中级软件工程师，这东西知识范围真广，又是各种备考。成绩要在6月底才公布，应该能过吧。 5、报了通创CCNP的班，送了CCNA，CCNA的培训班是5月14号开始，每个周日就耗在通创那边学习了。虽然NA已经学过了，但多听一遍当加强基础也不错。等着上完思科网院的课拿上考试折扣号，就把NA考了。 6、参加了通创公司的社团。下学期也没什么课，锻炼一下还是有必要的。 7、5月份中旬参加了信息技术学院组织的计算机作品大赛，一共交了2个作品，POJ题数统计系统和微型FTP服务器，FTP拿了一等奖，POJ拿了二等奖。 8、前天晚上学院进行颁奖晚会，拿了三个奖状，还有一些小礼品，什么16G的U盘，300块移动话费，还有一个夜灯。 过几个星期就是CET和期末考试了，接下来又是各种备考..... 今天是Slyar生日，生日快乐哈。下星期是珊和小妹生日，在这里提前祝她们生日快乐！]]></description>
			<content:encoded><![CDATA[<p>这学期过得很充实，各种考试，各种项目，各种比赛，各种培训，罗列一下好了。</p>
<p>1、报了全国计算机等级考试——四级网络工程师，考试时间在三月末，虽说基础还行但是概念什么的还是得看得背，开学后就忙这了。考试成绩在前两天已经出来了，算飘过了。</p>
<p>2、三月底参加信息技术学院举办的ACM校内赛，拿了一等奖。</p>
<p>3、4月份忙着做项目——POJ题数统计系统。主要负责网站的前台开发，虽然之前学过Html，Css基本知识，但这个项目涉及Ajax，Jquery技术，我花了一星期泡图书馆看书，便开工了，边学边做，再加上文档的编写花了几个星期的时间。</p>
<p>4、参加了计算机技术与软件专业技术资格（水平）考试——中级软件工程师，这东西知识范围真广，又是各种备考。成绩要在6月底才公布，应该能过吧。</p>
<p>5、报了通创CCNP的班，送了CCNA，CCNA的培训班是5月14号开始，每个周日就耗在通创那边学习了。虽然NA已经学过了，但多听一遍当加强基础也不错。等着上完思科网院的课拿上考试折扣号，就把NA考了。</p>
<p>6、参加了通创公司的社团。下学期也没什么课，锻炼一下还是有必要的。<br />
7、5月份中旬参加了信息技术学院组织的计算机作品大赛，一共交了2个作品，POJ题数统计系统和微型FTP服务器，FTP拿了一等奖，POJ拿了二等奖。</p>
<p>8、前天晚上学院进行颁奖晚会，拿了三个奖状，还有一些小礼品，什么16G的U盘，300块移动话费，还有一个夜灯。</p>
<p>过几个星期就是CET和期末考试了，接下来又是各种备考.....</p>
<p>今天是Slyar生日，生日快乐哈。下星期是珊和小妹生日，在这里提前祝她们生日快乐！</p>
]]></content:encoded>
			<wfw:commentRss>http://www.joansky.com/college-life-1.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>鼠标点击时动态加载显示表格的下一行</title>
		<link>http://www.joansky.com/ajax1.html</link>
		<comments>http://www.joansky.com/ajax1.html#comments</comments>
		<pubDate>Fri, 15 Apr 2011 12:53:26 +0000</pubDate>
		<dc:creator>Joan</dc:creator>
				<category><![CDATA[编程相关]]></category>
		<category><![CDATA[AJax]]></category>
		<category><![CDATA[Web]]></category>

		<guid isPermaLink="false">http://www.joansky.com/?p=132</guid>
		<description><![CDATA[1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 &#60;html&#62; &#60;head&#62; &#60;meta http-equiv=&#34;Content-Type&#34; content=&#34;text/html; charset=utf-8&#34; /&#62; &#60;title&#62;鼠标点击时动态加载显示表格的下一行&#60;/title&#62; &#60;script type=&#34;text/javascript&#34; [...]]]></description>
			<content:encoded><![CDATA[
<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
</pre></td><td class="code"><pre class="cpp" style="font-family:Verdana,Courier New;"><span style="color: #000080;">&lt;</span>html<span style="color: #000080;">&gt;</span>
<span style="color: #000080;">&lt;</span>head<span style="color: #000080;">&gt;</span>
<span style="color: #000080;">&lt;</span>meta http<span style="color: #000040;">-</span>equiv<span style="color: #000080;">=</span><span style="color: #FF0000;">&quot;Content-Type&quot;</span> content<span style="color: #000080;">=</span><span style="color: #FF0000;">&quot;text/html; charset=utf-8&quot;</span> <span style="color: #000040;">/</span><span style="color: #000080;">&gt;</span>
<span style="color: #000080;">&lt;</span>title<span style="color: #000080;">&gt;</span>鼠标点击时动态加载显示表格的下一行<span style="color: #000080;">&lt;</span><span style="color: #000040;">/</span>title<span style="color: #000080;">&gt;</span>
<span style="color: #000080;">&lt;</span>script type<span style="color: #000080;">=</span><span style="color: #FF0000;">&quot;text/javascript&quot;</span> src<span style="color: #000080;">=</span><span style="color: #FF0000;">&quot;js/jquery-1.3.2.js&quot;</span><span style="color: #000080;">&gt;&lt;</span><span style="color: #000040;">/</span>script<span style="color: #000080;">&gt;</span>
<span style="color: #000080;">&lt;</span>script type<span style="color: #000080;">=</span><span style="color: #FF0000;">&quot;text/javascript&quot;</span><span style="color: #000080;">&gt;</span>
    $<span style="color: #008000;">&#40;</span><span style="color: #FF0000;">&quot;table tr td&quot;</span><span style="color: #008000;">&#41;</span>.<span style="color: #007788;">click</span><span style="color: #008000;">&#40;</span> function <span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span> <span style="color: #008000;">&#123;</span>
	<span style="color: #666666;">//获取点击行的id选择器值</span>
        var target <span style="color: #000080;">=</span> $<span style="color: #008000;">&#40;</span><span style="color: #0000dd;">this</span><span style="color: #008000;">&#41;</span>.<span style="color: #007788;">parent</span><span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span>.<span style="color: #007788;">children</span><span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span>.<span style="color: #007788;">children</span><span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span>.<span style="color: #007788;">attr</span><span style="color: #008000;">&#40;</span><span style="color: #FF0000;">&quot;id&quot;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
	<span style="color: #666666;">//取得下一行的id选择器</span>
        var subId <span style="color: #000080;">=</span> <span style="color: #FF0000;">&quot;#&quot;</span><span style="color: #008080;">;</span>
        subId <span style="color: #000040;">+</span><span style="color: #000080;">=</span> target.<span style="color: #007788;">substr</span><span style="color: #008000;">&#40;</span><span style="color: #0000dd;">5</span>, target.<span style="color: #007788;">length</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
        <span style="color: #666666;">//获取点击行的用户名</span>
        var temp <span style="color: #000080;">=</span> $<span style="color: #008000;">&#40;</span><span style="color: #0000dd;">this</span><span style="color: #008000;">&#41;</span>.<span style="color: #007788;">parent</span><span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span>.<span style="color: #007788;">children</span><span style="color: #008000;">&#40;</span><span style="color: #FF0000;">&quot;td:eq(1)&quot;</span><span style="color: #008000;">&#41;</span>.<span style="color: #007788;">html</span><span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
	<span style="color: #666666;">//发出请求</span>
        $<span style="color: #008000;">&#40;</span>document<span style="color: #008000;">&#41;</span>.<span style="color: #007788;">ready</span><span style="color: #008000;">&#40;</span>function <span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span> <span style="color: #008000;">&#123;</span>
            $.<span style="color: #007788;">ajax</span><span style="color: #008000;">&#40;</span><span style="color: #008000;">&#123;</span>
                type<span style="color: #008080;">:</span> <span style="color: #FF0000;">&quot;post&quot;</span>,
                url<span style="color: #008080;">:</span> <span style="color: #FF0000;">&quot;query.php&quot;</span>,
                data<span style="color: #008080;">:</span> <span style="color: #008000;">&#123;</span> action<span style="color: #008080;">:</span> <span style="color: #FF0000;">&quot;detail&quot;</span>, username<span style="color: #008080;">:</span> temp <span style="color: #008000;">&#125;</span>,
                dataType<span style="color: #008080;">:</span> <span style="color: #FF0000;">&quot;text&quot;</span>,
		<span style="color: #666666;">//在返回数据前用进度条显示，提高用户体验</span>
                beforeSend<span style="color: #008080;">:</span> function <span style="color: #008000;">&#40;</span>XMlhttprequest<span style="color: #008000;">&#41;</span> <span style="color: #008000;">&#123;</span>
                    $<span style="color: #008000;">&#40;</span>subId<span style="color: #008000;">&#41;</span>.<span style="color: #007788;">children</span><span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span>.<span style="color: #007788;">html</span><span style="color: #008000;">&#40;</span><span style="color: #FF0000;">&quot;&lt;img src=<span style="color: #000099; font-weight: bold;">\&quot;</span>load.gif<span style="color: #000099; font-weight: bold;">\&quot;</span>&gt;&lt;/img&gt;&quot;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
                <span style="color: #008000;">&#125;</span>,
		<span style="color: #666666;">//返回数据，操作htm值</span>
                success<span style="color: #008080;">:</span> function <span style="color: #008000;">&#40;</span>data<span style="color: #008000;">&#41;</span> <span style="color: #008000;">&#123;</span>
                    $<span style="color: #008000;">&#40;</span>subId<span style="color: #008000;">&#41;</span>.<span style="color: #007788;">children</span><span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span>.<span style="color: #007788;">html</span><span style="color: #008000;">&#40;</span>data<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
                <span style="color: #008000;">&#125;</span>
            <span style="color: #008000;">&#125;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
	<span style="color: #666666;">//显示行</span>
	$<span style="color: #008000;">&#40;</span>subId<span style="color: #008000;">&#41;</span>.<span style="color: #007788;">toggle</span><span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
    <span style="color: #008000;">&#125;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
<span style="color: #000080;">&lt;</span><span style="color: #000040;">/</span>script<span style="color: #000080;">&gt;</span>
<span style="color: #000080;">&lt;</span><span style="color: #000040;">/</span>head<span style="color: #000080;">&gt;</span>
<span style="color: #000080;">&lt;</span>body<span style="color: #000080;">&gt;</span>
<span style="color: #000080;">&lt;</span>table<span style="color: #000080;">&gt;</span>
<span style="color: #000080;">&lt;</span>tr<span style="color: #000080;">&gt;&lt;</span>td<span style="color: #000080;">&gt;</span>ID<span style="color: #000080;">&lt;</span><span style="color: #000040;">/</span>td<span style="color: #000080;">&gt;&lt;</span>td<span style="color: #000080;">&gt;</span>用户名<span style="color: #000080;">&lt;</span><span style="color: #000040;">/</span>td<span style="color: #000080;">&gt;&lt;</span>td id<span style="color: #000080;">=</span><span style="color: #FF0000;">&quot;index0&quot;</span><span style="color: #000080;">&gt;</span>题目总数<span style="color: #000080;">&lt;</span><span style="color: #000040;">/</span>td<span style="color: #000080;">&gt;&lt;</span><span style="color: #000040;">/</span>tr<span style="color: #000080;">&gt;</span>
<span style="color: #000080;">&lt;</span>tr<span style="color: #000080;">&gt;&lt;</span>td<span style="color: #000080;">&gt;</span><span style="color: #0000dd;">1</span><span style="color: #000080;">&lt;</span><span style="color: #000040;">/</span>td<span style="color: #000080;">&gt;&lt;</span>td<span style="color: #000080;">&gt;</span>joan<span style="color: #000080;">&lt;</span><span style="color: #000040;">/</span>td<span style="color: #000080;">&gt;&lt;</span>td id<span style="color: #000080;">=</span><span style="color: #FF0000;">&quot;index1&quot;</span><span style="color: #000080;">&gt;</span><span style="color: #0000dd;">4</span><span style="color: #000080;">&lt;</span><span style="color: #000040;">/</span>td<span style="color: #000080;">&gt;&lt;</span><span style="color: #000040;">/</span>tr<span style="color: #000080;">&gt;</span>
<span style="color: #000080;">&lt;</span>tr display<span style="color: #000080;">=</span><span style="color: #FF0000;">&quot;none&quot;</span> id<span style="color: #000080;">=</span><span style="color: #FF0000;">&quot;0&quot;</span><span style="color: #000080;">&gt;&lt;</span>td colspan<span style="color: #000080;">=</span><span style="color: #FF0000;">&quot;3&quot;</span><span style="color: #000080;">&gt;&lt;</span><span style="color: #000040;">/</span>td<span style="color: #000080;">&gt;&lt;</span><span style="color: #000040;">/</span>tr<span style="color: #000080;">&gt;</span>
<span style="color: #000080;">&lt;</span>tr<span style="color: #000080;">&gt;&lt;</span>td<span style="color: #000080;">&gt;</span><span style="color: #0000dd;">2</span><span style="color: #000080;">&lt;</span><span style="color: #000040;">/</span>td<span style="color: #000080;">&gt;&lt;</span>td<span style="color: #000080;">&gt;</span>joansky<span style="color: #000080;">&lt;</span><span style="color: #000040;">/</span>td<span style="color: #000080;">&gt;&lt;</span>td id<span style="color: #000080;">=</span><span style="color: #FF0000;">&quot;index1&quot;</span><span style="color: #000080;">&gt;</span><span style="color: #0000dd;">3</span><span style="color: #000080;">&lt;</span><span style="color: #000040;">/</span>td<span style="color: #000080;">&gt;&lt;</span><span style="color: #000040;">/</span>tr<span style="color: #000080;">&gt;</span>
<span style="color: #000080;">&lt;</span>tr display<span style="color: #000080;">=</span><span style="color: #FF0000;">&quot;none&quot;</span> id<span style="color: #000080;">=</span><span style="color: #FF0000;">&quot;0&quot;</span><span style="color: #000080;">&gt;&lt;</span>td colspan<span style="color: #000080;">=</span><span style="color: #FF0000;">&quot;3&quot;</span><span style="color: #000080;">&gt;&lt;</span><span style="color: #000040;">/</span>td<span style="color: #000080;">&gt;&lt;</span><span style="color: #000040;">/</span>tr<span style="color: #000080;">&gt;</span>
<span style="color: #000080;">&lt;</span><span style="color: #000040;">/</span>table<span style="color: #000080;">&gt;</span>
<span style="color: #000080;">&lt;</span><span style="color: #000040;">/</span>body<span style="color: #000080;">&gt;</span>
<span style="color: #000080;">&lt;</span><span style="color: #000040;">/</span>html<span style="color: #000080;">&gt;</span></pre></td></tr></table></div>

<p>这个表格显示用户基本情况，下一行显示用户题目信息。</p>
<p>我想把这个表格设计为当鼠标点击用户的基本情况时，根据用户名动态查询用户题目信息后显示出来</p>
<p>怎么获取鼠标点击的是哪一行呢？</p>
<p>利用$(this).parent().children().children().attr("id")可以获取鼠标点击该行的id选择器值，然后使用获得的id选择器去获取下一行的元素，最后使用.toggle()让其交替显示隐藏。</p>
<p><span style="color: #ff0000;">解析$(this).parent().children().children().attr("id")</span></p>
<p><span style="color: #0000ff;">$(this).parent()取得&lt;td&gt;1&lt;/td&gt;&lt;td&gt;joan&lt;/td&gt;&lt;td id="index1"&gt;4&lt;/td&gt;</span></p>
<p><span style="color: #0000ff;">$(this).parent().children()取得&lt;td&gt;1&lt;/td&gt;</span></p>
<p><span style="color: #0000ff;">$(this).parent().children().children()取得&lt;td id="index1"&gt;4&lt;/td&gt;</span></p>
<p><span style="color: #0000ff;">$(this).parent().children().children().attr("id") = "index1"</span></p>
]]></content:encoded>
			<wfw:commentRss>http://www.joansky.com/ajax1.html/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>在循环里顺序处理ajax事件</title>
		<link>http://www.joansky.com/ajax2.html</link>
		<comments>http://www.joansky.com/ajax2.html#comments</comments>
		<pubDate>Mon, 11 Apr 2011 04:00:55 +0000</pubDate>
		<dc:creator>Joan</dc:creator>
				<category><![CDATA[编程相关]]></category>
		<category><![CDATA[AJax]]></category>
		<category><![CDATA[Web]]></category>

		<guid isPermaLink="false">http://www.joansky.com/?p=131</guid>
		<description><![CDATA[1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 &#60;html&#62; &#60;head&#62; &#60;meta http-equiv=&#34;Content-Type&#34; content=&#34;text/html; charset=utf-8&#34; /&#62; &#60;title&#62;循环处理ajax事件问题&#60;/title&#62; &#60;script type=&#34;text/javascript&#34; src=&#34;js/jquery-1.3.2.js&#34;&#62;&#60;/script&#62; &#60;script type=&#34;text/javascript&#34;&#62; $&#40;document&#41;.ready&#40;function &#40;&#41; &#123; $&#40;&#34;#test a&#34;&#41;.click&#40;function [...]]]></description>
			<content:encoded><![CDATA[
<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
</pre></td><td class="code"><pre class="cpp" style="font-family:Verdana,Courier New;"><span style="color: #000080;">&lt;</span>html<span style="color: #000080;">&gt;</span>
<span style="color: #000080;">&lt;</span>head<span style="color: #000080;">&gt;</span>
<span style="color: #000080;">&lt;</span>meta http<span style="color: #000040;">-</span>equiv<span style="color: #000080;">=</span><span style="color: #FF0000;">&quot;Content-Type&quot;</span> content<span style="color: #000080;">=</span><span style="color: #FF0000;">&quot;text/html; charset=utf-8&quot;</span> <span style="color: #000040;">/</span><span style="color: #000080;">&gt;</span>
<span style="color: #000080;">&lt;</span>title<span style="color: #000080;">&gt;</span>循环处理ajax事件问题<span style="color: #000080;">&lt;</span><span style="color: #000040;">/</span>title<span style="color: #000080;">&gt;</span>
<span style="color: #000080;">&lt;</span>script type<span style="color: #000080;">=</span><span style="color: #FF0000;">&quot;text/javascript&quot;</span> src<span style="color: #000080;">=</span><span style="color: #FF0000;">&quot;js/jquery-1.3.2.js&quot;</span><span style="color: #000080;">&gt;&lt;</span><span style="color: #000040;">/</span>script<span style="color: #000080;">&gt;</span>
<span style="color: #000080;">&lt;</span>script type<span style="color: #000080;">=</span><span style="color: #FF0000;">&quot;text/javascript&quot;</span><span style="color: #000080;">&gt;</span>
    $<span style="color: #008000;">&#40;</span>document<span style="color: #008000;">&#41;</span>.<span style="color: #007788;">ready</span><span style="color: #008000;">&#40;</span>function <span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span> <span style="color: #008000;">&#123;</span>
        $<span style="color: #008000;">&#40;</span><span style="color: #FF0000;">&quot;#test a&quot;</span><span style="color: #008000;">&#41;</span>.<span style="color: #007788;">click</span><span style="color: #008000;">&#40;</span>function <span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span> <span style="color: #008000;">&#123;</span>
            <span style="color: #0000ff;">for</span> <span style="color: #008000;">&#40;</span>var i <span style="color: #000080;">=</span> <span style="color: #0000dd;">0</span><span style="color: #008080;">;</span> i <span style="color: #000080;">&lt;</span> <span style="color: #0000dd;">3</span><span style="color: #008080;">;</span> <span style="color: #000040;">++</span>i<span style="color: #008000;">&#41;</span> <span style="color: #008000;">&#123;</span>
                alert<span style="color: #008000;">&#40;</span><span style="color: #FF0000;">&quot;for循环获取的:&quot;</span> <span style="color: #000040;">+</span> i<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
                $.<span style="color: #007788;">ajax</span><span style="color: #008000;">&#40;</span><span style="color: #008000;">&#123;</span>
                    type<span style="color: #008080;">:</span> <span style="color: #FF0000;">&quot;post&quot;</span>,
                    url<span style="color: #008080;">:</span> <span style="color: #FF0000;">&quot;joan.php&quot;</span>,
                    data<span style="color: #008080;">:</span> <span style="color: #008000;">&#123;</span> action<span style="color: #008080;">:</span> <span style="color: #FF0000;">&quot;adddata&quot;</span>, username<span style="color: #008080;">:</span> i <span style="color: #008000;">&#125;</span>,
                    dataType<span style="color: #008080;">:</span> <span style="color: #FF0000;">&quot;text&quot;</span>,
                    success<span style="color: #008080;">:</span> function <span style="color: #008000;">&#40;</span>data<span style="color: #008000;">&#41;</span> <span style="color: #008000;">&#123;</span>
                        <span style="color: #666666;">//处理成功时的操作</span>
                        alert<span style="color: #008000;">&#40;</span><span style="color: #FF0000;">&quot;ajax处理事件后的&quot;</span> <span style="color: #000040;">+</span> i<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
                    <span style="color: #008000;">&#125;</span>
                    <span style="color: #666666;">//,async: false //实现同步机制</span>
                <span style="color: #008000;">&#125;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
            <span style="color: #008000;">&#125;</span>
        <span style="color: #008000;">&#125;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
    <span style="color: #008000;">&#125;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
<span style="color: #000080;">&lt;</span><span style="color: #000040;">/</span>script<span style="color: #000080;">&gt;</span>
<span style="color: #000080;">&lt;</span><span style="color: #000040;">/</span>head<span style="color: #000080;">&gt;</span>
<span style="color: #000080;">&lt;</span>body<span style="color: #000080;">&gt;</span>
<span style="color: #000080;">&lt;</span><span style="color: #0000dd;">div</span> id<span style="color: #000080;">=</span><span style="color: #FF0000;">&quot;test&quot;</span><span style="color: #000080;">&gt;&lt;</span>a<span style="color: #000080;">&gt;</span>点击我<span style="color: #000080;">&lt;</span><span style="color: #000040;">/</span>a<span style="color: #000080;">&gt;&lt;</span><span style="color: #000040;">/</span><span style="color: #0000dd;">div</span><span style="color: #000080;">&gt;</span>
<span style="color: #000080;">&lt;</span><span style="color: #000040;">/</span>body<span style="color: #000080;">&gt;</span>
<span style="color: #000080;">&lt;</span><span style="color: #000040;">/</span>html<span style="color: #000080;">&gt;</span>
&nbsp;
<span style="color: #666666;">//joan.php</span>
<span style="color: #000080;">&lt;</span><span style="color: #008080;">?</span>php
<span style="color: #0000ff;">for</span> <span style="color: #008000;">&#40;</span>$i<span style="color: #000080;">=</span><span style="color: #0000dd;">0</span><span style="color: #008080;">;</span> $i<span style="color: #000080;">&lt;=</span><span style="color: #0000dd;">100000</span><span style="color: #008080;">;</span> $i<span style="color: #000040;">++</span><span style="color: #008000;">&#41;</span>
<span style="color: #008000;">&#123;</span>
<span style="color: #008000;">&#125;</span>
<span style="color: #008080;">?</span><span style="color: #000080;">&gt;</span></pre></td></tr></table></div>

<p>运行程序:页面连续弹出3个”for循环获取的i“,i值从0到3，然后再弹出3个"ajax处理事件后的i",i值一直是3。因为ajax是异步机制，在ajax在后台进行处理时，前台的for循环照常进行。</p>
<p>当你想让运行的顺序按照你写程序顺序执行，或者需要在ajax处理完成后，即在success: function (data) { }需要正确调用i值处理事情时，那么就用同步机制吧。</p>
<p><span style="color: #ff0000;">在.ajax加上async参数，async: false，就可以实现同步了。</span></p>
<p>这时，你会看到页面顺序弹出”for循环获取的i“、"ajax处理事件后的i"。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.joansky.com/ajax2.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>厦门之行</title>
		<link>http://www.joansky.com/travel1.html</link>
		<comments>http://www.joansky.com/travel1.html#comments</comments>
		<pubDate>Sun, 13 Feb 2011 06:53:30 +0000</pubDate>
		<dc:creator>Joan</dc:creator>
				<category><![CDATA[生活琐事]]></category>
		<category><![CDATA[旅游]]></category>
		<category><![CDATA[生活]]></category>

		<guid isPermaLink="false">http://www.joansky.com/?p=130</guid>
		<description><![CDATA[2010年寒假去了趟厦门，玩得好累，回到家就不想动了，连写博文的动力都没有。现在已经回到学校，好吧，现在把这篇补上。 从诏安坐大巴到厦门岛内，在车站一下车顺手牵走一张地图。研究了下，决定先到普陀寺。厦门岛内的公车都是1RMB，真便宜~ 普陀寺，烧香拜佛的地方，入门费3RMB，准备走人的时候发现可以登山，看天气蛮适合登山的，便上去了，登完山第二天腿酸死了，那个后悔...在普陀寺买了素饼，10RMB一盒，当午餐吃掉，味道还不错，绿茶味的，呵，我是绿茶控啦。普陀寺下来附近就是赫赫有名的厦门大学，里面的学院又多又复杂，建筑很复古，在里面绕了半圈就出来了，背着背包，肩酸的走不下去... 出来后坐上公车到中山步行街，一下车就看到仙草南路店，来之前就听同学介绍这个很好吃，嘴馋了。真的好好吃，回来还念念不忘，回家上网查了下，只有厦门才有这种连锁店。唔，以后有钱了在广州投资个，呵呵。 在步行街买了几盒饼还有一些干果，又吃了鱼丸，薄饼，都是一些厦门小吃，好饱=_= 第二天，古浪鼓。直接公车到轮渡，轮渡下了车到对面坐轮船，到鼓浪屿的轮船是免费的。在过渡口有两个入口处，一个需要船票一个不需要，自己多转悠下就知道是哪个了，我也不知道这有什么区别。 鼓浪屿有六个景点区，日光岩、琴园、淑庄花园、皓月园、风琴博物馆、刻字馆，跟我同来的已经去过日光岩，说也没啥看头，网上都推荐淑庄花园，就只去了这个景点。其实我觉得鼓浪屿的特色不在这些景点上，而是那些边边角角的小商店和建筑...很多商店装饰得很有个性，一间七八十年代的老房子也能装饰得让你觉得很有看头。古浪鼓里面有商业街，什么厦门特产，小吃，创意店...到了晚上6点海风很大，厦门又值降温中，超冷，冻得手都起冻疮了。买了回去的船票，8RMB 第三天，园博园，人真少，整个园博园就遇到十几个人在逛，整条小吃街就剩店主，很多博物馆都没开，不过这样也好，拍的照片都没有人肉背景了。 第四天，回到室友家休息了天坐大巴回家，就是起冻疮的手现在还在脱皮中]]></description>
			<content:encoded><![CDATA[<p>2010年寒假去了趟厦门，玩得好累，回到家就不想动了，连写博文的动力都没有。现在已经回到学校，好吧，现在把这篇补上。</p>
<p>从诏安坐大巴到厦门岛内，在车站一下车顺手牵走一张地图。研究了下，决定先到普陀寺。厦门岛内的公车都是1RMB，真便宜~</p>
<p>普陀寺，烧香拜佛的地方，入门费3RMB，准备走人的时候发现可以登山，看天气蛮适合登山的，便上去了，登完山第二天腿酸死了，那个后悔...在普陀寺买了素饼，10RMB一盒，当午餐吃掉，味道还不错，绿茶味的，呵，我是绿茶控啦。普陀寺下来附近就是赫赫有名的厦门大学，里面的学院又多又复杂，建筑很复古，在里面绕了半圈就出来了，背着背包，肩酸的走不下去...</p>
<p><img class="alignnone size-full wp-image-124" title="普陀寺素饼" src="http://www.joansky.com/wp-content/uploads/2011/02/普陀寺素饼.jpg" alt="普陀寺素饼" width="550" height="412" /></p>
<p><img class="alignnone size-full wp-image-125" title="厦大" src="http://www.joansky.com/wp-content/uploads/2011/02/厦大.jpg" alt="厦大" width="550" height="412" /></p>
<p>出来后坐上公车到中山步行街，一下车就看到仙草南路店，来之前就听同学介绍这个很好吃，嘴馋了。真的好好吃，回来还念念不忘，回家上网查了下，只有厦门才有这种连锁店。唔，以后有钱了在广州投资个，呵呵。</p>
<p><img class="alignnone size-full wp-image-126" title="仙草蜜" src="http://www.joansky.com/wp-content/uploads/2011/02/仙草蜜.jpg" alt="仙草蜜" width="550" height="412" /></p>
<p>在步行街买了几盒饼还有一些干果，又吃了鱼丸，薄饼，都是一些厦门小吃，好饱=_=</p>
<p>第二天，古浪鼓。直接公车到轮渡，轮渡下了车到对面坐轮船，到鼓浪屿的轮船是免费的。在过渡口有两个入口处，一个需要船票一个不需要，自己多转悠下就知道是哪个了，我也不知道这有什么区别。<br />
鼓浪屿有六个景点区，日光岩、琴园、淑庄花园、皓月园、风琴博物馆、刻字馆，跟我同来的已经去过日光岩，说也没啥看头，网上都推荐淑庄花园，就只去了这个景点。其实我觉得鼓浪屿的特色不在这些景点上，而是那些边边角角的小商店和建筑...很多商店装饰得很有个性，一间七八十年代的老房子也能装饰得让你觉得很有看头。古浪鼓里面有商业街，什么厦门特产，小吃，创意店...到了晚上6点海风很大，厦门又值降温中，超冷，冻得手都起冻疮了。买了回去的船票，8RMB</p>
<p><img class="alignnone size-full wp-image-127" title="淑庄花园" src="http://www.joansky.com/wp-content/uploads/2011/02/淑庄花园.jpg" alt="淑庄花园" width="550" height="412" /></p>
<p><img class="alignnone size-full wp-image-128" title="邮寄幸福" src="http://www.joansky.com/wp-content/uploads/2011/02/邮寄幸福.jpg" alt="邮寄幸福" width="550" height="412" /></p>
<p>第三天，园博园，人真少，整个园博园就遇到十几个人在逛，整条小吃街就剩店主，很多博物馆都没开，不过这样也好，拍的照片都没有人肉背景了。</p>
<p><img class="alignnone size-full wp-image-129" title="园博园" src="http://www.joansky.com/wp-content/uploads/2011/02/园博园.jpg" alt="园博园" width="412" height="550" /></p>
<p>第四天，回到室友家休息了天坐大巴回家，就是起冻疮的手现在还在脱皮中</p>
]]></content:encoded>
			<wfw:commentRss>http://www.joansky.com/travel1.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>香港之体验圣诞气氛</title>
		<link>http://www.joansky.com/travel-hongkong.html</link>
		<comments>http://www.joansky.com/travel-hongkong.html#comments</comments>
		<pubDate>Tue, 28 Dec 2010 05:23:47 +0000</pubDate>
		<dc:creator>Joan</dc:creator>
				<category><![CDATA[生活琐事]]></category>
		<category><![CDATA[旅游]]></category>
		<category><![CDATA[生活]]></category>

		<guid isPermaLink="false">http://www.joansky.com/?p=123</guid>
		<description><![CDATA[香港的签证于一月份过期，为了不浪费签证大洋，12.25一大早和朋友前往香港感受圣诞气氛。 早上7点30分到了福田口岸，过关花了半个小时，比去澳门排两个多小时队强太多了。 第一站：尖沙咀1881 heritage和海港城 1881 heritage主题：A Christmas of Classical Wonders 海港城：巨型蛋糕装饰 这两个地方的圣诞主题装饰很漂亮，晚上看的话应该更美 从海港城出来刚好遇到haagendazs店，那个时候差不多11点，但还没开门，后来辗转了好几个地方都为了找haagendazs，没GPS，没WIFI，RP还不好，没找到...返程时，还想着回海港城这边吃，不过C姐支持不住，时间也不早了，只能作罢。说了这么多，其实不是我想吃，是嘴馋的S姐....=_= 第二站：星光大道 海风吹得真爽，那个时候我终于理解为什么人们为什么都喜欢来海边散心。那天海风超大超冷，吹得头皮发麻，大脑都麻木没感觉，自然就没烦恼了。之前虽然也去海边吹吹风，但远不如这次遇到的大、冷... 观光船，看起来像海盗船 第三站：中环歌赋街、石板街、桂兰坊、皇后像广场 好不容易找到歌赋街，但没节目，周日才有，囧。 皇后像广场——Swarovski 2010圣诞 第四站：铜锣湾 计划里没铜锣湾这站，但是行程提早结束。铜锣湾基本上每个广场都有关于圣诞的装饰。最好看的最属时代场了，是Michael Lau的Gardener十周年盛典——将Michael Lau设计的人物制作出来在时代广场 和圣诞老人和了张照，鉴于本人上镜效果太差，还是不贴出来好 这张挺美的... PS：在一个人口比较密集的城市，事实上无论是否是节日还是举办盛大活动，感觉人流量都差不多。 好吧，用小学写作文经常写到的词来结束它吧：累并快乐着=_=]]></description>
			<content:encoded><![CDATA[<p>香港的签证于一月份过期，为了不浪费签证大洋，12.25一大早和朋友前往香港感受圣诞气氛。</p>
<p>早上7点30分到了福田口岸，过关花了半个小时，比去澳门排两个多小时队强太多了。</p>
<p>第一站：尖沙咀1881 heritage和海港城</p>
<p><img class="alignnone size-full wp-image-115" title="1881" src="http://www.joansky.com/wp-content/uploads/2010/12/1881.jpg" alt="1881" width="412" height="550" /></p>
<p>1881 heritage主题：A Christmas of Classical Wonders</p>
<p><img class="alignnone size-full wp-image-116" title="海港城1" src="http://www.joansky.com/wp-content/uploads/2010/12/海港城1.jpg" alt="海港城1" width="412" height="550" /></p>
<p>海港城：巨型蛋糕装饰</p>
<p><img class="alignnone size-full wp-image-117" title="海港城2" src="http://www.joansky.com/wp-content/uploads/2010/12/海港城2.jpg" alt="海港城2" width="550" height="412" /></p>
<p>这两个地方的圣诞主题装饰很漂亮，晚上看的话应该更美</p>
<p>从海港城出来刚好遇到haagendazs店，那个时候差不多11点，但还没开门，后来辗转了好几个地方都为了找haagendazs，没GPS，没WIFI，RP还不好，没找到...返程时，还想着回海港城这边吃，不过C姐支持不住，时间也不早了，只能作罢。说了这么多，其实不是我想吃，是嘴馋的S姐....=_=</p>
<p>第二站：星光大道</p>
<p>海风吹得真爽，那个时候我终于理解为什么人们为什么都喜欢来海边散心。那天海风超大超冷，吹得头皮发麻，大脑都麻木没感觉，自然就没烦恼了。之前虽然也去海边吹吹风，但远不如这次遇到的大、冷...</p>
<p><img class="alignnone size-full wp-image-118" title="星光大道" src="http://www.joansky.com/wp-content/uploads/2010/12/星光大道.jpg" alt="星光大道" width="550" height="412" /></p>
<p>观光船，看起来像海盗船</p>
<p>第三站：中环歌赋街、石板街、桂兰坊、皇后像广场</p>
<p>好不容易找到歌赋街，但没节目，周日才有，囧。</p>
<p><img class="alignnone size-full wp-image-119" title="皇后像广场" src="http://www.joansky.com/wp-content/uploads/2010/12/皇后像广场.jpg" alt="皇后像广场" width="412" height="550" /></p>
<p>皇后像广场——Swarovski 2010圣诞</p>
<p>第四站：铜锣湾</p>
<p>计划里没铜锣湾这站，但是行程提早结束。铜锣湾基本上每个广场都有关于圣诞的装饰。最好看的最属时代场了，是Michael Lau的Gardener十周年盛典——将Michael Lau设计的人物制作出来在时代广场</p>
<p><img class="alignnone size-full wp-image-121" title="时代广场" src="http://www.joansky.com/wp-content/uploads/2010/12/时代广场.jpg" alt="时代广场" width="550" height="412" /></p>
<p>和圣诞老人和了张照，鉴于本人上镜效果太差，还是不贴出来好</p>
<p><img class="alignnone size-full wp-image-122" title="橱窗摆设" src="http://www.joansky.com/wp-content/uploads/2010/12/橱窗摆设.jpg" alt="橱窗摆设" width="412" height="550" /></p>
<p>这张挺美的...</p>
<p>PS：在一个人口比较密集的城市，事实上无论是否是节日还是举办盛大活动，感觉人流量都差不多。</p>
<p>好吧，用小学写作文经常写到的词来结束它吧：累并快乐着=_=</p>
]]></content:encoded>
			<wfw:commentRss>http://www.joansky.com/travel-hongkong.html/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Linux系统在个人计算机上的引导过程</title>
		<link>http://www.joansky.com/linux-post.html</link>
		<comments>http://www.joansky.com/linux-post.html#comments</comments>
		<pubDate>Sun, 26 Dec 2010 15:21:00 +0000</pubDate>
		<dc:creator>Joan</dc:creator>
				<category><![CDATA[Linux笔记]]></category>
		<category><![CDATA[总结]]></category>

		<guid isPermaLink="false">http://www.joansky.com/?p=114</guid>
		<description><![CDATA[操作系统的大作业，网上收集的资料，总结如下 一、系统引导过程简介 系统引导过程主要由以下几个步骤组成（以硬盘启动为例） 开机 BIOS加电自检（POST——Power On Self Test），内存地址为0fff：0000 将硬盘第一个扇区（0头0道1扇区，也就是Boot Sector）读入内存地址0000：7c00处 检查（WORD）0000：7dfe是否等于0xaa55.若不等于则转去尝试其他介质；如果没有其他启动介质，则显示 “No ROM BASIC” ，然后死机 跳转到0000：7c00处执行MBR中的程序 MBR先将自己复制到0000：0600处，然后继续执行 在主分区表中搜索标志为活动的分区。如果发现没有活动分区或者不止一个活动分区，则停止 将活动分区的第一个扇区读入内存地址0000：7c00处 检查（WORD）0000：7dfe是否等于0xaa55，若不等于则显示 “Missing Operating System”，然后停止，或尝试软盘启动 跳转到0000：7c00处继续执行特定系统的启动程序 启动系统 流程图如下 当系统首次引导时，或系统被重置时，处理器会执行一个位于已知位置处的代码。在个人计算机（PC）中，这个位置在基本输入/输出系统（BIOS）中，它保存在主板上的闪存中（内存地址为0fff：0000），完成以上步骤中（2），（3），（4），（5）。 当找到一个引导设备之后，第一阶段的引导加载程序就被装入 RAM 并执行。这个引导加载程序MBR在大小上小于 512 字节（一个扇区），其作用是加载第二阶段的引导加载程序，完成以上步骤中（6），（7），（8），（9），（10）。 当第二阶段的引导加载程序被装入 RAM 并执行时，通常会显示一个动画屏幕，并将 Linux 和一个可选的初始 RAM 磁盘（临时根文件系统）加载到内存中。在加载映像时，第二阶段的引导加载程序就会将控制权交给内核映像，然后内核就可以进行解压和初始化了。在这个阶段中，第二阶段的引导加载程序会检测系统硬件、枚举系统链接的硬件设备、挂载根设备，然后加载必要的内核模块。完成这些操作之后启动第一个用户空间程序（init），并执行高级系统初始化工作。 这就是 Linux 引导的整个过程。现在让我们深入挖掘一下这个过程，并深入研究一下 Linux 引导过程的一些详细信息。 二、系统启动 在 PC 中，引导 Linux 是从 BIOS 中的地址 0xFFFF0 处开始的。BIOS 的第一个步骤是加电自检（POST代码，这段代码完成对硬件检测后会被从内存中清除）POST程序通过对内存及其它硬件的诊断确定硬件的存在并可操作性。BIOS [...]]]></description>
			<content:encoded><![CDATA[<p>操作系统的大作业，网上收集的资料，总结如下</p>
<p>一、系统引导过程简介</p>
<p>系统引导过程主要由以下几个步骤组成（以硬盘启动为例）</p>
<ol>
<li>开机</li>
<li>BIOS加电自检（POST——Power On Self Test），内存地址为0fff：0000</li>
<li>将硬盘第一个扇区（0头0道1扇区，也就是Boot Sector）读入内存地址0000：7c00处</li>
<li>检查（WORD）0000：7dfe是否等于0xaa55.若不等于则转去尝试其他介质；如果没有其他启动介质，则显示 “No ROM BASIC” ，然后死机</li>
<li>跳转到0000：7c00处执行MBR中的程序</li>
<li>MBR先将自己复制到0000：0600处，然后继续执行</li>
<li>在主分区表中搜索标志为活动的分区。如果发现没有活动分区或者不止一个活动分区，则停止</li>
<li>将活动分区的第一个扇区读入内存地址0000：7c00处</li>
<li>检查（WORD）0000：7dfe是否等于0xaa55，若不等于则显示 “Missing Operating System”，然后停止，或尝试软盘启动</li>
<li>跳转到0000：7c00处继续执行特定系统的启动程序</li>
<li>启动系统</li>
</ol>
<p>流程图如下</p>
<p><img class="alignnone size-full wp-image-113" title="Linux引导过程" src="http://www.joansky.com/wp-content/uploads/2010/12/Linux引导过程.jpg" alt="Linux引导过程" width="454" height="648" /></p>
<p>当系统首次引导时，或系统被重置时，处理器会执行一个位于已知位置处的代码。在个人计算机（PC）中，这个位置在基本输入/输出系统（BIOS）中，它保存在主板上的闪存中（内存地址为0fff：0000），完成以上步骤中（2），（3），（4），（5）。</p>
<p>当找到一个引导设备之后，第一阶段的引导加载程序就被装入 RAM 并执行。这个引导加载程序MBR在大小上小于 512 字节（一个扇区），其作用是加载第二阶段的引导加载程序，完成以上步骤中（6），（7），（8），（9），（10）。</p>
<p>当第二阶段的引导加载程序被装入 RAM 并执行时，通常会显示一个动画屏幕，并将 Linux 和一个可选的初始 RAM 磁盘（临时根文件系统）加载到内存中。在加载映像时，第二阶段的引导加载程序就会将控制权交给内核映像，然后内核就可以进行解压和初始化了。在这个阶段中，第二阶段的引导加载程序会检测系统硬件、枚举系统链接的硬件设备、挂载根设备，然后加载必要的内核模块。完成这些操作之后启动第一个用户空间程序（init），并执行高级系统初始化工作。</p>
<p>这就是 Linux 引导的整个过程。现在让我们深入挖掘一下这个过程，并深入研究一下 Linux 引导过程的一些详细信息。</p>
<p><span id="more-114"></span><br />
二、系统启动</p>
<p>在 PC 中，引导 Linux 是从 BIOS 中的地址 0xFFFF0 处开始的。BIOS 的第一个步骤是加电自检（POST代码，这段代码完成对硬件检测后会被从内存中清除）POST程序通过对内存及其它硬件的诊断确定硬件的存在并可操作性。BIOS 的第二个步骤是进行本地设备的枚举和初始化（运行时服务代码）。BIOS运行行服务代码（这段代码保留在内存中，供目标操作系统使用）找到用户配置的启动设备后，将主引导记录（MBR）加载到RAM中，然后BIOS将控制权交给“第一个引导程序”（MBR）。</p>
<p>BIOS从上电到现在忙活了大半天，主要目的就是为了找到引导设备，并将引导设备的引导程序加载到RAM中来运行。</p>
<p><span style="color: #0000ff;">如何找到用户配置的启动设备（即引导一个操作系统）呢？</span></p>
<p><span style="color: #0000ff;">BIOS 运行时会按照 CMOS 的设置定义的顺序来搜索处于活动状态并且可以引导的设备。引导设备可以是软盘、CD-ROM、硬盘上的某个分区、网络上的某个设备，甚至是 USB 闪存。</span></p>
<p>三、第一阶段引导加载程序</p>
<p>BIOS交出系统的执行控制权，跳转到引导程序（MBR）的头部执行。引导记录开头是一条无条件转移指令，它将立即跳转到地址0x03e执行引导程序，主引导加载程序的工作是查找并加载次引导加载程序（第二阶段）。它是通过在分区表中查找一个活动分区来实现这种功能的。当找到一个活动分区时，它会扫描分区表中的其他分区，以确保它们都不是活动的。当这个过程验证完成之后，就将活动分区的引导记录从这个设备中读入 RAM 中并执行它。</p>
<p><span style="color: #0000ff;">注：<br />
主引导记录（MBR）中包含主引导加载程序。MBR 是一个 512 字节大小的扇区，位于磁盘上的第一个扇区中（0 道 0 柱面 1 扇区）。</span></p>
<p><span style="color: #0000ff;">MBR 中的主引导加载程序是一个 512 字节大小的映像，其中包含程序代码和一个小分区表。前 446 个字节是主引导加载程序，其中包含可执行代码和错误消息文本。接下来的 64 个字节是分区表，其中包含 4 个分区的记录（每个记录的大小是 16 个字节）。MBR 以两个特殊数字的字节（0xAA55）结束。这个数字会用来进行 MBR 的有效性检查。</span></p>
<p>四、第二阶段引导加载程序</p>
<p>次引导加载程序（第二阶段引导加载程序）可以更形象地称为内核加载程序。这个阶段的任务是加载 Linux 内核映像和可选的初始 RAM 磁盘到内存中。</p>
<p>将第二阶段的引导加载程序加载到内存中之后，就可以对文件系统进行查询了，并将默认的内核映像和 initrd 映像（arch/i386/boot/下的setup.S文件）加载到内存中。当这些映像文件准备好之后，阶段 2 的引导加载程序就可以调用内核映像了。</p>
<p><span style="color: #0000ff;">为什么需要加载 initrd 映像（arch/i386/boot/下的setup.S文件），其作用是什么?<br />
i386的体系结构的CPU分保护模式和实模式两种，在实模式下只能使用低端的640K内存。系统在加载引导程序时CPU是处在实模式下，而现在的内核映象文件一般都超过了640K的限制，即使是经过压缩过的内核映象，这个内核映象文件通常是bzImage,我们在编译内核时通常要用到这个文件。由于bzImage超出了640K这一限制，所以linux设计了一个 bootsect_helper子程序(定义在arch/i386/boot/setup.S中)，引导程序通过循环调用bootsect_helper 将内核映象一块一块的装入内存，当内核加载完毕，系统跳转到setup.S的开始位置开始执行，setup.S仍在实模式下运行，主要功能是设置系统参数 (如：内存、磁盘等),并为进入保护模式做准备,最后进入到保护模式并跳转到内核映象文件的头部开始执行内核。</span></p>
<p><span style="color: #0000ff;">这里提一下有关linux的引导程序 lilo和grub，在 x86 PC 环境中，第一阶段和第二阶段的引导加载程序一起称为 Linux Loader（LILO）或 GRand Unified Bootloader（GRUB）。lilo和grub可以引导多个系统，如果机器上要装多系统的话一般都会用到它们，这一引导程序也储存在引导扇区中或者存放在主引导记录中(MBR)，lilo和grub都许允用户自己配置，它们在系统安装时建立了关于系统内核占用磁盘数据块的位置对照表。当用户选择启动linux系统后，同样也跳转到setup.S上运行。</span></p>
<p>五、内核初始化</p>
<p>当内核映像被加载到内存中，并且阶段 2 的引导加载程序释放控制权之后，内核阶段就开始了。</p>
<p>head.s中的start（在/arch/i386/boot/下）开始执行一些基本的硬件设置—〉head.S 中的 startup_32 （在/arch/i386/boot/compressed/下）设置一个基本的环境（建立堆栈等），并清除 Block Started by Symbol（BSS）—〉 decompress_kernel （在 /arch/i386/boot/compressed/misc.c 中）来解压内核。—〉head.S（在arch/i386/kernel/下）负责数据区(BBS)、中断描述表(IDT)、段描述表(GDT)、页表和寄存器的初始化。—〉进入start_kernel()（在nit/main.c中）会调用一系列初始化函数来设置中断，执行进一步的内存配置，并加载初始 RAM 磁盘。—〉调用 kernel_thread（在 arch/i386/kernel/process.c 中）来启动 init 内核线程，进行系统配置，创建其他完成系统初始他的进程—〉调用do_basic_setup()来初始化外部设备及加载驱动程序。—〉释放初始化函数据占用的内存—〉打开/dev/console<br />
设备重新定向控制台—〉用系统调用execve来执行用户态程序/sbin/init</p>
<p><span style="color: #0000ff;">注：内核映像并不是一个可执行的内核，而是一个压缩过的内核映像。通常它是一个 zImage（压缩映像，小于 512KB）或一个 bzImage（较大的压缩映像，大于 512KB），它是提前使用 zlib 进行压缩过的。</span></p>
<p><span style="color: #0000ff;">start_kernel()主要内容：</span></p>
<ul>
<li><span style="color: #0000ff;">setup_arch():执行与体系结构相关的设置</span></li>
<li><span style="color: #0000ff;">trap_init():设置各种入口地址</span></li>
<li><span style="color: #0000ff;">init_IRQ():初始化IRQ中断处理机制</span></li>
<li><span style="color: #0000ff;">sched_init():设置并启动第一个进程init_task()</span></li>
<li><span style="color: #0000ff;">softirq_init():对软中断子系统进行初始化</span></li>
<li><span style="color: #0000ff;">console_init():初始化控制台、显示器</span></li>
<li><span style="color: #0000ff;">init_modules():初始化kernel_module</span></li>
<li><span style="color: #0000ff;">fork_init():定义系统最大进程数</span></li>
<li><span style="color: #0000ff;">rest_init():调用kernel_thread()创建init内核线程</span></li>
</ul>
<p><span style="color: #0000ff;">do_basic_setup()初始化工作包括： </span></p>
<ul>
<li><span style="color: #0000ff;">PCI总线初始化 </span></li>
<li><span style="color: #0000ff;">网络初始化</span></li>
<li><span style="color: #0000ff;">文件系统初始化</span></li>
<li><span style="color: #0000ff;">加载文件系统</span></li>
</ul>
<p>六、Init</p>
<p>当内核被引导并进行初始化之后，内核就可以启动自己的第一个用户空间应用程序了。这是第一个调用的使用标准 C 库编译的程序。在此之前，还没有执行任何标准的 C 应用程序。</p>
<p><span style="color: #0000ff;">在桌面 Linux 系统上，第一个启动的程序通常是 /sbin/init。init程序程读取/etc/inittab文件来决定它具体的工作。<br />
在inittab中比较重要的几条是：</span></p>
<ol>
<li><span style="color: #0000ff;">id:5:initdefault 决定操作系统启动时缺省的执行级别(这里说讲的是系统的运行级别，而不同于CPU的级别)</span></li>
<li><span style="color: #0000ff;">si:sysinit:/etc/rc.d/rc.sysinit 执行/etc/rc.d/rc.sysinit的脚本。rc.sysinit主要的工作是 激活交换分区、检查磁盘、加载硬件模块</span></li>
<li><span style="color: #0000ff;">1:2345:respawn:/sbin/mingetty tty1 显示登录界面</span></li>
</ol>
<p>至此，整个系统的引导过程就完成了。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.joansky.com/linux-post.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>大二学年的收获</title>
		<link>http://www.joansky.com/college2.html</link>
		<comments>http://www.joansky.com/college2.html#comments</comments>
		<pubDate>Thu, 23 Dec 2010 05:30:52 +0000</pubDate>
		<dc:creator>Joan</dc:creator>
				<category><![CDATA[生活琐事]]></category>
		<category><![CDATA[生活]]></category>
		<category><![CDATA[证书]]></category>

		<guid isPermaLink="false">http://www.joansky.com/?p=112</guid>
		<description><![CDATA[冬至节在学校过也就罢了晚上居然还得参加学院表彰大会。按胡老师说的：这样的冬至，大学也就这一次要好好珍惜。唯一的收获——特等专业奖学金，含金量比较高，恩，第一次拿到校级的，知足了。哦耶，继续努力... 晾下证，真的比院级质量好很多]]></description>
			<content:encoded><![CDATA[<p>冬至节在学校过也就罢了晚上居然还得参加学院表彰大会。按胡老师说的：这样的冬至，大学也就这一次要好好珍惜。唯一的收获——特等专业奖学金，含金量比较高，恩，第一次拿到校级的，知足了。哦耶，继续努力...</p>
<p><img class="alignnone size-full wp-image-111" title="特等专业奖" src="http://www.joansky.com/wp-content/uploads/2010/12/特等专业奖.jpg" alt="特等专业奖" width="550" height="412" /></p>
<p>晾下证，真的比院级质量好很多</p>
]]></content:encoded>
			<wfw:commentRss>http://www.joansky.com/college2.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>对CSocket类进行封装使用 MFC</title>
		<link>http://www.joansky.com/csoke-mfc.html</link>
		<comments>http://www.joansky.com/csoke-mfc.html#comments</comments>
		<pubDate>Wed, 17 Nov 2010 06:13:13 +0000</pubDate>
		<dc:creator>Joan</dc:creator>
				<category><![CDATA[编程相关]]></category>
		<category><![CDATA[MFC]]></category>

		<guid isPermaLink="false">http://www.joansky.com/?p=110</guid>
		<description><![CDATA[在使用CSocket进行网络通信时，一般需要自定义两个类，且都是从CSocket派生来的。因为服务器端需要两种套接字，一个用来侦听连接请求——ListenSocket，一个用来与请求连接的套接字建立连接——ClientSocket。 而客户端只需要一个套接字，用来与与服务器建立连接——ClientSocket。 在这两个套接字中只有ClientSocket需要实现串行化读写信息功能来发送和接收数据。 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 //CMessage.h //封装一个可以串行化的消息类， //这样消息的发送和接收只需使用流操作符对缓冲区进行存取。 class CMessage : public CObject &#123; public: void Serialize&#40;CArchive&#38; ar&#41;; &#160; CMessage&#40;&#41;; CMessage&#40;int nType&#41;; CMessage&#40;int nType, CString strBuff, DWORD dwBuffSize&#41;; &#160; virtual ~CMessage&#40;&#41;; public: int m_nType; &#160; CString m_strBuff; DWORD [...]]]></description>
			<content:encoded><![CDATA[<p>在使用CSocket进行网络通信时，一般需要自定义两个类，且都是从CSocket派生来的。因为服务器端需要两种套接字，一个用来侦听连接请求——ListenSocket，一个用来与请求连接的套接字建立连接——ClientSocket。</p>
<p>而客户端只需要一个套接字，用来与与服务器建立连接——ClientSocket。</p>
<p>在这两个套接字中只有ClientSocket需要实现串行化读写信息功能来发送和接收数据。</p>
<p><span id="more-110"></span></p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
</pre></td><td class="code"><pre class="cpp" style="font-family:Verdana,Courier New;"><span style="color: #666666;">//CMessage.h</span>
<span style="color: #666666;">//封装一个可以串行化的消息类，</span>
<span style="color: #666666;">//这样消息的发送和接收只需使用流操作符对缓冲区进行存取。</span>
<span style="color: #0000ff;">class</span> CMessage <span style="color: #008080;">:</span> <span style="color: #0000ff;">public</span> CObject
<span style="color: #008000;">&#123;</span>
<span style="color: #0000ff;">public</span><span style="color: #008080;">:</span>
       <span style="color: #0000ff;">void</span> Serialize<span style="color: #008000;">&#40;</span>CArchive<span style="color: #000040;">&amp;</span> ar<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
&nbsp;
       CMessage<span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
       CMessage<span style="color: #008000;">&#40;</span><span style="color: #0000ff;">int</span> nType<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
       CMessage<span style="color: #008000;">&#40;</span><span style="color: #0000ff;">int</span> nType, CString strBuff, DWORD dwBuffSize<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
&nbsp;
       <span style="color: #0000ff;">virtual</span> ~CMessage<span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
<span style="color: #0000ff;">public</span><span style="color: #008080;">:</span>
       <span style="color: #0000ff;">int</span> m_nType<span style="color: #008080;">;</span>
&nbsp;
       CString m_strBuff<span style="color: #008080;">;</span>
       DWORD m_dwBuffSize<span style="color: #008080;">;</span>
<span style="color: #008000;">&#125;</span><span style="color: #008080;">;</span></pre></td></tr></table></div>


<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
</pre></td><td class="code"><pre class="cpp" style="font-family:Verdana,Courier New;"><span style="color: #666666;">//CMessage.cpp</span>
<span style="color: #339900;">#include &quot;stdafx.h&quot;</span>
<span style="color: #339900;">#include &quot;Message.h&quot;</span>
&nbsp;
<span style="color: #666666;">//默认的构造函数</span>
CMessage<span style="color: #008080;">::</span><span style="color: #007788;">CMessage</span><span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span>
<span style="color: #008000;">&#123;</span>
       m_nType <span style="color: #000080;">=</span> <span style="color: #000040;">-</span><span style="color: #0000dd;">1</span><span style="color: #008080;">;</span>
&nbsp;
       m_strBuff <span style="color: #000080;">=</span> _T<span style="color: #008000;">&#40;</span><span style="color: #FF0000;">&quot;&quot;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
       m_dwBuffSize <span style="color: #000080;">=</span> <span style="color: #0000dd;">0</span><span style="color: #008080;">;</span>
<span style="color: #008000;">&#125;</span>
&nbsp;
<span style="color: #666666;">//只需发送消息类型时使用</span>
CMessage<span style="color: #008080;">::</span><span style="color: #007788;">CMessage</span><span style="color: #008000;">&#40;</span><span style="color: #0000ff;">int</span> nType<span style="color: #008000;">&#41;</span>
<span style="color: #008000;">&#123;</span>
       m_nType <span style="color: #000080;">=</span> nType<span style="color: #008080;">;</span>
&nbsp;
       m_strBuff <span style="color: #000080;">=</span> _T<span style="color: #008000;">&#40;</span><span style="color: #FF0000;">&quot;&quot;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
       m_dwBuffSize <span style="color: #000080;">=</span> <span style="color: #0000dd;">0</span><span style="color: #008080;">;</span>
<span style="color: #008000;">&#125;</span>
&nbsp;
<span style="color: #666666;">//需要消息内容和长度时使用</span>
CMessage<span style="color: #008080;">::</span><span style="color: #007788;">CMessage</span><span style="color: #008000;">&#40;</span><span style="color: #0000ff;">int</span> nType, CString strBuff, DWORD dwBuffSize<span style="color: #008000;">&#41;</span>
<span style="color: #008000;">&#123;</span>
       m_nType <span style="color: #000080;">=</span> nType<span style="color: #008080;">;</span>
&nbsp;
       m_strBuff <span style="color: #000080;">=</span> strBuff<span style="color: #008080;">;</span>
       m_dwBuffSize <span style="color: #000080;">=</span> dwBuffSize<span style="color: #008080;">;</span>
<span style="color: #008000;">&#125;</span>
&nbsp;
CMessage<span style="color: #008080;">::</span>~CMessage<span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span>
<span style="color: #008000;">&#123;</span>
<span style="color: #008000;">&#125;</span>
&nbsp;
<span style="color: #0000ff;">void</span> CMessage<span style="color: #008080;">::</span><span style="color: #007788;">Serialize</span><span style="color: #008000;">&#40;</span>CArchive <span style="color: #000040;">&amp;</span>ar<span style="color: #008000;">&#41;</span>
<span style="color: #008000;">&#123;</span>
       <span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span>ar.<span style="color: #007788;">IsStoring</span><span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">&#41;</span>
       <span style="color: #008000;">&#123;</span>
              ar <span style="color: #000080;">&lt;&lt;</span> m_nType<span style="color: #008080;">;</span>
&nbsp;
              ar <span style="color: #000080;">&lt;&lt;</span> m_strBuff<span style="color: #008080;">;</span>
              ar <span style="color: #000080;">&lt;&lt;</span> m_dwBuffSize<span style="color: #008080;">;</span>
       <span style="color: #008000;">&#125;</span>
       <span style="color: #0000ff;">else</span>
       <span style="color: #008000;">&#123;</span>
              ar <span style="color: #000080;">&gt;&gt;</span> m_nType<span style="color: #008080;">;</span>
&nbsp;
              ar <span style="color: #000080;">&gt;&gt;</span> m_strBuff<span style="color: #008080;">;</span>
              ar <span style="color: #000080;">&gt;&gt;</span> m_dwBuffSize<span style="color: #008080;">;</span>
       <span style="color: #008000;">&#125;</span>
<span style="color: #008000;">&#125;</span></pre></td></tr></table></div>


<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
</pre></td><td class="code"><pre class="cpp" style="font-family:Verdana,Courier New;"><span style="color: #666666;">//CListenSocket.h</span>
<span style="color: #666666;">//CListenSocket服务器用来侦听连接请求的套接字</span>
&nbsp;
<span style="color: #339900;">#include &quot;FileTransfersDlg.h&quot;</span>
<span style="color: #0000ff;">class</span> CListenSocket <span style="color: #008080;">:</span> <span style="color: #0000ff;">public</span> CSocket
<span style="color: #008000;">&#123;</span>
<span style="color: #0000ff;">public</span><span style="color: #008080;">:</span>
       CListenSocket<span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
       CListenSocket<span style="color: #008000;">&#40;</span>CFileTransfersDlg<span style="color: #000040;">*</span> pdlgMain<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
       <span style="color: #0000ff;">virtual</span> ~CListenSocket<span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
&nbsp;
       <span style="color: #0000ff;">virtual</span> <span style="color: #0000ff;">void</span> OnAccept<span style="color: #008000;">&#40;</span><span style="color: #0000ff;">int</span> nErrorCode<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
&nbsp;
<span style="color: #0000ff;">protected</span><span style="color: #008080;">:</span>
       <span style="color: #666666;">//建立对话框类与套接字类的关联</span>
       CFileTransfersDlg<span style="color: #000040;">*</span> m_pdlgMain<span style="color: #008080;">;</span>
<span style="color: #008000;">&#125;</span><span style="color: #008080;">;</span></pre></td></tr></table></div>


<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
</pre></td><td class="code"><pre class="cpp" style="font-family:Verdana,Courier New;"><span style="color: #666666;">// CListenSocket.cpp</span>
&nbsp;
<span style="color: #339900;">#include &quot;stdafx.h&quot;</span>
<span style="color: #339900;">#include &quot;ListenSocket.h&quot;</span>
&nbsp;
CListenSocket<span style="color: #008080;">::</span><span style="color: #007788;">CListenSocket</span><span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span>
<span style="color: #008000;">&#123;</span>
       m_pdlgMain <span style="color: #000080;">=</span> <span style="color: #0000ff;">NULL</span><span style="color: #008080;">;</span>
<span style="color: #008000;">&#125;</span>
&nbsp;
CListenSocket<span style="color: #008080;">::</span><span style="color: #007788;">CListenSocket</span><span style="color: #008000;">&#40;</span>CFileTransfersDlg<span style="color: #000040;">*</span> pdlgMain<span style="color: #008000;">&#41;</span>
<span style="color: #008000;">&#123;</span>
       m_pdlgMain <span style="color: #000080;">=</span> pdlgMain<span style="color: #008080;">;</span>
<span style="color: #008000;">&#125;</span>
&nbsp;
CListenSocket<span style="color: #008080;">::</span>~CListenSocket<span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span>
<span style="color: #008000;">&#123;</span>
<span style="color: #008000;">&#125;</span>
&nbsp;
<span style="color: #0000ff;">void</span> CListenSocket<span style="color: #008080;">::</span><span style="color: #007788;">OnAccept</span><span style="color: #008000;">&#40;</span><span style="color: #0000ff;">int</span> nErrorCode<span style="color: #008000;">&#41;</span> 
<span style="color: #008000;">&#123;</span>       
       m_pdlgMain<span style="color: #000040;">-</span><span style="color: #000080;">&gt;</span>ProcessAccept<span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
       CSocket<span style="color: #008080;">::</span><span style="color: #007788;">OnAccept</span><span style="color: #008000;">&#40;</span>nErrorCode<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
<span style="color: #008000;">&#125;</span></pre></td></tr></table></div>


<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
</pre></td><td class="code"><pre class="cpp" style="font-family:Verdana,Courier New;"><span style="color: #666666;">// CClientSocket.h</span>
<span style="color: #666666;">//CClientSocket套接字真正与客户端套接字建立连接，用来发送与接收数据</span>
&nbsp;
<span style="color: #339900;">#include &quot;FileTransfersDlg.h&quot;</span>
<span style="color: #339900;">#include &quot;Message.h&quot;</span>
&nbsp;
<span style="color: #0000ff;">class</span> CClientSocket <span style="color: #008080;">:</span> <span style="color: #0000ff;">public</span> CSocket
<span style="color: #008000;">&#123;</span>
<span style="color: #0000ff;">public</span><span style="color: #008080;">:</span>
       CClientSocket<span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
       <span style="color: #0000ff;">virtual</span> ~CClientSocket<span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
&nbsp;
       <span style="color: #0000ff;">void</span> Init<span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
       <span style="color: #0000ff;">void</span> <span style="color: #0000dd;">Abort</span><span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
&nbsp;
       <span style="color: #0000ff;">BOOL</span> SendMsg<span style="color: #008000;">&#40;</span>CMessage<span style="color: #000040;">*</span> pMsg<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
       <span style="color: #0000ff;">void</span> ReceiveMsg<span style="color: #008000;">&#40;</span>CMessage<span style="color: #000040;">*</span> pMsg<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
&nbsp;
       CClientSocket<span style="color: #008000;">&#40;</span>CFileTransfersDlg<span style="color: #000040;">*</span> pdlgMain<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
       <span style="color: #0000ff;">virtual</span> <span style="color: #0000ff;">void</span> OnReceive<span style="color: #008000;">&#40;</span><span style="color: #0000ff;">int</span> nErrorCode<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
&nbsp;
<span style="color: #666666;">//为套接字添加串行化读写信息的功能</span>
<span style="color: #0000ff;">public</span><span style="color: #008080;">:</span>
       CSocketFile<span style="color: #000040;">*</span> m_pFile<span style="color: #008080;">;</span>
       CArchive<span style="color: #000040;">*</span> m_pArchiveIn<span style="color: #008080;">;</span>
       CArchive<span style="color: #000040;">*</span> m_pArchiveOut<span style="color: #008080;">;</span>
<span style="color: #0000ff;">protected</span><span style="color: #008080;">:</span>
       CFileTransfersDlg<span style="color: #000040;">*</span> m_pdlgMain<span style="color: #008080;">;</span>
&nbsp;
<span style="color: #008000;">&#125;</span><span style="color: #008080;">;</span></pre></td></tr></table></div>


<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
</pre></td><td class="code"><pre class="cpp" style="font-family:Verdana,Courier New;"><span style="color: #666666;">// ClientSocket.cpp</span>
&nbsp;
<span style="color: #339900;">#include &quot;stdafx.h&quot;</span>
<span style="color: #339900;">#include &quot;FileTransfers.h&quot;</span>
<span style="color: #339900;">#include &quot;ClientSocket.h&quot;</span>
&nbsp;
CClientSocket<span style="color: #008080;">::</span><span style="color: #007788;">CClientSocket</span><span style="color: #008000;">&#40;</span>CFileTransfersDlg<span style="color: #000040;">*</span> pdlgMain<span style="color: #008000;">&#41;</span>
<span style="color: #008000;">&#123;</span>
       m_pdlgMain <span style="color: #000080;">=</span> pdlgMain<span style="color: #008080;">;</span>
       m_pFile <span style="color: #000080;">=</span> <span style="color: #0000ff;">NULL</span><span style="color: #008080;">;</span>
       m_pArchiveIn <span style="color: #000080;">=</span> <span style="color: #0000ff;">NULL</span><span style="color: #008080;">;</span>
       m_pArchiveOut <span style="color: #000080;">=</span> <span style="color: #0000ff;">NULL</span><span style="color: #008080;">;</span>
<span style="color: #008000;">&#125;</span>
&nbsp;
CClientSocket<span style="color: #008080;">::</span><span style="color: #007788;">CClientSocket</span><span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span>
<span style="color: #008000;">&#123;</span>
       m_pdlgMain <span style="color: #000080;">=</span> <span style="color: #0000ff;">NULL</span><span style="color: #008080;">;</span>
&nbsp;
       m_pFile <span style="color: #000080;">=</span> <span style="color: #0000ff;">NULL</span><span style="color: #008080;">;</span>
       m_pArchiveIn <span style="color: #000080;">=</span> <span style="color: #0000ff;">NULL</span><span style="color: #008080;">;</span>
       m_pArchiveOut <span style="color: #000080;">=</span> <span style="color: #0000ff;">NULL</span><span style="color: #008080;">;</span>
<span style="color: #008000;">&#125;</span>
&nbsp;
CClientSocket<span style="color: #008080;">::</span>~CClientSocket<span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span>
<span style="color: #008000;">&#123;</span>
<span style="color: #008000;">&#125;</span>
&nbsp;
<span style="color: #666666;">//串行化的初始化</span>
<span style="color: #0000ff;">void</span> CClientSocket<span style="color: #008080;">::</span><span style="color: #007788;">Init</span><span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span>
<span style="color: #008000;">&#123;</span>
       m_pFile <span style="color: #000080;">=</span> <span style="color: #0000dd;">new</span> CSocketFile<span style="color: #008000;">&#40;</span><span style="color: #0000dd;">this</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
       m_pArchiveIn <span style="color: #000080;">=</span> <span style="color: #0000dd;">new</span> CArchive<span style="color: #008000;">&#40;</span>m_pFile,CArchive<span style="color: #008080;">::</span><span style="color: #007788;">load</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
       m_pArchiveOut <span style="color: #000080;">=</span> <span style="color: #0000dd;">new</span> CArchive<span style="color: #008000;">&#40;</span>m_pFile,CArchive<span style="color: #008080;">::</span><span style="color: #007788;">store</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
<span style="color: #008000;">&#125;</span>
&nbsp;
<span style="color: #0000ff;">void</span> CClientSocket<span style="color: #008080;">::</span><span style="color: #0000dd;">Abort</span><span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span>
<span style="color: #008000;">&#123;</span>
       <span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span>m_pArchiveOut <span style="color: #000040;">!</span><span style="color: #000080;">=</span> <span style="color: #0000ff;">NULL</span><span style="color: #008000;">&#41;</span>
       <span style="color: #008000;">&#123;</span>
              m_pArchiveOut<span style="color: #000040;">-</span><span style="color: #000080;">&gt;</span><span style="color: #0000dd;">Abort</span><span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
              <span style="color: #0000dd;">delete</span> m_pArchiveOut<span style="color: #008080;">;</span>
              m_pArchiveOut <span style="color: #000080;">=</span> <span style="color: #0000ff;">NULL</span><span style="color: #008080;">;</span>
       <span style="color: #008000;">&#125;</span>
<span style="color: #008000;">&#125;</span>
&nbsp;
<span style="color: #0000ff;">BOOL</span> CClientSocket<span style="color: #008080;">::</span><span style="color: #007788;">SendMsg</span><span style="color: #008000;">&#40;</span>CMessage <span style="color: #000040;">*</span>pMsg<span style="color: #008000;">&#41;</span>
<span style="color: #008000;">&#123;</span>
       <span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span>m_pArchiveOut <span style="color: #000040;">!</span><span style="color: #000080;">=</span> <span style="color: #0000ff;">NULL</span><span style="color: #008000;">&#41;</span>
       <span style="color: #008000;">&#123;</span>
              <span style="color: #0000ff;">TRY</span>
              <span style="color: #008000;">&#123;</span>
                     pMsg<span style="color: #000040;">-</span><span style="color: #000080;">&gt;</span>Serialize<span style="color: #008000;">&#40;</span><span style="color: #000040;">*</span>m_pArchiveOut<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
                     m_pArchiveOut<span style="color: #000040;">-</span><span style="color: #000080;">&gt;</span>Flush<span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
&nbsp;
                     <span style="color: #0000ff;">return</span> <span style="color: #0000ff;">TRUE</span><span style="color: #008080;">;</span>
              <span style="color: #008000;">&#125;</span>
              <span style="color: #0000ff;">CATCH</span><span style="color: #008000;">&#40;</span>CFileException, e<span style="color: #008000;">&#41;</span>
              <span style="color: #008000;">&#123;</span>
                     m_pArchiveOut<span style="color: #000040;">-</span><span style="color: #000080;">&gt;</span><span style="color: #0000dd;">Abort</span><span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
                     <span style="color: #0000dd;">delete</span> m_pArchiveOut<span style="color: #008080;">;</span>
                     m_pArchiveOut <span style="color: #000080;">=</span> <span style="color: #0000ff;">NULL</span><span style="color: #008080;">;</span>
              <span style="color: #008000;">&#125;</span>
              END_CATCH
       <span style="color: #008000;">&#125;</span>
&nbsp;
       <span style="color: #0000ff;">return</span> <span style="color: #0000ff;">FALSE</span><span style="color: #008080;">;</span>
<span style="color: #008000;">&#125;</span>
&nbsp;
<span style="color: #0000ff;">void</span> CClientSocket<span style="color: #008080;">::</span><span style="color: #007788;">ReceiveMsg</span><span style="color: #008000;">&#40;</span>CMessage <span style="color: #000040;">*</span>pMsg<span style="color: #008000;">&#41;</span>
<span style="color: #008000;">&#123;</span>
       pMsg<span style="color: #000040;">-</span><span style="color: #000080;">&gt;</span>Serialize<span style="color: #008000;">&#40;</span><span style="color: #000040;">*</span>m_pArchiveIn<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
<span style="color: #008000;">&#125;</span>
&nbsp;
<span style="color: #0000ff;">void</span> CClientSocket<span style="color: #008080;">::</span><span style="color: #007788;">OnReceive</span><span style="color: #008000;">&#40;</span><span style="color: #0000ff;">int</span> nErrorCode<span style="color: #008000;">&#41;</span> 
<span style="color: #008000;">&#123;</span>
       m_pdlgMain<span style="color: #000040;">-</span><span style="color: #000080;">&gt;</span>ProcessReceive<span style="color: #008000;">&#40;</span><span style="color: #0000dd;">this</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
       CSocket<span style="color: #008080;">::</span><span style="color: #007788;">OnReceive</span><span style="color: #008000;">&#40;</span>nErrorCode<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
<span style="color: #008000;">&#125;</span></pre></td></tr></table></div>

]]></content:encoded>
			<wfw:commentRss>http://www.joansky.com/csoke-mfc.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>关于CRadio Button的使用 MFC</title>
		<link>http://www.joansky.com/cradiobutton-mfc.html</link>
		<comments>http://www.joansky.com/cradiobutton-mfc.html#comments</comments>
		<pubDate>Sun, 14 Nov 2010 08:01:16 +0000</pubDate>
		<dc:creator>Joan</dc:creator>
				<category><![CDATA[编程相关]]></category>
		<category><![CDATA[MFC]]></category>

		<guid isPermaLink="false">http://www.joansky.com/?p=109</guid>
		<description><![CDATA[最近在学Windows网络通信程序设计，服务器和客户端使用同一个界面，需要使用Radio Button来选择启动的服务类型。 简单记录下Radio Button使用方法 有两个Radio Button，一个是IDC_RADIO_SERVER，设置其属性为Group，Auto（有Group属性，说明IDC_RADIO_SERVER是这一组Button的标识）。另一个是IDC_RADIO_CLIENT，设置属性为Auto。这样，使得这两个button为一组 给这一组button关联一个int类型变量： 打开MFC ClassWizard 选择control IDs中的IDC_RADIO_SERVER（IDC_RADIO_CLIENT是看不到的，因为它与IDC_RADIO_SERVER关联起来了），点击Add Variable，添加Member variable name为m_nServerType ，Category：Value ,Varriable type：int。 这时，假设两个button的消息处理函数分别是OnRadioServer()和OnRadioClient()，当点击IDC_RADIO_SERVER时，即触发了OnRadioServer()，则m_nServerType 的值默认设为0。当点击IDC_RADIO_CLIENT时，触发了OnRadioClient()，m_nServerType的值默认设为1。 当在写程序需要判断启动的是哪个服务类型，直接判断m_nServerType的值是0还是1就行了。]]></description>
			<content:encoded><![CDATA[<p>最近在学Windows网络通信程序设计，服务器和客户端使用同一个界面，需要使用Radio Button来选择启动的服务类型。</p>
<p>简单记录下Radio Button使用方法</p>
<p>有两个Radio Button，一个是IDC_RADIO_SERVER，设置其属性为Group，Auto（有Group属性，说明IDC_RADIO_SERVER是这一组Button的标识）。另一个是IDC_RADIO_CLIENT，设置属性为Auto。这样，使得这两个button为一组</p>
<p>给这一组button关联一个int类型变量：</p>
<p>打开MFC ClassWizard 选择control IDs中的IDC_RADIO_SERVER（IDC_RADIO_CLIENT是看不到的，因为它与IDC_RADIO_SERVER关联起来了），点击Add Variable，添加Member variable name为m_nServerType ，Category：Value ,Varriable type：int。</p>
<p>这时，假设两个button的消息处理函数分别是OnRadioServer()和OnRadioClient()，当点击IDC_RADIO_SERVER时，即触发了OnRadioServer()，则m_nServerType 的值默认设为0。当点击IDC_RADIO_CLIENT时，触发了OnRadioClient()，m_nServerType的值默认设为1。</p>
<p>当在写程序需要判断启动的是哪个服务类型，直接判断m_nServerType的值是0还是1就行了。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.joansky.com/cradiobutton-mfc.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>TOSHIBA电脑维修事件</title>
		<link>http://www.joansky.com/toshiba-computer.html</link>
		<comments>http://www.joansky.com/toshiba-computer.html#comments</comments>
		<pubDate>Fri, 29 Oct 2010 10:25:58 +0000</pubDate>
		<dc:creator>Joan</dc:creator>
				<category><![CDATA[生活琐事]]></category>
		<category><![CDATA[生活]]></category>
		<category><![CDATA[电脑]]></category>

		<guid isPermaLink="false">http://www.joansky.com/?p=108</guid>
		<description><![CDATA[电脑型号Statellite M200，07年买的。 电脑刚出现问题是在国庆前。有时候玩着玩着就出现花屏，死机。打电话问了brother，他说可能是你使用方法不当，宿舍断电前电源还插着的话，第二天来电的时候一下子电流太大，损坏电源。我觉得他说的挺有道理，于是乎，在每天晚上睡觉前都不忘关电源（还是有几次忘记了）。 后来情况越来越严重。直到前天用电脑，发现电脑只要一插上电源就出现花屏、死机。但是光用电池就没什么事。暂时只能先充上电用，用完了关机再继续充电，真郁闷...... 上网G了下，说是电源适配器的原因，既然是硬件问题那就只能拿去维修了。 周五上完早课，跑去东芝官方指定的维修点。开机看了一下，维修人员说，可能是装系统问题。插上电源，进入BIOS，电脑处于正常运行状态，又排除系统问题。那位哥说要不开机检查下，检查费用是140RMB，那估计就是主板问题，直接换主板一两千，昏，换主板我还不如直接买新的呢。决定还是自己先彻底排除软件问题吧。 brothe说上回他是跑去专卖店修的，换了一小块芯片300RMB。在东芝维修点附近刚好有个东芝专卖店，既然都来了那就试一试吧。那店员检查了一会，终于把软件因素排除了，让我们到他合作的维修点去修。 到了维修点，一说原因，这师傅就知道问题出现在什么地方了，他说遇到东芝这样的情况已经很多了。他的解释是主板上有一小块芯片（用于交流电转换成直流电）坏了，换一块就行了，费用300RMB，保修期一个月，这比所谓的官方维修点有价值多了......直接换，连检查的步骤都省了。 三个小时后去取电脑，检查一切没问题，希望这电脑能用到大四毕业吧，看工作需要再买合适的电脑。]]></description>
			<content:encoded><![CDATA[<p>电脑型号Statellite M200，07年买的。</p>
<p>电脑刚出现问题是在国庆前。有时候玩着玩着就出现花屏，死机。打电话问了brother，他说可能是你使用方法不当，宿舍断电前电源还插着的话，第二天来电的时候一下子电流太大，损坏电源。我觉得他说的挺有道理，于是乎，在每天晚上睡觉前都不忘关电源（还是有几次忘记了）。</p>
<p>后来情况越来越严重。直到前天用电脑，发现电脑只要一插上电源就出现花屏、死机。但是光用电池就没什么事。暂时只能先充上电用，用完了关机再继续充电，真郁闷......</p>
<p>上网G了下，说是电源适配器的原因，既然是硬件问题那就只能拿去维修了。</p>
<p>周五上完早课，跑去东芝官方指定的维修点。开机看了一下，维修人员说，可能是装系统问题。插上电源，进入BIOS，电脑处于正常运行状态，又排除系统问题。那位哥说要不开机检查下，检查费用是140RMB，那估计就是主板问题，直接换主板一两千，昏，换主板我还不如直接买新的呢。决定还是自己先彻底排除软件问题吧。</p>
<p>brothe说上回他是跑去专卖店修的，换了一小块芯片300RMB。在东芝维修点附近刚好有个东芝专卖店，既然都来了那就试一试吧。那店员检查了一会，终于把软件因素排除了，让我们到他合作的维修点去修。</p>
<p>到了维修点，一说原因，这师傅就知道问题出现在什么地方了，他说遇到东芝这样的情况已经很多了。他的解释是主板上有一小块芯片（用于交流电转换成直流电）坏了，换一块就行了，费用300RMB，保修期一个月，这比所谓的官方维修点有价值多了......直接换，连检查的步骤都省了。</p>
<p>三个小时后去取电脑，检查一切没问题，希望这电脑能用到大四毕业吧，看工作需要再买合适的电脑。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.joansky.com/toshiba-computer.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>大二暑假那事儿</title>
		<link>http://www.joansky.com/holiday1.html</link>
		<comments>http://www.joansky.com/holiday1.html#comments</comments>
		<pubDate>Sun, 05 Sep 2010 13:10:55 +0000</pubDate>
		<dc:creator>Joan</dc:creator>
				<category><![CDATA[生活琐事]]></category>
		<category><![CDATA[生活]]></category>

		<guid isPermaLink="false">http://www.joansky.com/?p=107</guid>
		<description><![CDATA[暑假快结束了，故记录之 在家“休养生息”，闲来无事看了5本小说，分别如下 《灿烂千阳》、《追风筝的人》这两本书是同个作者——卡勒德·胡赛尼，以阿富汗为背景 《偷书贼》、《真希望我20岁就知道的事》——感觉很一般，估计是翻译的缘故、 《明朝那些事儿》比较喜欢这本，毕竟是国人写的，比较符合中国人的思路，就是相对比较长了点。 看了部连续剧《珠光宝气》粤语版，到了校外听不懂粤语是很悲剧的，所以就拿它来锻炼听力了。现在差不多能听懂70%吧，有空再慢慢学了 我算是宅得够彻底了，就去了趟汕头。不过怎么就见皮肤变白呢。。。。。。 听说Bnuep变化很大，恩，应该越来越贵族化了，回校再一探究竟]]></description>
			<content:encoded><![CDATA[<p>暑假快结束了，故记录之</p>
<p>在家“休养生息”，闲来无事看了5本小说，分别如下</p>
<p>《灿烂千阳》、《追风筝的人》这两本书是同个作者——卡勒德·胡赛尼，以阿富汗为背景</p>
<p>《偷书贼》、《真希望我20岁就知道的事》——感觉很一般，估计是翻译的缘故、</p>
<p>《明朝那些事儿》比较喜欢这本，毕竟是国人写的，比较符合中国人的思路，就是相对比较长了点。</p>
<p>看了部连续剧《珠光宝气》粤语版，到了校外听不懂粤语是很悲剧的，所以就拿它来锻炼听力了。现在差不多能听懂70%吧，有空再慢慢学了</p>
<p>我算是宅得够彻底了，就去了趟汕头。不过怎么就见皮肤变白呢。。。。。。</p>
<p>听说Bnuep变化很大，恩，应该越来越贵族化了，回校再一探究竟</p>
]]></content:encoded>
			<wfw:commentRss>http://www.joansky.com/holiday1.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>CET-4，险过</title>
		<link>http://www.joansky.com/college-life-cet4.html</link>
		<comments>http://www.joansky.com/college-life-cet4.html#comments</comments>
		<pubDate>Fri, 27 Aug 2010 13:12:39 +0000</pubDate>
		<dc:creator>Joan</dc:creator>
				<category><![CDATA[生活琐事]]></category>
		<category><![CDATA[生活]]></category>
		<category><![CDATA[英语]]></category>

		<guid isPermaLink="false">http://www.joansky.com/?p=106</guid>
		<description><![CDATA[终于等到这个六月份可以考四级了，谁让我的英语一直这么不争气 我左顾右盼终于等到四级的放榜，434，险过啊，奖学金有望了 准备12月份考CET-6，不过看我这样的水平想过CET-6得花上些功夫才行，加油吧！！！]]></description>
			<content:encoded><![CDATA[<p>终于等到这个六月份可以考四级了，谁让我的英语一直这么不争气</p>
<p>我左顾右盼终于等到四级的放榜，434，险过啊，奖学金有望了</p>
<p><img class="alignnone size-full wp-image-105" title="CET4" src="http://www.joansky.com/wp-content/uploads/2010/08/CET4.png" alt="CET4" width="368" height="150" /></p>
<p>准备12月份考CET-6，不过看我这样的水平想过CET-6得花上些功夫才行，加油吧！！！</p>
]]></content:encoded>
			<wfw:commentRss>http://www.joansky.com/college-life-cet4.html/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>香港之行</title>
		<link>http://www.joansky.com/travel-hongkong2.html</link>
		<comments>http://www.joansky.com/travel-hongkong2.html#comments</comments>
		<pubDate>Sat, 24 Jul 2010 15:01:35 +0000</pubDate>
		<dc:creator>Joan</dc:creator>
				<category><![CDATA[生活琐事]]></category>
		<category><![CDATA[旅游]]></category>
		<category><![CDATA[香港]]></category>

		<guid isPermaLink="false">http://www.joansky.com/?p=104</guid>
		<description><![CDATA[好久没写了，都成月博了。放了假之后去了趟香港，记录下好了 第一天，黄大仙——紫荆广场——太平山顶——浅水湾——星光大道——维多利亚港，除了维多利亚港，其它景点逗留时间都不超过二十分钟，很小也没什么看头。从珠海九州港乘船出发到达中港城码头，打车到达黄大仙，ps，香港打的超贵。黄大仙很小，不到二十分钟就浏览完了，然后就是紫荆广场，紫荆广场是香港回归的见证地，广场是进不了的，除非你受邀，在紫荆广场外面有朵紫荆花，和这朵花合照下就可以离开了。太平山顶上都是富豪们的住宅，所谓游览太平山顶就是到达山顶的一小块歇脚地，俯瞰香港，留个影。浅水湾其实就是沙滩，人造的，没啥好说的，照个相，闪人。星光大道——名人们留下的手印，找到你的偶像，趴在滚烫的地板上，抚摸下他留下的手印，我不追星，免招这罪了。晚上游维多利亚港，夜景还不错。 听说这朵花超值钱。。。 上面不小心拍到的那对情侣拍照的时候超会摆pos，偷偷观察了他们好久。 第二天，迪斯尼。蛮好玩的，迪斯尼里的游戏不刺激，基本上8岁以上的小孩都能玩，7点离开乐园，看不到晚上的烟花，有点遗憾。 第三天，逛旺仔，接下来这两天我都是一个人独自出门，卓越，莎莎都去了，发现卓越更平民化点，价格比莎莎便宜。发现旺仔这个地方并不适合我逛，因为有几个广场都是可以讲价的那种，我不善于讲价。。。旺仔有一条街都是adidasi，naki，lining，puma，不见得有比大陆便宜。 第四天，逛铜锣湾，铜锣湾有几个大型商场，都是一些大牌子，价格很高。大家都说香港是购物的天地，不得不说，香港是有钱人逛街的天地。除非你买的是国际品牌，For example，LV，香奈儿，这些，在香港买确实会觉得便宜，但是就真维斯，班尼路，naki，阿迪达斯这些低端牌子，还不如在广州，深圳便宜。 晚上八点多从深圳皇岗口岸出境，本来打算在免税商场买两瓶洋酒回家。但是朋友刚好有车可以接送，在车上检查证件直接出境，没有机会让我下车购买。。。。。亏死我了 总的感觉，香港很小，除了逛街、迪斯尼没啥好玩的，消费水平很高。]]></description>
			<content:encoded><![CDATA[<p>好久没写了，都成月博了。放了假之后去了趟香港，记录下好了</p>
<p>第一天，黄大仙——紫荆广场——太平山顶——浅水湾——星光大道——维多利亚港，除了维多利亚港，其它景点逗留时间都不超过二十分钟，很小也没什么看头。从珠海九州港乘船出发到达中港城码头，打车到达黄大仙，ps，香港打的超贵。黄大仙很小，不到二十分钟就浏览完了，然后就是紫荆广场，紫荆广场是香港回归的见证地，广场是进不了的，除非你受邀，在紫荆广场外面有朵紫荆花，和这朵花合照下就可以离开了。太平山顶上都是富豪们的住宅，所谓游览太平山顶就是到达山顶的一小块歇脚地，俯瞰香港，留个影。浅水湾其实就是沙滩，人造的，没啥好说的，照个相，闪人。星光大道——名人们留下的手印，找到你的偶像，趴在滚烫的地板上，抚摸下他留下的手印，我不追星，免招这罪了。晚上游维多利亚港，夜景还不错。</p>
<p><img class="alignnone size-full wp-image-102" title="紫荆广场" src="http://www.joansky.com/wp-content/uploads/2010/07/紫荆广场.jpg" alt="紫荆广场" width="550" height="412" /></p>
<p>听说这朵花超值钱。。。</p>
<p><img class="alignnone size-full wp-image-101" title="浅水湾" src="http://www.joansky.com/wp-content/uploads/2010/07/浅水湾.jpg" alt="浅水湾" width="550" height="412" /></p>
<p>上面不小心拍到的那对情侣拍照的时候超会摆pos，偷偷观察了他们好久。</p>
<p>第二天，迪斯尼。蛮好玩的，迪斯尼里的游戏不刺激，基本上8岁以上的小孩都能玩，7点离开乐园，看不到晚上的烟花，有点遗憾。</p>
<p><img class="alignnone size-full wp-image-103" title="迪斯尼" src="http://www.joansky.com/wp-content/uploads/2010/07/迪斯尼.jpg" alt="迪斯尼" width="550" height="412" /></p>
<p>第三天，逛旺仔，接下来这两天我都是一个人独自出门，卓越，莎莎都去了，发现卓越更平民化点，价格比莎莎便宜。发现旺仔这个地方并不适合我逛，因为有几个广场都是可以讲价的那种，我不善于讲价。。。旺仔有一条街都是adidasi，naki，lining，puma，不见得有比大陆便宜。<br />
第四天，逛铜锣湾，铜锣湾有几个大型商场，都是一些大牌子，价格很高。大家都说香港是购物的天地，不得不说，香港是有钱人逛街的天地。除非你买的是国际品牌，For example，LV，香奈儿，这些，在香港买确实会觉得便宜，但是就真维斯，班尼路，naki，阿迪达斯这些低端牌子，还不如在广州，深圳便宜。</p>
<p>晚上八点多从深圳皇岗口岸出境，本来打算在免税商场买两瓶洋酒回家。但是朋友刚好有车可以接送，在车上检查证件直接出境，没有机会让我下车购买。。。。。亏死我了</p>
<p>总的感觉，香港很小，除了逛街、迪斯尼没啥好玩的，消费水平很高。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.joansky.com/travel-hongkong2.html/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>深圳之行</title>
		<link>http://www.joansky.com/travel-shenzhen.html</link>
		<comments>http://www.joansky.com/travel-shenzhen.html#comments</comments>
		<pubDate>Mon, 14 Jun 2010 14:13:10 +0000</pubDate>
		<dc:creator>Joan</dc:creator>
				<category><![CDATA[生活琐事]]></category>
		<category><![CDATA[旅游]]></category>
		<category><![CDATA[生活]]></category>

		<guid isPermaLink="false">http://www.joansky.com/?p=100</guid>
		<description><![CDATA[周六，是s妹的生日，考完军事理论，跟她打了一通电话，勾起我出去的欲望，于是决定去广州找她。到了车站，打了个电话给m妹，挂了电话，刚好来个辆大巴，看刚同学们都上车，我也直接上车，上了高速后，我发现我坐的是深圳车。可能我之前就一直想这去趟深圳，所以大脑深处无意识让我坐上深圳车。（好吧，我在为我的愚蠢行为试图解释什么，当教训），s妹，不好意思了，下次再去找你哈。 这次出去纯粹为了放松心情，所以没去shoping，找了个可以散步的地方顺便拍拍照留念下——园博圆。那里蚊子好多啊，刚好穿着七分裤，可怜我的手脚起了好多包，现在还痒。我觉得网上应该提供这样的信息，蚊子很多，请游客们自带驱蚊剂~~~ call妹家有单反，太沉了，不想带，so，我的小8派上用场了 园博圆的logo 纯属无聊 第一次遇到这么空的地铁 迫于设备太差，想买单片机，佳能的，不知道大家有没好的建议？ 感谢call家、m姐妹这两天的款待。ps：再过几天是call妹的生日了，顺祝你生日快乐哦。 接下来是CET4和期末考试，该是好好准备的时候了，我一定要一次过CET4，还有我的奖学金！]]></description>
			<content:encoded><![CDATA[<p>周六，是s妹的生日，考完军事理论，跟她打了一通电话，勾起我出去的欲望，于是决定去广州找她。到了车站，打了个电话给m妹，挂了电话，刚好来个辆大巴，看刚同学们都上车，我也直接上车，上了高速后，我发现我坐的是深圳车。可能我之前就一直想这去趟深圳，所以大脑深处无意识让我坐上深圳车。（好吧，我在为我的愚蠢行为试图解释什么，当教训），s妹，不好意思了，下次再去找你哈。</p>
<p>这次出去纯粹为了放松心情，所以没去shoping，找了个可以散步的地方顺便拍拍照留念下——园博圆。那里蚊子好多啊，刚好穿着七分裤，可怜我的手脚起了好多包，现在还痒。我觉得网上应该提供这样的信息，蚊子很多，请游客们自带驱蚊剂~~~</p>
<p>call妹家有单反，太沉了，不想带，so，我的小8派上用场了</p>
<p><img class="alignnone size-full wp-image-96" title="园博圆" src="http://www.joansky.com/wp-content/uploads/2010/06/20100613147.jpg" alt="园博圆" width="412" height="550" /></p>
<p>园博圆的logo</p>
<p><img class="alignnone size-full wp-image-97" title="园博圆景点" src="http://www.joansky.com/wp-content/uploads/2010/06/20100613173.jpg" alt="园博圆景点" width="550" height="412" /></p>
<p><img class="alignnone size-full wp-image-98" title="富士康" src="http://www.joansky.com/wp-content/uploads/2010/06/20100613239.jpg" alt="富士康" width="550" height="412" /></p>
<p>纯属无聊</p>
<p><img class="alignnone size-full wp-image-99" title="深圳地铁" src="http://www.joansky.com/wp-content/uploads/2010/06/20100612126.jpg" alt="深圳地铁" width="412" height="550" /></p>
<p>第一次遇到这么空的地铁</p>
<p>迫于设备太差，想买单片机，佳能的，不知道大家有没好的建议？</p>
<p>感谢call家、m姐妹这两天的款待。ps：再过几天是call妹的生日了，顺祝你生日快乐哦。</p>
<p>接下来是CET4和期末考试，该是好好准备的时候了，我一定要一次过CET4，还有我的奖学金！</p>
]]></content:encoded>
			<wfw:commentRss>http://www.joansky.com/travel-shenzhen.html/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>回溯法实现求24点的所有解 C版</title>
		<link>http://www.joansky.com/24-c.html</link>
		<comments>http://www.joansky.com/24-c.html#comments</comments>
		<pubDate>Thu, 03 Jun 2010 14:39:21 +0000</pubDate>
		<dc:creator>Joan</dc:creator>
				<category><![CDATA[编程相关]]></category>
		<category><![CDATA[C]]></category>
		<category><![CDATA[算法]]></category>
		<category><![CDATA[递归]]></category>

		<guid isPermaLink="false">http://www.joansky.com/?p=95</guid>
		<description><![CDATA[回溯法+递归 【问题描述】 几十年前全世界就流行一种数字游戏，至今仍有人乐此不疲．在中国我们把这种游戏称为“算24点”。您作为游戏者将得到4个1~9之间的自然数作为操作数，而您的任务是对这4个操作数进行适当的算术运算，要求运算结果等于24。 您可以使用的运算只有：+，-，*，/，您还可以使用（）来改变运算顺序。注意：所有的中间结果须是整数，所以一些除法运算是不允许的（例如，(2*2)/4是合法的，2*(2/4)是不合法的）。下面我们给出一个游戏的具体例子： 若给出的4个操作数是：1、2、3、7，则一种可能的解答是1+2+3*7=24。 【输入】 只有一行，四个1到9之间的自然数。 【输出】 如果有解的话，只要输出一个解，输出的是三行数据，分别表示运算的步骤。其中第一行是输入的两个数和一个运算符和运算后的结果，第二行是第一行的结果和一个输入的数据、运算符、运算后的结果；第三行是第二行的结果和输入的一个数、运算符和“=24”。如果两个操作数有大小的话则先输出大的。 如果没有解则输出“No answer!” 【输入样例】 1 2 3 7 【输出样例】 2+1=3 7*3=21 21+3=24 解题思路： 这道题的目的是求出四个数所有的组合运算的结果，满足24点就输出。 首先我们应该找出这四个数的所有排列顺序，再按已经排好的顺便进行加、减、乘、除运算，结果是24点，就输出。 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 [...]]]></description>
			<content:encoded><![CDATA[<p>回溯法+递归</p>
<p>【问题描述】<br />
几十年前全世界就流行一种数字游戏，至今仍有人乐此不疲．在中国我们把这种游戏称为“算24点”。您作为游戏者将得到4个1~9之间的自然数作为操作数，而您的任务是对这4个操作数进行适当的算术运算，要求运算结果等于24。</p>
<p>您可以使用的运算只有：+，-，*，/，您还可以使用（）来改变运算顺序。注意：所有的中间结果须是整数，所以一些除法运算是不允许的（例如，(2*2)/4是合法的，2*(2/4)是不合法的）。下面我们给出一个游戏的具体例子：</p>
<p>若给出的4个操作数是：1、2、3、7，则一种可能的解答是1+2+3*7=24。</p>
<p><span id="more-95"></span></p>
<p>【输入】</p>
<p>只有一行，四个1到9之间的自然数。</p>
<p>【输出】</p>
<p>如果有解的话，只要输出一个解，输出的是三行数据，分别表示运算的步骤。其中第一行是输入的两个数和一个运算符和运算后的结果，第二行是第一行的结果和一个输入的数据、运算符、运算后的结果；第三行是第二行的结果和输入的一个数、运算符和“=24”。如果两个操作数有大小的话则先输出大的。</p>
<p>如果没有解则输出“No answer!”</p>
<p>【输入样例】<br />
1 2 3 7</p>
<p>【输出样例】<br />
2+1=3<br />
7*3=21<br />
21+3=24</p>
<p><span style="color: #0000ff;">解题思路：</span></p>
<p><span style="color: #0000ff;">这道题的目的是求出四个数所有的组合运算的结果，满足24点就输出。<br />
首先我们应该找出这四个数的所有排列顺序，再按已经排好的顺便进行加、减、乘、除运算，结果是24点，就输出。</span></p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
</pre></td><td class="code"><pre class="cpp" style="font-family:Verdana,Courier New;"><span style="color: #339900;">#include&lt;stdio.h&gt;</span>
&nbsp;
<span style="color: #0000ff;">int</span> x<span style="color: #008000;">&#91;</span><span style="color: #0000dd;">100</span><span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span>
<span style="color: #666666;">//保存四个数的所有组合 </span>
<span style="color: #0000ff;">int</span> arrange<span style="color: #008000;">&#91;</span><span style="color: #0000dd;">100</span><span style="color: #008000;">&#93;</span><span style="color: #008000;">&#91;</span><span style="color: #0000dd;">100</span><span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span>
<span style="color: #666666;">//保存读入的四个数 </span>
<span style="color: #0000ff;">int</span> num<span style="color: #008000;">&#91;</span><span style="color: #0000dd;">100</span><span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span>
<span style="color: #666666;">//标记该数是否被访问过 </span>
<span style="color: #0000ff;">int</span> a<span style="color: #008000;">&#91;</span><span style="color: #0000dd;">100</span><span style="color: #008000;">&#93;</span> <span style="color: #000080;">=</span> <span style="color: #008000;">&#123;</span><span style="color: #0000dd;">0</span><span style="color: #008000;">&#125;</span><span style="color: #008080;">;</span>
&nbsp;
<span style="color: #0000ff;">char</span> sym<span style="color: #008000;">&#91;</span><span style="color: #0000dd;">5</span><span style="color: #008000;">&#93;</span><span style="color: #000080;">=</span><span style="color: #008000;">&#123;</span><span style="color: #FF0000;">'0'</span>,<span style="color: #FF0000;">'+'</span>,<span style="color: #FF0000;">'-'</span>,<span style="color: #FF0000;">'*'</span>,<span style="color: #FF0000;">'/'</span><span style="color: #008000;">&#125;</span><span style="color: #008080;">;</span>
<span style="color: #666666;">//保存使用的算术运算符 </span>
<span style="color: #0000ff;">int</span> bol<span style="color: #008000;">&#91;</span><span style="color: #0000dd;">100</span><span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span>
<span style="color: #666666;">// 标记运算符是否被访问过 </span>
<span style="color: #0000ff;">int</span> b<span style="color: #008000;">&#91;</span><span style="color: #0000dd;">100</span><span style="color: #008000;">&#93;</span><span style="color: #000080;">=</span><span style="color: #008000;">&#123;</span><span style="color: #0000dd;">0</span><span style="color: #008000;">&#125;</span><span style="color: #008080;">;</span>
&nbsp;
<span style="color: #666666;">//保存四个数的组合总数 </span>
<span style="color: #0000ff;">int</span> sum <span style="color: #000080;">=</span> <span style="color: #0000dd;">0</span><span style="color: #008080;">;</span>
<span style="color: #0000ff;">int</span> n,r<span style="color: #008080;">;</span>
<span style="color: #0000ff;">int</span> ok<span style="color: #000080;">=</span><span style="color: #0000dd;">1</span><span style="color: #008080;">;</span>
&nbsp;
<span style="color: #666666;">//保存所有可能的组合数 </span>
<span style="color: #0000ff;">void</span> save<span style="color: #008000;">&#40;</span><span style="color: #0000ff;">int</span> sum<span style="color: #008000;">&#41;</span>
<span style="color: #008000;">&#123;</span>
    <span style="color: #0000ff;">int</span> i<span style="color: #008080;">;</span>
    <span style="color: #0000ff;">for</span><span style="color: #008000;">&#40;</span>i<span style="color: #000080;">=</span><span style="color: #0000dd;">0</span><span style="color: #008080;">;</span>i<span style="color: #000080;">&lt;</span><span style="color: #0000dd;">4</span><span style="color: #008080;">;</span><span style="color: #000040;">++</span>i<span style="color: #008000;">&#41;</span>
    <span style="color: #008000;">&#123;</span>
        arrange<span style="color: #008000;">&#91;</span>sum<span style="color: #008000;">&#93;</span><span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span> <span style="color: #000080;">=</span> x<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span>
&nbsp;
    <span style="color: #008000;">&#125;</span>
<span style="color: #008000;">&#125;</span>
&nbsp;
&nbsp;
<span style="color: #666666;">//判断使用该运算符是否合法 </span>
<span style="color: #0000ff;">int</span> symbollegal<span style="color: #008000;">&#40;</span><span style="color: #0000ff;">int</span> t,<span style="color: #0000ff;">int</span> i,<span style="color: #0000ff;">int</span> sum,<span style="color: #0000ff;">int</span> layer<span style="color: #008000;">&#41;</span>
<span style="color: #008000;">&#123;</span>
    <span style="color: #0000ff;">switch</span><span style="color: #008000;">&#40;</span>i<span style="color: #008000;">&#41;</span>
    <span style="color: #008000;">&#123;</span>
    <span style="color: #0000ff;">case</span> <span style="color: #0000dd;">1</span><span style="color: #008080;">:</span>
        <span style="color: #0000ff;">if</span><span style="color: #008000;">&#40;</span>arrange<span style="color: #008000;">&#91;</span>layer<span style="color: #008000;">&#93;</span><span style="color: #008000;">&#91;</span>t<span style="color: #008000;">&#93;</span><span style="color: #000040;">+</span>sum<span style="color: #000080;">&gt;</span><span style="color: #0000dd;">24</span><span style="color: #008000;">&#41;</span>
            <span style="color: #0000ff;">return</span> <span style="color: #0000dd;">0</span><span style="color: #008080;">;</span>
        <span style="color: #0000ff;">else</span> <span style="color: #0000ff;">return</span> arrange<span style="color: #008000;">&#91;</span>layer<span style="color: #008000;">&#93;</span><span style="color: #008000;">&#91;</span>t<span style="color: #008000;">&#93;</span><span style="color: #000040;">+</span>sum<span style="color: #008080;">;</span>
    <span style="color: #0000ff;">case</span> <span style="color: #0000dd;">2</span><span style="color: #008080;">:</span>
        <span style="color: #0000ff;">if</span><span style="color: #008000;">&#40;</span>sum<span style="color: #000040;">-</span>arrange<span style="color: #008000;">&#91;</span>layer<span style="color: #008000;">&#93;</span><span style="color: #008000;">&#91;</span>t<span style="color: #008000;">&#93;</span><span style="color: #000080;">&lt;</span><span style="color: #0000dd;">0</span><span style="color: #008000;">&#41;</span>
            <span style="color: #0000ff;">return</span> <span style="color: #0000dd;">0</span><span style="color: #008080;">;</span>
        <span style="color: #0000ff;">else</span> <span style="color: #0000ff;">return</span> sum<span style="color: #000040;">-</span>arrange<span style="color: #008000;">&#91;</span>layer<span style="color: #008000;">&#93;</span><span style="color: #008000;">&#91;</span>t<span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span>
    <span style="color: #0000ff;">case</span> <span style="color: #0000dd;">3</span><span style="color: #008080;">:</span>
        <span style="color: #0000ff;">if</span><span style="color: #008000;">&#40;</span>arrange<span style="color: #008000;">&#91;</span>layer<span style="color: #008000;">&#93;</span><span style="color: #008000;">&#91;</span>t<span style="color: #008000;">&#93;</span><span style="color: #000040;">*</span>sum<span style="color: #000080;">&gt;</span><span style="color: #0000dd;">24</span><span style="color: #008000;">&#41;</span>
            <span style="color: #0000ff;">return</span> <span style="color: #0000dd;">0</span><span style="color: #008080;">;</span>
        <span style="color: #0000ff;">else</span> <span style="color: #0000ff;">return</span> arrange<span style="color: #008000;">&#91;</span>layer<span style="color: #008000;">&#93;</span><span style="color: #008000;">&#91;</span>t<span style="color: #008000;">&#93;</span><span style="color: #000040;">*</span>sum<span style="color: #008080;">;</span>
    <span style="color: #0000ff;">case</span> <span style="color: #0000dd;">4</span><span style="color: #008080;">:</span>
        <span style="color: #0000ff;">if</span><span style="color: #008000;">&#40;</span>arrange<span style="color: #008000;">&#91;</span>layer<span style="color: #008000;">&#93;</span><span style="color: #008000;">&#91;</span>t<span style="color: #008000;">&#93;</span><span style="color: #000040;">!</span><span style="color: #000080;">=</span><span style="color: #0000dd;">0</span><span style="color: #000040;">&amp;&amp;</span>sum<span style="color: #000040;">%</span>arrange<span style="color: #008000;">&#91;</span>layer<span style="color: #008000;">&#93;</span><span style="color: #008000;">&#91;</span>t<span style="color: #008000;">&#93;</span><span style="color: #000040;">!</span><span style="color: #000080;">=</span><span style="color: #0000dd;">0</span><span style="color: #008000;">&#41;</span>
            <span style="color: #0000ff;">return</span> <span style="color: #0000dd;">0</span><span style="color: #008080;">;</span>
        <span style="color: #0000ff;">else</span> <span style="color: #0000ff;">return</span> sum<span style="color: #000040;">/</span>arrange<span style="color: #008000;">&#91;</span>layer<span style="color: #008000;">&#93;</span><span style="color: #008000;">&#91;</span>t<span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span>
&nbsp;
    <span style="color: #008000;">&#125;</span>
<span style="color: #008000;">&#125;</span>
<span style="color: #666666;">// 打印结果 </span>
<span style="color: #0000ff;">void</span> pri<span style="color: #008000;">&#40;</span><span style="color: #0000ff;">int</span> layer<span style="color: #008000;">&#41;</span>
<span style="color: #008000;">&#123;</span>
    <span style="color: #0000ff;">int</span> i,temp<span style="color: #008080;">;</span>
    <span style="color: #0000ff;">int</span> totle <span style="color: #000080;">=</span> arrange<span style="color: #008000;">&#91;</span>layer<span style="color: #008000;">&#93;</span><span style="color: #008000;">&#91;</span><span style="color: #0000dd;">0</span><span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span>
    <span style="color: #0000ff;">for</span><span style="color: #008000;">&#40;</span>i<span style="color: #000080;">=</span> <span style="color: #0000dd;">1</span><span style="color: #008080;">;</span>i<span style="color: #000080;">&lt;=</span><span style="color: #0000dd;">3</span><span style="color: #008080;">;</span><span style="color: #000040;">++</span>i<span style="color: #008000;">&#41;</span>
    <span style="color: #008000;">&#123;</span>
        <span style="color: #0000ff;">if</span><span style="color: #008000;">&#40;</span>totle <span style="color: #000080;">&gt;</span> arrange<span style="color: #008000;">&#91;</span>layer<span style="color: #008000;">&#93;</span><span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span><span style="color: #008000;">&#41;</span>
        <span style="color: #008000;">&#123;</span>
            temp <span style="color: #000080;">=</span> symbollegal<span style="color: #008000;">&#40;</span>i,bol<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span>,totle,layer<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
            <span style="color: #0000dd;">printf</span><span style="color: #008000;">&#40;</span><span style="color: #FF0000;">&quot;%d %c %d = %d<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span>,totle,sym<span style="color: #008000;">&#91;</span>bol<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span><span style="color: #008000;">&#93;</span>,arrange<span style="color: #008000;">&#91;</span>layer<span style="color: #008000;">&#93;</span><span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span>,temp<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
        <span style="color: #008000;">&#125;</span>
        <span style="color: #0000ff;">else</span>
        <span style="color: #008000;">&#123;</span>
            temp <span style="color: #000080;">=</span> symbollegal<span style="color: #008000;">&#40;</span>i,bol<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span>,totle,layer<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
            <span style="color: #0000dd;">printf</span><span style="color: #008000;">&#40;</span><span style="color: #FF0000;">&quot;%d %c %d = %d<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span>,arrange<span style="color: #008000;">&#91;</span>layer<span style="color: #008000;">&#93;</span><span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span>,sym<span style="color: #008000;">&#91;</span>bol<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span><span style="color: #008000;">&#93;</span>,totle,temp<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
        <span style="color: #008000;">&#125;</span>
        totle <span style="color: #000080;">=</span> temp<span style="color: #008080;">;</span>
&nbsp;
    <span style="color: #008000;">&#125;</span>
    <span style="color: #0000dd;">printf</span><span style="color: #008000;">&#40;</span><span style="color: #FF0000;">&quot;<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
<span style="color: #008000;">&#125;</span>
&nbsp;
<span style="color: #666666;">//回溯计算四个组合数出现的情况 </span>
<span style="color: #0000ff;">void</span> backtrack<span style="color: #008000;">&#40;</span><span style="color: #0000ff;">int</span> t<span style="color: #008000;">&#41;</span>
<span style="color: #008000;">&#123;</span>
    <span style="color: #0000ff;">int</span> i<span style="color: #008080;">;</span>
    <span style="color: #666666;">//遍历四个数 </span>
    <span style="color: #0000ff;">for</span><span style="color: #008000;">&#40;</span>i <span style="color: #000080;">=</span> <span style="color: #0000dd;">1</span><span style="color: #008080;">;</span>i<span style="color: #000080;">&lt;=</span> <span style="color: #0000dd;">4</span><span style="color: #008080;">;</span><span style="color: #000040;">++</span>i<span style="color: #008000;">&#41;</span>
    <span style="color: #008000;">&#123;</span>
        x<span style="color: #008000;">&#91;</span>t<span style="color: #008000;">&#93;</span> <span style="color: #000080;">=</span> num<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span>
        <span style="color: #666666;">//如果当前这个数没有被选择  </span>
        <span style="color: #0000ff;">if</span><span style="color: #008000;">&#40;</span>a<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span><span style="color: #000080;">==</span><span style="color: #0000dd;">0</span><span style="color: #008000;">&#41;</span>
        <span style="color: #008000;">&#123;</span>
            <span style="color: #666666;">//标记该数已经选择 </span>
            a<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span> <span style="color: #000080;">=</span> <span style="color: #0000dd;">1</span><span style="color: #008080;">;</span>
            <span style="color: #666666;">//结束条件：已经找到符合条件的四个数 </span>
            <span style="color: #0000ff;">if</span><span style="color: #008000;">&#40;</span>t <span style="color: #000080;">==</span> <span style="color: #0000dd;">3</span> <span style="color: #008000;">&#41;</span>
            <span style="color: #008000;">&#123;</span>
                save<span style="color: #008000;">&#40;</span>sum<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
                <span style="color: #000040;">++</span>sum<span style="color: #008080;">;</span>
&nbsp;
            <span style="color: #008000;">&#125;</span>
            <span style="color: #0000ff;">else</span>
            <span style="color: #008000;">&#123;</span>
                backtrack<span style="color: #008000;">&#40;</span>t<span style="color: #000040;">+</span><span style="color: #0000dd;">1</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>     
            <span style="color: #008000;">&#125;</span>
            <span style="color: #666666;">//不符合条件，恢复该数的访问权限 </span>
            a<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span> <span style="color: #000080;">=</span> <span style="color: #0000dd;">0</span><span style="color: #008080;">;</span>
        <span style="color: #008000;">&#125;</span>
    <span style="color: #008000;">&#125;</span>
<span style="color: #008000;">&#125;</span>
&nbsp;
<span style="color: #666666;">// 计算该组合数能得出24的情况 </span>
<span style="color: #0000ff;">void</span> find<span style="color: #008000;">&#40;</span><span style="color: #0000ff;">int</span> sum,<span style="color: #0000ff;">int</span> t,<span style="color: #0000ff;">int</span> layer<span style="color: #008000;">&#41;</span>
<span style="color: #008000;">&#123;</span>
    <span style="color: #0000ff;">int</span> i,temp,sign<span style="color: #008080;">;</span>
    <span style="color: #666666;">//遍历加、减、乘、除四个符合 </span>
    <span style="color: #0000ff;">for</span><span style="color: #008000;">&#40;</span>i<span style="color: #000080;">=</span><span style="color: #0000dd;">1</span><span style="color: #008080;">;</span>i<span style="color: #000080;">&lt;=</span><span style="color: #0000dd;">4</span><span style="color: #008080;">;</span><span style="color: #000040;">++</span>i<span style="color: #008000;">&#41;</span>
    <span style="color: #008000;">&#123;</span>
        bol<span style="color: #008000;">&#91;</span>t<span style="color: #008000;">&#93;</span> <span style="color: #000080;">=</span> i<span style="color: #008080;">;</span>
        <span style="color: #666666;">//如果选择的符号满足条件 </span>
        <span style="color: #0000ff;">if</span><span style="color: #008000;">&#40;</span> <span style="color: #008000;">&#40;</span>temp <span style="color: #000080;">=</span> symbollegal<span style="color: #008000;">&#40;</span>t,i,sum,layer<span style="color: #008000;">&#41;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">&#41;</span>
        <span style="color: #008000;">&#123;</span>
            <span style="color: #666666;">//标记该符号已经选择并修改sum值 </span>
            b<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span> <span style="color: #000080;">=</span> <span style="color: #0000dd;">1</span><span style="color: #008080;">;</span>
            sign <span style="color: #000080;">=</span> sum<span style="color: #008080;">;</span>
            sum <span style="color: #000080;">=</span> temp<span style="color: #008080;">;</span>
            <span style="color: #666666;">//结束条件：四个数都已经完成运算 </span>
            <span style="color: #0000ff;">if</span><span style="color: #008000;">&#40;</span>t <span style="color: #000080;">==</span> <span style="color: #0000dd;">3</span><span style="color: #008000;">&#41;</span>
            <span style="color: #008000;">&#123;</span>
                <span style="color: #666666;">//结果是24点，则打印 </span>
                <span style="color: #0000ff;">if</span><span style="color: #008000;">&#40;</span>sum<span style="color: #000080;">==</span><span style="color: #0000dd;">24</span><span style="color: #008000;">&#41;</span>
                <span style="color: #008000;">&#123;</span>
                    ok<span style="color: #000080;">=</span><span style="color: #0000dd;">0</span><span style="color: #008080;">;</span>
                    pri<span style="color: #008000;">&#40;</span>layer<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
                <span style="color: #008000;">&#125;</span>
            <span style="color: #008000;">&#125;</span>
            <span style="color: #0000ff;">else</span>
            <span style="color: #008000;">&#123;</span>
                find<span style="color: #008000;">&#40;</span>sum,t<span style="color: #000040;">+</span><span style="color: #0000dd;">1</span>,layer<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
            <span style="color: #008000;">&#125;</span>
            <span style="color: #666666;">//不符合条件，恢复该符号的访问权限与sum的值 </span>
            b<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span> <span style="color: #000080;">=</span> <span style="color: #0000dd;">0</span><span style="color: #008080;">;</span>
            sum <span style="color: #000080;">=</span> sign<span style="color: #008080;">;</span>
        <span style="color: #008000;">&#125;</span>
    <span style="color: #008000;">&#125;</span>
<span style="color: #008000;">&#125;</span>
<span style="color: #0000ff;">int</span> main<span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span>
<span style="color: #008000;">&#123;</span>
    <span style="color: #0000ff;">int</span> i,j<span style="color: #008080;">;</span>
    <span style="color: #0000ff;">for</span><span style="color: #008000;">&#40;</span>i<span style="color: #000080;">=</span><span style="color: #0000dd;">1</span><span style="color: #008080;">;</span>i<span style="color: #000080;">&lt;=</span><span style="color: #0000dd;">4</span><span style="color: #008080;">;</span><span style="color: #000040;">++</span>i<span style="color: #008000;">&#41;</span>
        <span style="color: #0000dd;">scanf</span><span style="color: #008000;">&#40;</span><span style="color: #FF0000;">&quot;%d&quot;</span>,<span style="color: #000040;">&amp;</span>num<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
    backtrack<span style="color: #008000;">&#40;</span><span style="color: #0000dd;">0</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
    <span style="color: #666666;">// 遍历所有的组合数 </span>
    <span style="color: #0000ff;">for</span><span style="color: #008000;">&#40;</span>i<span style="color: #000080;">=</span><span style="color: #0000dd;">0</span><span style="color: #008080;">;</span>i<span style="color: #000080;">&lt;</span>sum<span style="color: #008080;">;</span><span style="color: #000040;">++</span>i<span style="color: #008000;">&#41;</span>
    <span style="color: #008000;">&#123;</span>
        find<span style="color: #008000;">&#40;</span>arrange<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span><span style="color: #008000;">&#91;</span><span style="color: #0000dd;">0</span><span style="color: #008000;">&#93;</span>,<span style="color: #0000dd;">1</span>,i<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
    <span style="color: #008000;">&#125;</span>
    <span style="color: #0000ff;">if</span><span style="color: #008000;">&#40;</span>ok<span style="color: #008000;">&#41;</span>
    <span style="color: #008000;">&#123;</span>
        <span style="color: #0000dd;">printf</span><span style="color: #008000;">&#40;</span><span style="color: #FF0000;">&quot;No answer!<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
    <span style="color: #008000;">&#125;</span>
    <span style="color: #0000dd;">system</span><span style="color: #008000;">&#40;</span><span style="color: #FF0000;">&quot;pause&quot;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
    <span style="color: #0000ff;">return</span> <span style="color: #0000dd;">0</span><span style="color: #008080;">;</span>
<span style="color: #008000;">&#125;</span></pre></td></tr></table></div>

]]></content:encoded>
			<wfw:commentRss>http://www.joansky.com/24-c.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>POJ 3280 Cheapest Palindrome C++版</title>
		<link>http://www.joansky.com/poj-3280-cheapest-palindrome-c.html</link>
		<comments>http://www.joansky.com/poj-3280-cheapest-palindrome-c.html#comments</comments>
		<pubDate>Fri, 21 May 2010 12:13:59 +0000</pubDate>
		<dc:creator>Joan</dc:creator>
				<category><![CDATA[解题报告]]></category>
		<category><![CDATA[C]]></category>
		<category><![CDATA[poj]]></category>
		<category><![CDATA[动态]]></category>

		<guid isPermaLink="false">http://www.joansky.com/?p=94</guid>
		<description><![CDATA[动态规划，回文数 Description Keeping track of all the cows can be a tricky task so Farmer John has installed a system to automate it. He has installed on each cow an electronic ID tag that the system will read as the cows pass by a scanner. Each ID tag's contents are currently a single string with [...]]]></description>
			<content:encoded><![CDATA[<p>动态规划，回文数</p>
<p><span id="more-94"></span></p>
<p>Description</p>
<p>Keeping track of all the cows can be a tricky task so Farmer John has installed a system to automate it. He has installed on each cow an electronic ID tag that the system will read as the cows pass by a scanner. Each ID tag's contents are currently a single string with length M (1 ≤ M ≤ 2,000) characters drawn from an alphabet of N (1 ≤ N ≤ 26) different symbols (namely, the lower-case roman alphabet).</p>
<p>Cows, being the mischievous creatures they are, sometimes try to spoof the system by walking backwards. While a cow whose ID is "abcba" would read the same no matter which direction the she walks, a cow with the ID "abcb" can potentially register as two different IDs ("abcb" and "bcba").</p>
<p>FJ would like to change the cows's ID tags so they read the same no matter which direction the cow walks by. For example, "abcb" can be changed by adding "a" at the end to form "abcba" so that the ID is palindromic (reads the same forwards and backwards). Some other ways to change the ID to be palindromic are include adding the three letters "bcb" to the begining to yield the ID "bcbabcb" or removing the letter "a" to yield the ID "bcb". One can add or remove characters at any location in the string yielding a string longer or shorter than the original string.</p>
<p>Unfortunately as the ID tags are electronic, each character insertion or deletion has a cost (0 ≤ cost ≤ 10,000) which varies depending on exactly which character value to be added or deleted. Given the content of a cow's ID tag and the cost of inserting or deleting each of the alphabet's characters, find the minimum cost to change the ID tag so it satisfies FJ's requirements. An empty ID tag is considered to satisfy the requirements of reading the same forward and backward. Only letters with associated costs can be added to a string.</p>
<p>Input</p>
<p>Line 1: Two space-separated integers: N and M<br />
Line 2: This line contains exactly M characters which constitute the initial ID string<br />
Lines 3..N+2: Each line contains three space-separated entities: a character of the input alphabet and two integers which are respectively the cost of adding and deleting that character.</p>
<p>Output</p>
<p>Line 1: A single line with a single integer that is the minimum cost to change the given name tag.</p>
<p>Sample Input</p>
<p>3 4<br />
abcb<br />
a 1000 1100<br />
b 350 700<br />
c 200 800</p>
<p>Sample Output</p>
<p>900</p>
<p><span style="color: #0000ff;">题目大意：<br />
长度为M的字符串，可以增加或删除字符，使其构成回文，增加或删除不同的字符有不同的花费，求最小花费。</p>
<p>解题思路：</p>
<p>f[i,j]表示在i，j区间内构成回文数的最小花费。</p>
<p>如果str[i]!=str[j],有四种情况可构成回文数，在f[i,j-1]添加或删除str[i]和在f[i-1,j]添加或删除str[j]。添加和删除性质是一样的，选择添加还是删除取决于两者的花费大小，因此在保存字母花费值时，只需保存较小的。这样只要在f[i,j-1]+cost[str[j]]和f[i+1,j]+cost[str[i]]选择最小，问题就解决了。</p>
<p>如果str[i]=str[j]，那么有两种情况构成回文数，即字符串保持不变和删除第i和第j个，也就是选择f[i,j]与f[i+1,j-1]中的最小值</p>
<p>动态转移方程：</p>
<p>f[i,j]= min{f[i,j-1]+cost[str[j]],f[i+1,j]+cost[str[i]]} ; str[i]!=str[j]<br />
f[i,j] = min{f[i,j],f[i+1,j-1]}                                    ; str[i] =str[j]</span></p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
</pre></td><td class="code"><pre class="cpp" style="font-family:Verdana,Courier New;"><span style="color: #339900;">#include &lt;iostream&gt;</span>
<span style="color: #339900;">#include &lt;string&gt;</span>
&nbsp;
<span style="color: #0000ff;">using</span> <span style="color: #0000ff;">namespace</span> std<span style="color: #008080;">;</span>
&nbsp;
<span style="color: #0000ff;">const</span> <span style="color: #0000ff;">int</span> size <span style="color: #000080;">=</span> <span style="color: #0000dd;">2005</span><span style="color: #008080;">;</span>
<span style="color: #0000ff;">int</span> f<span style="color: #008000;">&#91;</span>size<span style="color: #008000;">&#93;</span><span style="color: #008000;">&#91;</span>size<span style="color: #008000;">&#93;</span> <span style="color: #000080;">=</span> <span style="color: #008000;">&#123;</span><span style="color: #0000dd;">0</span><span style="color: #008000;">&#125;</span><span style="color: #008080;">;</span>
&nbsp;
<span style="color: #0000ff;">int</span> main<span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span>
<span style="color: #008000;">&#123;</span>
    <span style="color: #0000ff;">int</span> n,m,add,cut<span style="color: #008080;">;</span>
    <span style="color: #0000ff;">char</span> s<span style="color: #008080;">;</span>
    string str<span style="color: #008080;">;</span>
    <span style="color: #0000ff;">int</span> cost<span style="color: #008000;">&#91;</span><span style="color: #0000dd;">150</span><span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span>    
    <span style="color: #0000dd;">cin</span><span style="color: #000080;">&gt;&gt;</span>n<span style="color: #000080;">&gt;&gt;</span>m<span style="color: #008080;">;</span>
    <span style="color: #0000dd;">cin</span><span style="color: #000080;">&gt;&gt;</span>str<span style="color: #008080;">;</span>
    <span style="color: #0000ff;">for</span> <span style="color: #008000;">&#40;</span><span style="color: #0000ff;">int</span> i<span style="color: #000080;">=</span><span style="color: #0000dd;">0</span><span style="color: #008080;">;</span>i<span style="color: #000080;">&lt;</span>n<span style="color: #008080;">;</span><span style="color: #000040;">++</span>i<span style="color: #008000;">&#41;</span>
    <span style="color: #008000;">&#123;</span>
        <span style="color: #0000dd;">cin</span><span style="color: #000080;">&gt;&gt;</span>s<span style="color: #000080;">&gt;&gt;</span>add<span style="color: #000080;">&gt;&gt;</span>cut<span style="color: #008080;">;</span>
        <span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span>add<span style="color: #000080;">&gt;</span>cut<span style="color: #008000;">&#41;</span>
        <span style="color: #008000;">&#123;</span>
            cost<span style="color: #008000;">&#91;</span>s<span style="color: #008000;">&#93;</span> <span style="color: #000080;">=</span> cut<span style="color: #008080;">;</span>
        <span style="color: #008000;">&#125;</span>
        <span style="color: #0000ff;">else</span> cost<span style="color: #008000;">&#91;</span>s<span style="color: #008000;">&#93;</span> <span style="color: #000080;">=</span> add<span style="color: #008080;">;</span>
    <span style="color: #008000;">&#125;</span>
    <span style="color: #0000ff;">for</span> <span style="color: #008000;">&#40;</span><span style="color: #0000ff;">int</span> j<span style="color: #000080;">=</span><span style="color: #0000dd;">0</span><span style="color: #008080;">;</span>j<span style="color: #000080;">&lt;</span>m<span style="color: #008080;">;</span><span style="color: #000040;">++</span>j<span style="color: #008000;">&#41;</span>
    <span style="color: #008000;">&#123;</span>
        <span style="color: #0000ff;">for</span> <span style="color: #008000;">&#40;</span><span style="color: #0000ff;">int</span> i <span style="color: #000080;">=</span>j<span style="color: #000040;">-</span><span style="color: #0000dd;">1</span><span style="color: #008080;">;</span>i<span style="color: #000080;">&gt;=</span><span style="color: #0000dd;">0</span><span style="color: #008080;">;</span><span style="color: #000040;">--</span>i<span style="color: #008000;">&#41;</span>
        <span style="color: #008000;">&#123;</span>
            <span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span>f<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span><span style="color: #008000;">&#91;</span>j<span style="color: #000040;">-</span><span style="color: #0000dd;">1</span><span style="color: #008000;">&#93;</span><span style="color: #000040;">+</span>cost<span style="color: #008000;">&#91;</span>str<span style="color: #008000;">&#91;</span>j<span style="color: #008000;">&#93;</span><span style="color: #008000;">&#93;</span><span style="color: #000080;">&gt;</span>f<span style="color: #008000;">&#91;</span>i<span style="color: #000040;">+</span><span style="color: #0000dd;">1</span><span style="color: #008000;">&#93;</span><span style="color: #008000;">&#91;</span>j<span style="color: #008000;">&#93;</span><span style="color: #000040;">+</span>cost<span style="color: #008000;">&#91;</span>str<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span><span style="color: #008000;">&#93;</span><span style="color: #008000;">&#41;</span>
            <span style="color: #008000;">&#123;</span>
                f<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span><span style="color: #008000;">&#91;</span>j<span style="color: #008000;">&#93;</span> <span style="color: #000080;">=</span> f<span style="color: #008000;">&#91;</span>i<span style="color: #000040;">+</span><span style="color: #0000dd;">1</span><span style="color: #008000;">&#93;</span><span style="color: #008000;">&#91;</span>j<span style="color: #008000;">&#93;</span><span style="color: #000040;">+</span>cost<span style="color: #008000;">&#91;</span>str<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span><span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span>
            <span style="color: #008000;">&#125;</span>
            <span style="color: #0000ff;">else</span> f<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span><span style="color: #008000;">&#91;</span>j<span style="color: #008000;">&#93;</span> <span style="color: #000080;">=</span> f<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span><span style="color: #008000;">&#91;</span>j<span style="color: #000040;">-</span><span style="color: #0000dd;">1</span><span style="color: #008000;">&#93;</span><span style="color: #000040;">+</span>cost<span style="color: #008000;">&#91;</span>str<span style="color: #008000;">&#91;</span>j<span style="color: #008000;">&#93;</span><span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span>
&nbsp;
            <span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span>str<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span><span style="color: #000080;">==</span>str<span style="color: #008000;">&#91;</span>j<span style="color: #008000;">&#93;</span><span style="color: #000040;">&amp;&amp;</span>f<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span><span style="color: #008000;">&#91;</span>j<span style="color: #008000;">&#93;</span><span style="color: #000080;">&gt;</span>f<span style="color: #008000;">&#91;</span>i<span style="color: #000040;">+</span><span style="color: #0000dd;">1</span><span style="color: #008000;">&#93;</span><span style="color: #008000;">&#91;</span>j<span style="color: #000040;">-</span><span style="color: #0000dd;">1</span><span style="color: #008000;">&#93;</span><span style="color: #008000;">&#41;</span>
            <span style="color: #008000;">&#123;</span>
                f<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span><span style="color: #008000;">&#91;</span>j<span style="color: #008000;">&#93;</span> <span style="color: #000080;">=</span> f<span style="color: #008000;">&#91;</span>i<span style="color: #000040;">+</span><span style="color: #0000dd;">1</span><span style="color: #008000;">&#93;</span><span style="color: #008000;">&#91;</span>j<span style="color: #000040;">-</span><span style="color: #0000dd;">1</span><span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span>
            <span style="color: #008000;">&#125;</span>
        <span style="color: #008000;">&#125;</span>
    <span style="color: #008000;">&#125;</span>
    <span style="color: #0000dd;">cout</span><span style="color: #000080;">&lt;&lt;</span> f<span style="color: #008000;">&#91;</span><span style="color: #0000dd;">0</span><span style="color: #008000;">&#93;</span><span style="color: #008000;">&#91;</span>m<span style="color: #000040;">-</span><span style="color: #0000dd;">1</span><span style="color: #008000;">&#93;</span> <span style="color: #000080;">&lt;&lt;</span>endl<span style="color: #008080;">;</span>
    <span style="color: #0000ff;">return</span> <span style="color: #0000dd;">0</span><span style="color: #008080;">;</span>
<span style="color: #008000;">&#125;</span></pre></td></tr></table></div>

]]></content:encoded>
			<wfw:commentRss>http://www.joansky.com/poj-3280-cheapest-palindrome-c.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>POJ 1163 The Triangle C版本</title>
		<link>http://www.joansky.com/poj-1163-the-triangle-c.html</link>
		<comments>http://www.joansky.com/poj-1163-the-triangle-c.html#comments</comments>
		<pubDate>Thu, 20 May 2010 04:38:06 +0000</pubDate>
		<dc:creator>Joan</dc:creator>
				<category><![CDATA[解题报告]]></category>
		<category><![CDATA[C]]></category>
		<category><![CDATA[poj]]></category>
		<category><![CDATA[动态]]></category>

		<guid isPermaLink="false">http://www.joansky.com/?p=93</guid>
		<description><![CDATA[动态规划，数学三角形 Description ........7 ......3   8 ....8   1   0 ..2   7   4   4 4   5   2   6   5 Figure 1 shows a number triangle. Write a program that calculates the highest sum of numbers passed on a route that starts at the top and ends somewhere on the base. Each step can go either diagonally down [...]]]></description>
			<content:encoded><![CDATA[<p>动态规划，数学三角形</p>
<p><span id="more-93"></span><br />
Description</p>
<p>........7<br />
......3   8<br />
....8   1   0<br />
..2   7   4   4<br />
4   5   2   6   5</p>
<p>Figure 1 shows a number triangle. Write a program that calculates the highest sum of numbers passed on a route that starts at the top and ends somewhere on the base. Each step can go either diagonally down to the left or diagonally down to the right.</p>
<p>Input</p>
<p>Your program is to read from standard input. The first line contains one integer N: the number of rows in the triangle. The following N lines describe the data of the triangle. The number of rows in the triangle is &gt; 1 but &lt;= 100. The numbers in the triangle, all integers, are between 0 and 99.</p>
<p>Output</p>
<p>Your program is to write to standard output. The highest sum is written as an integer.</p>
<p>Sample Input</p>
<p>5<br />
7<br />
3 8<br />
8 1 0<br />
2 7 4 4<br />
4 5 2 6 5</p>
<p>Sample Output</p>
<p>30</p>
<p><span style="color: #0000ff;">题目大意：</span></p>
<p><span style="color: #0000ff;">给定一个具有N层的数字三角形，从顶至底有多条路径，每一步可沿左斜线向下或沿右斜线向下，路径所经过的数字之和为路径得分，请求出最大路径得分。<br />
</span></p>
<p><span style="color: #0000ff;">状态转移方程:</span></p>
<p><span style="color: #0000ff;">f[k] = max{f[k+i+1],f[k+i]}</span></p>
<p><span style="color: #0000ff;">f[k]表示第k个数字到最底部的最大路径之和，i表示第i层</span></p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
</pre></td><td class="code"><pre class="cpp" style="font-family:Verdana,Courier New;"><span style="color: #339900;">#include&lt;stdio.h&gt;</span>
&nbsp;
<span style="color: #0000ff;">int</span> main<span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span>
<span style="color: #008000;">&#123;</span>
    <span style="color: #0000ff;">int</span> n,k,i,j,sum,f<span style="color: #008000;">&#91;</span><span style="color: #0000dd;">10010</span><span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span>
    <span style="color: #0000dd;">scanf</span><span style="color: #008000;">&#40;</span><span style="color: #FF0000;">&quot;%d&quot;</span>,<span style="color: #000040;">&amp;</span>n<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
    sum <span style="color: #000080;">=</span> <span style="color: #008000;">&#40;</span>n<span style="color: #000040;">*</span>n<span style="color: #000040;">+</span>n<span style="color: #008000;">&#41;</span><span style="color: #000040;">/</span><span style="color: #0000dd;">2</span><span style="color: #008080;">;</span>
    k <span style="color: #000080;">=</span> sum<span style="color: #000040;">-</span>n<span style="color: #008080;">;</span>
    <span style="color: #0000ff;">for</span><span style="color: #008000;">&#40;</span>i <span style="color: #000080;">=</span> <span style="color: #0000dd;">1</span><span style="color: #008080;">;</span>i<span style="color: #000080;">&lt;=</span>sum<span style="color: #008080;">;</span><span style="color: #000040;">++</span>i<span style="color: #008000;">&#41;</span>
    <span style="color: #008000;">&#123;</span>
        <span style="color: #0000dd;">scanf</span><span style="color: #008000;">&#40;</span><span style="color: #FF0000;">&quot;%d&quot;</span>,<span style="color: #000040;">&amp;</span>f<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
    <span style="color: #008000;">&#125;</span>
&nbsp;
    <span style="color: #0000ff;">for</span><span style="color: #008000;">&#40;</span>i<span style="color: #000080;">=</span>n<span style="color: #000040;">-</span><span style="color: #0000dd;">1</span><span style="color: #008080;">;</span>i<span style="color: #000080;">&gt;=</span><span style="color: #0000dd;">1</span><span style="color: #008080;">;</span><span style="color: #000040;">--</span>i<span style="color: #008000;">&#41;</span>
    <span style="color: #008000;">&#123;</span>
        <span style="color: #0000ff;">for</span><span style="color: #008000;">&#40;</span>j<span style="color: #000080;">=</span><span style="color: #0000dd;">1</span><span style="color: #008080;">;</span>j<span style="color: #000080;">&lt;=</span>i<span style="color: #008080;">;</span><span style="color: #000040;">++</span>j<span style="color: #008000;">&#41;</span>
        <span style="color: #008000;">&#123;</span>
            <span style="color: #666666;">//找出第k个数字到底部的最短路径得分 </span>
            <span style="color: #0000ff;">if</span><span style="color: #008000;">&#40;</span>f<span style="color: #008000;">&#91;</span>k<span style="color: #000040;">+</span>i<span style="color: #008000;">&#93;</span><span style="color: #000080;">&lt;</span>f<span style="color: #008000;">&#91;</span>k<span style="color: #000040;">+</span>i<span style="color: #000040;">+</span><span style="color: #0000dd;">1</span><span style="color: #008000;">&#93;</span><span style="color: #008000;">&#41;</span>
            <span style="color: #008000;">&#123;</span>
                f<span style="color: #008000;">&#91;</span>k<span style="color: #008000;">&#93;</span> <span style="color: #000040;">+</span><span style="color: #000080;">=</span> f<span style="color: #008000;">&#91;</span>k<span style="color: #000040;">+</span>i<span style="color: #000040;">+</span><span style="color: #0000dd;">1</span><span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span>
            <span style="color: #008000;">&#125;</span>
            <span style="color: #0000ff;">else</span> 
            <span style="color: #008000;">&#123;</span>
                f<span style="color: #008000;">&#91;</span>k<span style="color: #008000;">&#93;</span> <span style="color: #000040;">+</span><span style="color: #000080;">=</span> f<span style="color: #008000;">&#91;</span>k<span style="color: #000040;">+</span>i<span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span>
            <span style="color: #008000;">&#125;</span>
            <span style="color: #000040;">--</span>k<span style="color: #008080;">;</span>
        <span style="color: #008000;">&#125;</span>
&nbsp;
    <span style="color: #008000;">&#125;</span>
    <span style="color: #0000dd;">printf</span><span style="color: #008000;">&#40;</span><span style="color: #FF0000;">&quot;%d<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span>,f<span style="color: #008000;">&#91;</span><span style="color: #0000dd;">1</span><span style="color: #008000;">&#93;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
    <span style="color: #0000dd;">system</span><span style="color: #008000;">&#40;</span><span style="color: #FF0000;">&quot;pause&quot;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
    <span style="color: #0000ff;">return</span> <span style="color: #0000dd;">0</span><span style="color: #008080;">;</span>
<span style="color: #008000;">&#125;</span></pre></td></tr></table></div>

]]></content:encoded>
			<wfw:commentRss>http://www.joansky.com/poj-1163-the-triangle-c.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>五一，阳朔游玩 漓江,银子岩,图腾古道,大榕树</title>
		<link>http://www.joansky.com/travel-yangshuo.html</link>
		<comments>http://www.joansky.com/travel-yangshuo.html#comments</comments>
		<pubDate>Fri, 07 May 2010 06:41:12 +0000</pubDate>
		<dc:creator>Joan</dc:creator>
				<category><![CDATA[生活琐事]]></category>
		<category><![CDATA[旅游]]></category>
		<category><![CDATA[生活]]></category>

		<guid isPermaLink="false">http://www.joansky.com/?p=92</guid>
		<description><![CDATA[今年劳动节，约了几位好朋友一起到阳朔游玩。在北师大商务中心找的旅游团，晚上坐车（估计为了省钱，车一直走国道，颠死我了），次日早晨6点多到了酒店。 吃完早餐，前往漓江，乘竹筏观赏——“桂林山水甲天下 ，阳朔山水甲桂林，群山倒水山浮影，无山无水不入神”。 我还是喜欢使用船桨划动的竹筏。发动机的汽油味让我感到很不舒服。 下午参观了银子岩 银子岩贯穿于十二座山峰，属层楼式溶洞，现已开发游程约2000米，分为下洞、大厅、上洞三个部分，汇集了不同地质年代发育生长的钟乳石，像银子、似钻石，晶莹剔透、雄奇幽美。特色景点数十个，以音乐石屏、瑶池仙境、雪山飞瀑“三绝”和佛祖论经、独柱擎天、混元珍珠伞 “三宝”等为代表，让您领略到大自然的鬼斧神工。被法国地质岩溶专家誉为“世界溶洞奇观”。 我觉得这混元珍珠伞更像一种海鱼 第二天，从旅店出发，骑单车前往图腾古道，位于广西壮族自治区桂林市阳朔县著名的“十里画廊”中，属国家AAA级旅游区。 图腾古道景区展出的有石器、陶器、自然图腾柱、古老的弓弩、让人听不懂念念有词充满野性诱惑的肢体语言等原始生活场景，再现了反映了12000-7000年前桂林先民甄皮岩人居住、生活、宗教、狩猎和墓穴文化。 最后一个景点区——大榕树，相传是广西壮族歌仙留三姐与情人阿牛哥的定情处。 在寺庙里拿了生肖符，许了个愿。其实大榕树没什么看头 留了个Logo ps：阳朔——减肥之旅，意外生病。]]></description>
			<content:encoded><![CDATA[<p>今年劳动节，约了几位好朋友一起到阳朔游玩。在北师大商务中心找的旅游团，晚上坐车（估计为了省钱，车一直走国道，颠死我了），次日早晨6点多到了酒店。</p>
<p>吃完早餐，前往漓江，乘竹筏观赏——“桂林山水甲天下 ，阳朔山水甲桂林，群山倒水山浮影，无山无水不入神”。</p>
<p><img class="alignnone size-full wp-image-89" title="游漓江" src="http://www.joansky.com/wp-content/uploads/2010/05/IMG_2407.JPG" alt="游漓江" width="550" height="412" /></p>
<p>我还是喜欢使用船桨划动的竹筏。发动机的汽油味让我感到很不舒服。</p>
<p>下午参观了银子岩</p>
<blockquote><p>银子岩贯穿于十二座山峰，属层楼式溶洞，现已开发游程约2000米，分为下洞、大厅、上洞三个部分，汇集了不同地质年代发育生长的钟乳石，像银子、似钻石，晶莹剔透、雄奇幽美。特色景点数十个，以音乐石屏、瑶池仙境、雪山飞瀑“三绝”和佛祖论经、独柱擎天、混元珍珠伞 “三宝”等为代表，让您领略到大自然的鬼斧神工。被法国地质岩溶专家誉为“世界溶洞奇观”。</p>
</blockquote>
<p><img class="alignnone size-full wp-image-90" title="混元珍珠伞" src="http://www.joansky.com/wp-content/uploads/2010/05/IMG_2499.JPG" alt="珍珠混元伞" width="309" height="412" /></p>
<p>我觉得这混元珍珠伞更像一种海鱼</p>
<p>第二天，从旅店出发，骑单车前往图腾古道，位于广西壮族自治区桂林市阳朔县著名的“十里画廊”中，属国家AAA级旅游区。</p>
<blockquote><p>图腾古道景区展出的有石器、陶器、自然图腾柱、古老的弓弩、让人听不懂念念有词充满野性诱惑的肢体语言等原始生活场景，再现了反映了12000-7000年前桂林先民甄皮岩人居住、生活、宗教、狩猎和墓穴文化。</p>
</blockquote>
<p>最后一个景点区——大榕树，相传是广西壮族歌仙留三姐与情人阿牛哥的定情处。</p>
<p>在寺庙里拿了生肖符，许了个愿。其实大榕树没什么看头</p>
<p><img class="alignnone size-full wp-image-91" title="大榕树" src="http://www.joansky.com/wp-content/uploads/2010/05/IMG_2592.JPG" alt="大榕树" width="550" height="412" /></p>
<p>留了个Logo</p>
<p>ps：阳朔——减肥之旅，意外生病。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.joansky.com/travel-yangshuo.html/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>重载+操作符 C++</title>
		<link>http://www.joansky.com/overload-c.html</link>
		<comments>http://www.joansky.com/overload-c.html#comments</comments>
		<pubDate>Fri, 23 Apr 2010 16:02:54 +0000</pubDate>
		<dc:creator>Joan</dc:creator>
				<category><![CDATA[编程相关]]></category>
		<category><![CDATA[C]]></category>
		<category><![CDATA[总结]]></category>

		<guid isPermaLink="false">http://www.joansky.com/?p=88</guid>
		<description><![CDATA[今天上c++课，老师讨论到的问题，在这里做下笔记 1 2 3 4 5 6 7 8 9 10 11 12 13 //comple.h class comple &#123; friend comple operator+&#40;const comple&#38; lhs,const comple&#38; rhs&#41;; public: comple&#40;void&#41;; comple&#40;int&#41;; ~comple&#40;&#41;; comple&#40;const comple&#38; orig&#41;; private: int real; &#160; &#125;; 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 [...]]]></description>
			<content:encoded><![CDATA[<p>今天上c++课，老师讨论到的问题，在这里做下笔记</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
</pre></td><td class="code"><pre class="cpp" style="font-family:Verdana,Courier New;"><span style="color: #666666;">//comple.h</span>
<span style="color: #0000ff;">class</span> comple
<span style="color: #008000;">&#123;</span>
    <span style="color: #0000ff;">friend</span> comple operator<span style="color: #000040;">+</span><span style="color: #008000;">&#40;</span><span style="color: #0000ff;">const</span> comple<span style="color: #000040;">&amp;</span> lhs,<span style="color: #0000ff;">const</span> comple<span style="color: #000040;">&amp;</span> rhs<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
<span style="color: #0000ff;">public</span><span style="color: #008080;">:</span>
    comple<span style="color: #008000;">&#40;</span><span style="color: #0000ff;">void</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
    comple<span style="color: #008000;">&#40;</span><span style="color: #0000ff;">int</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
    ~comple<span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
    comple<span style="color: #008000;">&#40;</span><span style="color: #0000ff;">const</span> comple<span style="color: #000040;">&amp;</span> orig<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
<span style="color: #0000ff;">private</span><span style="color: #008080;">:</span>
    <span style="color: #0000ff;">int</span> real<span style="color: #008080;">;</span>
&nbsp;
<span style="color: #008000;">&#125;</span><span style="color: #008080;">;</span></pre></td></tr></table></div>


<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
</pre></td><td class="code"><pre class="cpp" style="font-family:Verdana,Courier New;"><span style="color: #666666;">//comple.cpp</span>
<span style="color: #339900;">#include &quot;stdafx.h&quot;</span>
<span style="color: #339900;">#include &lt;iostream&gt;</span>
<span style="color: #339900;">#include &quot;comple.h&quot;</span>
<span style="color: #0000ff;">using</span> <span style="color: #0000ff;">namespace</span> std<span style="color: #008080;">;</span>
comple<span style="color: #008080;">::</span><span style="color: #007788;">comple</span><span style="color: #008000;">&#40;</span> <span style="color: #0000ff;">void</span> <span style="color: #008000;">&#41;</span>
<span style="color: #008080;">:</span>real<span style="color: #008000;">&#40;</span><span style="color: #0000dd;">0</span><span style="color: #008000;">&#41;</span>
<span style="color: #008000;">&#123;</span>
    <span style="color: #0000dd;">cout</span><span style="color: #000080;">&lt;&lt;</span><span style="color: #0000dd;">this</span> <span style="color: #000080;">&lt;&lt;</span><span style="color: #FF0000;">&quot; of &quot;</span><span style="color: #000080;">&lt;&lt;</span>this<span style="color: #000040;">-</span><span style="color: #000080;">&gt;</span>real <span style="color: #000080;">&lt;&lt;</span><span style="color: #FF0000;">&quot; constructor is called&quot;</span><span style="color: #000080;">&lt;&lt;</span>endl<span style="color: #008080;">;</span>
&nbsp;
<span style="color: #008000;">&#125;</span>
&nbsp;
comple<span style="color: #008080;">::</span><span style="color: #007788;">comple</span><span style="color: #008000;">&#40;</span> <span style="color: #0000ff;">int</span> a<span style="color: #008000;">&#41;</span>
<span style="color: #008080;">:</span>real<span style="color: #008000;">&#40;</span>a<span style="color: #008000;">&#41;</span>
<span style="color: #008000;">&#123;</span>
    <span style="color: #0000dd;">cout</span><span style="color: #000080;">&lt;&lt;</span><span style="color: #0000dd;">this</span> <span style="color: #000080;">&lt;&lt;</span><span style="color: #FF0000;">&quot; of &quot;</span><span style="color: #000080;">&lt;&lt;</span>this<span style="color: #000040;">-</span><span style="color: #000080;">&gt;</span>real<span style="color: #000080;">&lt;&lt;</span><span style="color: #FF0000;">&quot; constructor is called&quot;</span><span style="color: #000080;">&lt;&lt;</span>endl<span style="color: #008080;">;</span>
&nbsp;
<span style="color: #008000;">&#125;</span>
&nbsp;
comple<span style="color: #008080;">::</span><span style="color: #007788;">comple</span><span style="color: #008000;">&#40;</span> <span style="color: #0000ff;">const</span> comple<span style="color: #000040;">&amp;</span> orig <span style="color: #008000;">&#41;</span>
<span style="color: #008000;">&#123;</span>
    <span style="color: #0000dd;">cout</span><span style="color: #000080;">&lt;&lt;</span><span style="color: #0000dd;">this</span> <span style="color: #000080;">&lt;&lt;</span><span style="color: #FF0000;">&quot; of &quot;</span><span style="color: #000080;">&lt;&lt;</span>orig.<span style="color: #007788;">real</span><span style="color: #000080;">&lt;&lt;</span><span style="color: #FF0000;">&quot; assignment is called&quot;</span><span style="color: #000080;">&lt;&lt;</span>endl<span style="color: #008080;">;</span>
    this<span style="color: #000040;">-</span><span style="color: #000080;">&gt;</span>real <span style="color: #000080;">=</span> orig.<span style="color: #007788;">real</span><span style="color: #008080;">;</span>
<span style="color: #008000;">&#125;</span>
comple<span style="color: #008080;">::</span>~comple<span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span>
<span style="color: #008000;">&#123;</span>
    <span style="color: #0000dd;">cout</span><span style="color: #000080;">&lt;&lt;</span><span style="color: #0000dd;">this</span> <span style="color: #000080;">&lt;&lt;</span><span style="color: #FF0000;">&quot; of &quot;</span><span style="color: #000080;">&lt;&lt;</span>this<span style="color: #000040;">-</span><span style="color: #000080;">&gt;</span>real<span style="color: #000080;">&lt;&lt;</span><span style="color: #FF0000;">&quot; destructor is called&quot;</span><span style="color: #000080;">&lt;&lt;</span>endl<span style="color: #008080;">;</span>
&nbsp;
&nbsp;
<span style="color: #008000;">&#125;</span>
comple operator<span style="color: #000040;">+</span><span style="color: #008000;">&#40;</span><span style="color: #0000ff;">const</span> comple<span style="color: #000040;">&amp;</span> lhs,<span style="color: #0000ff;">const</span> comple<span style="color: #000040;">&amp;</span> rhs<span style="color: #008000;">&#41;</span>
<span style="color: #008000;">&#123;</span>
    <span style="color: #0000dd;">cout</span><span style="color: #000080;">&lt;&lt;</span> <span style="color: #FF0000;">&quot;operator+ is called&quot;</span><span style="color: #000080;">&lt;&lt;</span>endl<span style="color: #008080;">;</span>
    comple a<span style="color: #008000;">&#40;</span>lhs.<span style="color: #007788;">real</span><span style="color: #000040;">+</span>rhs.<span style="color: #007788;">real</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
    <span style="color: #0000ff;">return</span> a<span style="color: #008080;">;</span>
<span style="color: #008000;">&#125;</span></pre></td></tr></table></div>


<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
</pre></td><td class="code"><pre class="cpp" style="font-family:Verdana,Courier New;"><span style="color: #666666;">//main.cpp</span>
<span style="color: #339900;">#include &quot;stdafx.h&quot;</span>
<span style="color: #339900;">#include &quot;comple.h&quot;</span>
<span style="color: #339900;">#include &lt;iostream&gt;</span>
&nbsp;
<span style="color: #0000ff;">using</span> <span style="color: #0000ff;">namespace</span> std<span style="color: #008080;">;</span>
<span style="color: #0000ff;">int</span> _tmain<span style="color: #008000;">&#40;</span><span style="color: #0000ff;">int</span> argc, _TCHAR<span style="color: #000040;">*</span> argv<span style="color: #008000;">&#91;</span><span style="color: #008000;">&#93;</span><span style="color: #008000;">&#41;</span>
<span style="color: #008000;">&#123;</span>
    comple a<span style="color: #008000;">&#40;</span><span style="color: #0000dd;">2</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
    a<span style="color: #000040;">+</span><span style="color: #0000dd;">5</span><span style="color: #008080;">;</span>
    <span style="color: #0000ff;">return</span> <span style="color: #0000dd;">0</span><span style="color: #008080;">;</span>
<span style="color: #008000;">&#125;</span></pre></td></tr></table></div>

<p>程序输出</p>
<p><span style="color: #0000ff;">001CFB90 of 2 constructor is called<br />
001CFAAC of 5 constructor is called<br />
operator+ is called<br />
001CFA70 of 7 constructor is called<br />
001CFAB8 of 7 assignment is called<br />
001CFA70 of 7 destructor is called<br />
001CFAB8 of 7 destructor is called<br />
001CFAAC of 5 destructor is called<br />
001CFB90 of 2 destructor is called</span></p>
<p>解释下这个程序的执行过程：首先调用带int的构造函数，然后执行a+5时，编译器会自动调用带int的构造函数对5进行隐式转化。接下来调用operater+，在这个函数中实例化了一个匿名对象，并将该对象复制一份返回。该函数结束后销毁局部栈上的变量，首先销毁复制的实例，再销毁匿名实例（先进后出）。程序结束后，销毁在本地栈上的元素。</p>
<p>能不能在comple后面加&amp;，即返回comple的引用。这样做是不行的，因为a是在局部栈上创建的变量，当该函数结束时，局部栈被销毁，即a被销毁，那么返回的对象将指向未知的内存；</p>
<p>如果变量是创建在堆上，那么可以返回该变量的引用，因为堆上的变量时需要程序员手动销毁的。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.joansky.com/overload-c.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>POJ 1182 食物链 C版本</title>
		<link>http://www.joansky.com/poj-1182-c.html</link>
		<comments>http://www.joansky.com/poj-1182-c.html#comments</comments>
		<pubDate>Fri, 16 Apr 2010 05:31:07 +0000</pubDate>
		<dc:creator>Joan</dc:creator>
				<category><![CDATA[解题报告]]></category>
		<category><![CDATA[C]]></category>
		<category><![CDATA[poj]]></category>

		<guid isPermaLink="false">http://www.joansky.com/?p=87</guid>
		<description><![CDATA[并查集的应用 Description 动物王国中有三类动物A,B,C，这三类动物的食物链构成了有趣的环形。A吃B， B吃C，C吃A。 现有N个动物，以1－N编号。每个动物都是A,B,C中的一种，但是我们并不知道它到底是哪一种。 有人用两种说法对这N个动物所构成的食物链关系进行描述： 第一种说法是"1 X Y"，表示X和Y是同类。 第二种说法是"2 X Y"，表示X吃Y。 此人对N个动物，用上述两种说法，一句接一句地说出K句话，这K句话有的是真的，有的是假的。当一句话满足下列三条之一时，这句话就是假话，否则就是真话。 1） 当前的话与前面的某些真的话冲突，就是假话； 2） 当前的话中X或Y比N大，就是假话； 3） 当前的话表示X吃X，就是假话。 你的任务是根据给定的N（1 &#60;= N &#60;= 50,000）和K句话（0 &#60;= K &#60;= 100,000），输出假话的总数。 Input 第一行是两个整数N和K，以一个空格分隔。 以下K行每行是三个正整数 D，X，Y，两数之间用一个空格隔开，其中D表示说法的种类。 若D=1，则表示X和Y是同类。 若D=2，则表示X吃Y。 Output 只有一个整数，表示假话的数目。 Sample Input 100 7 1 101 1 2 1 2 2 2 3 2 3 3 1 1 3 [...]]]></description>
			<content:encoded><![CDATA[<p>并查集的应用</p>
<p><span id="more-87"></span></p>
<p>Description</p>
<p>动物王国中有三类动物A,B,C，这三类动物的食物链构成了有趣的环形。A吃B， B吃C，C吃A。<br />
现有N个动物，以1－N编号。每个动物都是A,B,C中的一种，但是我们并不知道它到底是哪一种。<br />
有人用两种说法对这N个动物所构成的食物链关系进行描述：<br />
第一种说法是"1 X Y"，表示X和Y是同类。<br />
第二种说法是"2 X Y"，表示X吃Y。<br />
此人对N个动物，用上述两种说法，一句接一句地说出K句话，这K句话有的是真的，有的是假的。当一句话满足下列三条之一时，这句话就是假话，否则就是真话。<br />
1） 当前的话与前面的某些真的话冲突，就是假话；<br />
2） 当前的话中X或Y比N大，就是假话；<br />
3） 当前的话表示X吃X，就是假话。<br />
你的任务是根据给定的N（1 &lt;= N &lt;= 50,000）和K句话（0 &lt;= K &lt;= 100,000），输出假话的总数。</p>
<p>Input</p>
<p>第一行是两个整数N和K，以一个空格分隔。<br />
以下K行每行是三个正整数 D，X，Y，两数之间用一个空格隔开，其中D表示说法的种类。<br />
若D=1，则表示X和Y是同类。<br />
若D=2，则表示X吃Y。</p>
<p>Output<br />
只有一个整数，表示假话的数目。</p>
<p>Sample Input</p>
<p>100 7<br />
1 101 1<br />
2 1 2<br />
2 2 3<br />
2 3 3<br />
1 1 3<br />
2 3 1<br />
1 5 5</p>
<p>Sample Output</p>
<p>3</p>
<p>注：</p>
<p><span style="color: #0000ff;">rank[x]   表示x与father[x]的关系：</span></p>
<p><span style="color: #ff0000;">rank[x] == 0 表示x与 father[x] 是同类<br />
</span></p>
<p><span style="color: #ff0000;">rank[x] == 1 表示x吃 father[x]<br />
</span></p>
<p><span style="color: #ff0000;">rank[x] == 0 表示 father[x] 吃x</span></p>
<p><span style="color: #0000ff;">A吃B， B吃C，C吃A的关系可用矩阵表示如下</span></p>
<p style="padding-left: 30px; text-align: justify;"><span style="color: #ff0000;">A B C<br />
A 0  1  2<br />
B  2  0  1<br />
C  1  2  0</span></p>
<p style="text-align: justify;"><span style="color: #0000ff;">A吃B，即B是A的食物，假设 B为A的父节点，那么rank[A] = 1；</span></p>
<p style="text-align: justify;"><span style="color: #0000ff;">即 rank[A] = (rank[B] - rank[A] +3 +relation) %3 (relation 为B与A之间的关系)</span></p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
</pre></td><td class="code"><pre class="cpp" style="font-family:Verdana,Courier New;"><span style="color: #339900;">#include&lt;stdio.h&gt;</span>
<span style="color: #339900;">#define MAX 50005</span>
&nbsp;
<span style="color: #0000ff;">void</span> Make_Sent<span style="color: #008000;">&#40;</span><span style="color: #0000ff;">int</span> x<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
<span style="color: #0000ff;">int</span> Find_set<span style="color: #008000;">&#40;</span><span style="color: #0000ff;">int</span> x<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
<span style="color: #0000ff;">void</span> <span style="color: #0000ff;">Union</span><span style="color: #008000;">&#40;</span><span style="color: #0000ff;">int</span> x,<span style="color: #0000ff;">int</span> y,<span style="color: #0000ff;">int</span> d<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
&nbsp;
<span style="color: #0000ff;">int</span> father<span style="color: #008000;">&#91;</span>MAX<span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span>
<span style="color: #0000ff;">int</span> rank<span style="color: #008000;">&#91;</span>MAX<span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span>
<span style="color: #0000ff;">int</span> main<span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span>
<span style="color: #008000;">&#123;</span>
    <span style="color: #0000ff;">int</span> totle<span style="color: #000080;">=</span><span style="color: #0000dd;">0</span><span style="color: #008080;">;</span>
    <span style="color: #0000ff;">int</span> i,n,k,x,y,d,xf,yf<span style="color: #008080;">;</span>
    <span style="color: #0000dd;">scanf</span><span style="color: #008000;">&#40;</span><span style="color: #FF0000;">&quot;%d%d&quot;</span>,<span style="color: #000040;">&amp;</span>n,<span style="color: #000040;">&amp;</span>k<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
    <span style="color: #0000ff;">for</span><span style="color: #008000;">&#40;</span>i<span style="color: #000080;">=</span><span style="color: #0000dd;">1</span><span style="color: #008080;">;</span>i<span style="color: #000080;">&lt;=</span>n<span style="color: #008080;">;</span><span style="color: #000040;">++</span>i<span style="color: #008000;">&#41;</span>
    <span style="color: #008000;">&#123;</span>
        Make_Sent<span style="color: #008000;">&#40;</span>i<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
    <span style="color: #008000;">&#125;</span>
    <span style="color: #0000ff;">while</span><span style="color: #008000;">&#40;</span>k<span style="color: #000040;">--</span><span style="color: #008000;">&#41;</span>
    <span style="color: #008000;">&#123;</span>
        <span style="color: #0000dd;">scanf</span><span style="color: #008000;">&#40;</span><span style="color: #FF0000;">&quot;%d%d%d&quot;</span>,<span style="color: #000040;">&amp;</span>d,<span style="color: #000040;">&amp;</span>x,<span style="color: #000040;">&amp;</span>y<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
        <span style="color: #666666;">//如果x或y比n大，或x吃x，是假话 </span>
        <span style="color: #0000ff;">if</span><span style="color: #008000;">&#40;</span>x<span style="color: #000080;">&gt;</span>n<span style="color: #000040;">||</span>y<span style="color: #000080;">&gt;</span>n<span style="color: #000040;">||</span><span style="color: #008000;">&#40;</span>d<span style="color: #000080;">==</span><span style="color: #0000dd;">2</span> <span style="color: #000040;">&amp;&amp;</span> x <span style="color: #000080;">==</span> y<span style="color: #008000;">&#41;</span><span style="color: #008000;">&#41;</span>
        <span style="color: #008000;">&#123;</span>
            <span style="color: #000040;">++</span>totle<span style="color: #008080;">;</span>                 
        <span style="color: #008000;">&#125;</span>
        <span style="color: #0000ff;">else</span>
        <span style="color: #008000;">&#123;</span>
            xf <span style="color: #000080;">=</span> Find_set<span style="color: #008000;">&#40;</span>x<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
            yf <span style="color: #000080;">=</span> Find_set<span style="color: #008000;">&#40;</span>y<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
            <span style="color: #666666;">//如果x，f的父节点相同 ，那么可以判断给出的关系是否正确的 </span>
            <span style="color: #0000ff;">if</span><span style="color: #008000;">&#40;</span>xf <span style="color: #000080;">==</span> yf<span style="color: #008000;">&#41;</span>
            <span style="color: #008000;">&#123;</span>
                <span style="color: #0000ff;">if</span><span style="color: #008000;">&#40;</span><span style="color: #008000;">&#40;</span>rank<span style="color: #008000;">&#91;</span>x<span style="color: #008000;">&#93;</span><span style="color: #000040;">-</span>rank<span style="color: #008000;">&#91;</span>y<span style="color: #008000;">&#93;</span><span style="color: #000040;">+</span><span style="color: #0000dd;">3</span><span style="color: #008000;">&#41;</span><span style="color: #000040;">%</span><span style="color:#800080;">3</span> <span style="color: #000040;">!</span><span style="color: #000080;">=</span> d<span style="color: #000040;">-</span><span style="color: #0000dd;">1</span><span style="color: #008000;">&#41;</span>
                    <span style="color: #000040;">++</span>totle<span style="color: #008080;">;</span>                              
            <span style="color: #008000;">&#125;</span>
            <span style="color: #0000ff;">else</span>
            <span style="color: #008000;">&#123;</span>
                <span style="color: #666666;">//否则合并x，y </span>
                <span style="color: #0000ff;">Union</span><span style="color: #008000;">&#40;</span>x,y,d<span style="color: #000040;">-</span><span style="color: #0000dd;">1</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
            <span style="color: #008000;">&#125;</span>
        <span style="color: #008000;">&#125;</span>
    <span style="color: #008000;">&#125;</span>
    <span style="color: #0000dd;">printf</span><span style="color: #008000;">&#40;</span><span style="color: #FF0000;">&quot;%d<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span>,totle<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
    <span style="color: #666666;">//system(&quot;pause&quot;);</span>
<span style="color: #008000;">&#125;</span>
&nbsp;
<span style="color: #666666;">//初始化集合 </span>
<span style="color: #0000ff;">void</span> Make_Sent<span style="color: #008000;">&#40;</span><span style="color: #0000ff;">int</span> x<span style="color: #008000;">&#41;</span>
<span style="color: #008000;">&#123;</span>
    father<span style="color: #008000;">&#91;</span>x<span style="color: #008000;">&#93;</span><span style="color: #000080;">=</span>x<span style="color: #008080;">;</span>
    rank<span style="color: #008000;">&#91;</span>x<span style="color: #008000;">&#93;</span><span style="color: #000080;">=</span><span style="color: #0000dd;">0</span><span style="color: #008080;">;</span>
<span style="color: #008000;">&#125;</span>
&nbsp;
<span style="color: #666666;">//查找x的集合，回溯时压缩路径，并修改x与father[x]的关系 </span>
<span style="color: #0000ff;">int</span> Find_set<span style="color: #008000;">&#40;</span><span style="color: #0000ff;">int</span> x<span style="color: #008000;">&#41;</span>
<span style="color: #008000;">&#123;</span>
    <span style="color: #0000ff;">int</span> t<span style="color: #008080;">;</span> 
    <span style="color: #0000ff;">if</span><span style="color: #008000;">&#40;</span>x<span style="color: #000040;">!</span><span style="color: #000080;">=</span>father<span style="color: #008000;">&#91;</span>x<span style="color: #008000;">&#93;</span><span style="color: #008000;">&#41;</span>
    <span style="color: #008000;">&#123;</span>
        t <span style="color: #000080;">=</span> father<span style="color: #008000;">&#91;</span>x<span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span>
        father<span style="color: #008000;">&#91;</span>x<span style="color: #008000;">&#93;</span><span style="color: #000080;">=</span> Find_set<span style="color: #008000;">&#40;</span>father<span style="color: #008000;">&#91;</span>x<span style="color: #008000;">&#93;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
        <span style="color: #666666;">//更新x与father[X]的关系 </span>
        rank<span style="color: #008000;">&#91;</span>x<span style="color: #008000;">&#93;</span> <span style="color: #000080;">=</span> <span style="color: #008000;">&#40;</span>rank<span style="color: #008000;">&#91;</span>x<span style="color: #008000;">&#93;</span><span style="color: #000040;">+</span>rank<span style="color: #008000;">&#91;</span>t<span style="color: #008000;">&#93;</span><span style="color: #008000;">&#41;</span><span style="color: #000040;">%</span><span style="color:#800080;">3</span><span style="color: #008080;">;</span>
    <span style="color: #008000;">&#125;</span>
    <span style="color: #0000ff;">return</span> father<span style="color: #008000;">&#91;</span>x<span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span>
<span style="color: #008000;">&#125;</span>
<span style="color: #666666;">//合并x,y所在的集合 </span>
<span style="color: #0000ff;">void</span> <span style="color: #0000ff;">Union</span><span style="color: #008000;">&#40;</span><span style="color: #0000ff;">int</span> x,<span style="color: #0000ff;">int</span> y,<span style="color: #0000ff;">int</span> d<span style="color: #008000;">&#41;</span>
<span style="color: #008000;">&#123;</span>
    <span style="color: #0000ff;">int</span> xf <span style="color: #000080;">=</span> Find_set<span style="color: #008000;">&#40;</span>x<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
    <span style="color: #0000ff;">int</span> yf <span style="color: #000080;">=</span> Find_set<span style="color: #008000;">&#40;</span>y<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
    <span style="color: #666666;">//将集合xf合并到yf集合上 </span>
    father<span style="color: #008000;">&#91;</span>xf<span style="color: #008000;">&#93;</span> <span style="color: #000080;">=</span> yf<span style="color: #008080;">;</span>
    <span style="color: #666666;">//更新 xf 与father[xf]的关系 </span>
    rank<span style="color: #008000;">&#91;</span>xf<span style="color: #008000;">&#93;</span><span style="color: #000080;">=</span><span style="color: #008000;">&#40;</span>rank<span style="color: #008000;">&#91;</span>y<span style="color: #008000;">&#93;</span><span style="color: #000040;">-</span>rank<span style="color: #008000;">&#91;</span>x<span style="color: #008000;">&#93;</span><span style="color: #000040;">+</span><span style="color: #0000dd;">3</span><span style="color: #000040;">+</span>d<span style="color: #008000;">&#41;</span><span style="color: #000040;">%</span><span style="color:#800080;">3</span><span style="color: #008080;">;</span>
<span style="color: #008000;">&#125;</span></pre></td></tr></table></div>

]]></content:encoded>
			<wfw:commentRss>http://www.joansky.com/poj-1182-c.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>POJ 1979 Red and Black C++版</title>
		<link>http://www.joansky.com/poj-1979-red-and-black-c.html</link>
		<comments>http://www.joansky.com/poj-1979-red-and-black-c.html#comments</comments>
		<pubDate>Thu, 15 Apr 2010 11:36:41 +0000</pubDate>
		<dc:creator>Joan</dc:creator>
				<category><![CDATA[解题报告]]></category>
		<category><![CDATA[C]]></category>
		<category><![CDATA[poj]]></category>

		<guid isPermaLink="false">http://www.joansky.com/?p=86</guid>
		<description><![CDATA[广度优先搜索的应用 Description There is a rectangular room, covered with square tiles. Each tile is colored either red or black. A man is standing on a black tile. From a tile, he can move to one of four adjacent tiles. But he can't move on red tiles, he can move only on black tiles. Write a [...]]]></description>
			<content:encoded><![CDATA[<p>广度优先搜索的应用</p>
<p><span id="more-86"></span></p>
<p>Description</p>
<p>There is a rectangular room, covered with square tiles. Each tile is colored either red or black. A man is standing on a black tile. From a tile, he can move to one of four adjacent tiles. But he can't move on red tiles, he can move only on black tiles.</p>
<p>Write a program to count the number of black tiles which he can reach by repeating the moves described above.</p>
<p>Input<br />
The input consists of multiple data sets. A data set starts with a line containing two positive integers W and H; W and H are the numbers of tiles in the x- and y- directions, respectively. W and H are not more than 20.</p>
<p>There are H more lines in the data set, each of which includes W characters. Each character represents the color of a tile as follows.</p>
<p>'.' - a black tile<br />
'#' - a red tile<br />
'@' - a man on a black tile(appears exactly once in a data set)<br />
The end of the input is indicated by a line consisting of two zeros.</p>
<p>Output</p>
<p>For each data set, your program should output a line which contains the number of tiles he can reach from the initial tile (including itself).</p>
<p>Sample Input</p>
<p>6 9<br />
....#.<br />
.....#<br />
......<br />
......<br />
......<br />
......<br />
......<br />
#@...#<br />
.#..#.<br />
11 9<br />
.#.........<br />
.#.#######.<br />
.#.#.....#.<br />
.#.#.###.#.<br />
.#.#..@#.#.<br />
.#.#####.#.<br />
.#.......#.<br />
.#########.<br />
...........<br />
11 6<br />
..#..#..#..<br />
..#..#..#..<br />
..#..#..###<br />
..#..#..#@.<br />
..#..#..#..<br />
..#..#..#..<br />
7 7<br />
..#.#..<br />
..#.#..<br />
###.###<br />
...@...<br />
###.###<br />
..#.#..<br />
..#.#..<br />
0 0</p>
<p>Sample Output</p>
<p>45<br />
59<br />
6<br />
13</p>
<p><span style="color: #0000ff;">题意：一个矩阵，‘#’表示砖块不能走，‘.’表示此砖块可走，问从‘@’处出发，有多少砖块能走（遍历到）</span></p>
<p><span style="color: #0000ff;">解题思路：广度搜索；向四个方向搜，已搜过的砖块需要标记下，不能重复计算走过的砖块</span></p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
</pre></td><td class="code"><pre class="cpp" style="font-family:Verdana,Courier New;"><span style="color: #339900;">#include &lt;iostream&gt;</span>
<span style="color: #0000ff;">using</span> <span style="color: #0000ff;">namespace</span> std<span style="color: #008080;">;</span>
&nbsp;
<span style="color: #0000ff;">char</span> a<span style="color: #008000;">&#91;</span><span style="color: #0000dd;">21</span><span style="color: #008000;">&#93;</span><span style="color: #008000;">&#91;</span><span style="color: #0000dd;">21</span><span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span>
<span style="color: #0000ff;">int</span> w,h<span style="color: #008080;">;</span>
&nbsp;
<span style="color: #0000ff;">int</span>  find<span style="color: #008000;">&#40;</span><span style="color: #0000ff;">int</span> x,<span style="color: #0000ff;">int</span> y<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
&nbsp;
<span style="color: #0000ff;">int</span> main<span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span>
<span style="color: #008000;">&#123;</span>
&nbsp;
    <span style="color: #0000ff;">while</span><span style="color: #008000;">&#40;</span><span style="color: #0000dd;">1</span><span style="color: #008000;">&#41;</span>
    <span style="color: #008000;">&#123;</span>
        <span style="color: #0000dd;">cin</span><span style="color: #000080;">&gt;&gt;</span>w<span style="color: #000080;">&gt;&gt;</span>h<span style="color: #008080;">;</span>
        <span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span>w<span style="color: #000080;">==</span><span style="color: #0000dd;">0</span> <span style="color: #000040;">||</span> h <span style="color: #000080;">==</span><span style="color: #0000dd;">0</span><span style="color: #008000;">&#41;</span>
        <span style="color: #008000;">&#123;</span>
            <span style="color: #0000ff;">break</span><span style="color: #008080;">;</span>
        <span style="color: #008000;">&#125;</span>
        <span style="color: #0000ff;">for</span> <span style="color: #008000;">&#40;</span><span style="color: #0000ff;">int</span> i<span style="color: #000080;">=</span><span style="color: #0000dd;">0</span><span style="color: #008080;">;</span>i<span style="color: #000080;">&lt;</span>h<span style="color: #008080;">;</span><span style="color: #000040;">++</span>i<span style="color: #008000;">&#41;</span>
        <span style="color: #008000;">&#123;</span>
            <span style="color: #0000dd;">cin</span><span style="color: #000080;">&gt;&gt;</span>a<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span>
        <span style="color: #008000;">&#125;</span>
        <span style="color: #0000ff;">for</span><span style="color: #008000;">&#40;</span><span style="color: #0000ff;">int</span> i <span style="color: #000080;">=</span> <span style="color: #0000dd;">0</span><span style="color: #008080;">;</span>i<span style="color: #000080;">&lt;</span>h<span style="color: #008080;">;</span><span style="color: #000040;">++</span>i<span style="color: #008000;">&#41;</span>
        <span style="color: #008000;">&#123;</span>
            <span style="color: #0000ff;">for</span><span style="color: #008000;">&#40;</span><span style="color: #0000ff;">int</span> j <span style="color: #000080;">=</span> <span style="color: #0000dd;">0</span><span style="color: #008080;">;</span>j<span style="color: #000080;">&lt;</span>w<span style="color: #008080;">;</span><span style="color: #000040;">++</span>j<span style="color: #008000;">&#41;</span>
            <span style="color: #008000;">&#123;</span>
                <span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span>a<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span><span style="color: #008000;">&#91;</span>j<span style="color: #008000;">&#93;</span><span style="color: #000080;">==</span><span style="color: #FF0000;">'@'</span><span style="color: #008000;">&#41;</span>
                <span style="color: #008000;">&#123;</span>
                    <span style="color: #0000dd;">printf</span><span style="color: #008000;">&#40;</span><span style="color: #FF0000;">&quot;%d<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span>,find<span style="color: #008000;">&#40;</span>i,j<span style="color: #008000;">&#41;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
                <span style="color: #008000;">&#125;</span>
            <span style="color: #008000;">&#125;</span>
        <span style="color: #008000;">&#125;</span>
    <span style="color: #008000;">&#125;</span>
    <span style="color: #0000ff;">return</span> <span style="color: #0000dd;">0</span><span style="color: #008080;">;</span>
<span style="color: #008000;">&#125;</span>
&nbsp;
<span style="color: #666666;">//bfs运用</span>
<span style="color: #0000ff;">int</span>  find<span style="color: #008000;">&#40;</span><span style="color: #0000ff;">int</span> x,<span style="color: #0000ff;">int</span> y<span style="color: #008000;">&#41;</span>
<span style="color: #008000;">&#123;</span>
    <span style="color: #666666;">//如果x,y超出矩阵范围，结束递归</span>
    <span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span>x<span style="color: #000080;">&lt;</span><span style="color: #0000dd;">0</span> <span style="color: #000040;">||</span> x<span style="color: #000080;">&gt;=</span>h <span style="color: #000040;">||</span> y<span style="color: #000080;">&lt;</span><span style="color: #0000dd;">0</span> <span style="color: #000040;">||</span> y<span style="color: #000080;">&gt;=</span>w<span style="color: #008000;">&#41;</span>
    <span style="color: #008000;">&#123;</span>
        <span style="color: #0000ff;">return</span> <span style="color: #0000dd;">0</span><span style="color: #008080;">;</span>
    <span style="color: #008000;">&#125;</span>
    <span style="color: #666666;">//遇到红色块，结束递归</span>
    <span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span>a<span style="color: #008000;">&#91;</span>x<span style="color: #008000;">&#93;</span><span style="color: #008000;">&#91;</span>y<span style="color: #008000;">&#93;</span><span style="color: #000080;">==</span><span style="color: #FF0000;">'#'</span><span style="color: #008000;">&#41;</span>
    <span style="color: #008000;">&#123;</span>
        <span style="color: #0000ff;">return</span> <span style="color: #0000dd;">0</span><span style="color: #008080;">;</span>
    <span style="color: #008000;">&#125;</span>
    <span style="color: #0000ff;">else</span>
    <span style="color: #008000;">&#123;</span>
        <span style="color: #666666;">//标记当前砖块已走过</span>
        a<span style="color: #008000;">&#91;</span>x<span style="color: #008000;">&#93;</span><span style="color: #008000;">&#91;</span>y<span style="color: #008000;">&#93;</span><span style="color: #000080;">=</span><span style="color: #FF0000;">'#'</span><span style="color: #008080;">;</span>
        <span style="color: #666666;">//分别向四个方面搜索</span>
        <span style="color: #0000ff;">return</span> <span style="color: #0000dd;">1</span><span style="color: #000040;">+</span>find<span style="color: #008000;">&#40;</span>x<span style="color: #000040;">+</span><span style="color: #0000dd;">1</span>,y<span style="color: #008000;">&#41;</span><span style="color: #000040;">+</span>find<span style="color: #008000;">&#40;</span>x<span style="color: #000040;">-</span><span style="color: #0000dd;">1</span>,y<span style="color: #008000;">&#41;</span><span style="color: #000040;">+</span>find<span style="color: #008000;">&#40;</span>x,y<span style="color: #000040;">+</span><span style="color: #0000dd;">1</span><span style="color: #008000;">&#41;</span><span style="color: #000040;">+</span>find<span style="color: #008000;">&#40;</span>x,y<span style="color: #000040;">-</span><span style="color: #0000dd;">1</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
    <span style="color: #008000;">&#125;</span>
<span style="color: #008000;">&#125;</span></pre></td></tr></table></div>

]]></content:encoded>
			<wfw:commentRss>http://www.joansky.com/poj-1979-red-and-black-c.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>POJ 1065 Wooden Sticks C++版本</title>
		<link>http://www.joansky.com/poj-1065-wooden-sticks-c.html</link>
		<comments>http://www.joansky.com/poj-1065-wooden-sticks-c.html#comments</comments>
		<pubDate>Sat, 10 Apr 2010 06:45:04 +0000</pubDate>
		<dc:creator>Joan</dc:creator>
				<category><![CDATA[解题报告]]></category>
		<category><![CDATA[C]]></category>
		<category><![CDATA[poj]]></category>

		<guid isPermaLink="false">http://www.joansky.com/?p=85</guid>
		<description><![CDATA[贪心算法的运用 Description There is a pile of n wooden sticks. The length and weight of each stick are known in advance. The sticks are to be processed by a woodworking machine in one by one fashion. It needs some time, called setup time, for the machine to prepare processing a stick. The setup times are [...]]]></description>
			<content:encoded><![CDATA[<p>贪心算法的运用<br />
<span id="more-85"></span><br />
Description</p>
<p>There is a pile of n wooden sticks. The length and weight of each stick are known in advance. The sticks are to be processed by a woodworking machine in one by one fashion. It needs some time, called setup time, for the machine to prepare processing a stick. The setup times are associated with cleaning operations and changing tools and shapes in the machine. The setup times of the woodworking machine are given as follows:<br />
(a) The setup time for the first wooden stick is 1 minute.<br />
(b) Right after processing a stick of length l and weight w , the machine will need no setup time for a stick of length l' and weight w' if l &lt;= l' and w &lt;= w'. Otherwise, it will need 1 minute for setup.<br />
You are to find the minimum setup time to process a given pile of n wooden sticks. For example, if you have five sticks whose pairs of length and weight are ( 9 , 4 ) , ( 2 , 5 ) , ( 1 , 2 ) , ( 5 , 3 ) , and ( 4 , 1 ) , then the minimum setup time should be 2 minutes since there is a sequence of pairs ( 4 , 1 ) , ( 5 , 3 ) , ( 9 , 4 ) , ( 1 , 2 ) , ( 2 , 5 ) .</p>
<p>Input</p>
<p>The input consists of T test cases. The number of test cases (T) is given in the first line of the input file. Each test case consists of two lines: The first line has an integer n , 1 &lt;= n &lt;= 5000 , that represents the number of wooden sticks in the test case, and the second line contains 2n positive integers l1 , w1 , l2 , w2 ,..., ln , wn , each of magnitude at most 10000 , where li and wi are the length and weight of the i th wooden stick, respectively. The 2n integers are delimited by one or more spaces.</p>
<p>Output</p>
<p>The output should contain the minimum setup time in minutes, one per line.</p>
<p>Sample Input</p>
<p>3<br />
5<br />
4 9 5 2 2 1 3 5 1 4<br />
3<br />
2 2 1 1 2 2<br />
3<br />
1 3 2 2 3 1</p>
<p>Sample Output</p>
<p>2<br />
1<br />
3</p>
<p>题意：</p>
<p>有n根木棍，每根木棍有不同的长度和重量。用一台机器来处理这些木棍，当第i+1根木棍的长度&gt;=第i根木棍的长度 &amp;&amp; 第i+1根木棍的重量&gt;=第i根木棍的重量时，机器处理木棍的单位时间setup time加1，求出处理完n根木棍所需要的最少时间</p>
<p>解题思路：</p>
<p><span style="color: #0000ff;">按木棍的长度从小到大排序，当木棍长度相等时，按重量小到大排序。然后依次选择比当前长度大的木棍（已经对木棍进行排序，每次选择都是对后面影响最小的），对选过的木棍进行标记。一轮之后，setup time+1，再对剩下的木棍进行选择，即可得到最优解。</span></p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
</pre></td><td class="code"><pre class="cpp" style="font-family:Verdana,Courier New;"><span style="color: #339900;">#include &lt;iostream&gt;</span>
<span style="color: #0000ff;">using</span> <span style="color: #0000ff;">namespace</span> std<span style="color: #008080;">;</span>
&nbsp;
<span style="color: #0000ff;">int</span> work<span style="color: #008000;">&#40;</span><span style="color: #0000ff;">int</span> m<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
<span style="color: #0000ff;">struct</span> wood   
<span style="color: #008000;">&#123;</span>
    <span style="color: #0000ff;">int</span> l<span style="color: #008080;">;</span>
    <span style="color: #0000ff;">int</span> w<span style="color: #008080;">;</span>
<span style="color: #008000;">&#125;</span>st<span style="color: #008000;">&#91;</span><span style="color: #0000dd;">5005</span><span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span>
&nbsp;
<span style="color: #666666;">//比较函数</span>
<span style="color: #0000ff;">int</span> cmp<span style="color: #008000;">&#40;</span><span style="color: #0000ff;">const</span> <span style="color: #0000ff;">void</span> <span style="color: #000040;">*</span>a ,<span style="color: #0000ff;">const</span> <span style="color: #0000ff;">void</span> <span style="color: #000040;">*</span>b<span style="color: #008000;">&#41;</span>
<span style="color: #008000;">&#123;</span>
    <span style="color: #0000ff;">if</span><span style="color: #008000;">&#40;</span><span style="color: #008000;">&#40;</span><span style="color: #000040;">*</span><span style="color: #008000;">&#40;</span>wood <span style="color: #000040;">*</span><span style="color: #008000;">&#41;</span>a<span style="color: #008000;">&#41;</span>.<span style="color: #007788;">l</span><span style="color: #000080;">==</span><span style="color: #008000;">&#40;</span><span style="color: #000040;">*</span><span style="color: #008000;">&#40;</span>wood<span style="color: #000040;">*</span><span style="color: #008000;">&#41;</span>b<span style="color: #008000;">&#41;</span>.<span style="color: #007788;">l</span><span style="color: #008000;">&#41;</span>
        <span style="color: #0000ff;">return</span> <span style="color: #008000;">&#40;</span><span style="color: #000040;">*</span><span style="color: #008000;">&#40;</span>wood <span style="color: #000040;">*</span><span style="color: #008000;">&#41;</span>a<span style="color: #008000;">&#41;</span>.<span style="color: #007788;">w</span> <span style="color: #000040;">-</span><span style="color: #008000;">&#40;</span><span style="color: #000040;">*</span><span style="color: #008000;">&#40;</span>wood <span style="color: #000040;">*</span><span style="color: #008000;">&#41;</span>b<span style="color: #008000;">&#41;</span>.<span style="color: #007788;">w</span><span style="color: #008080;">;</span>
    <span style="color: #0000ff;">return</span> <span style="color: #008000;">&#40;</span><span style="color: #000040;">*</span><span style="color: #008000;">&#40;</span>wood <span style="color: #000040;">*</span><span style="color: #008000;">&#41;</span>a<span style="color: #008000;">&#41;</span>.<span style="color: #007788;">l</span> <span style="color: #000040;">-</span> <span style="color: #008000;">&#40;</span><span style="color: #000040;">*</span><span style="color: #008000;">&#40;</span>wood <span style="color: #000040;">*</span><span style="color: #008000;">&#41;</span>b<span style="color: #008000;">&#41;</span>.<span style="color: #007788;">l</span><span style="color: #008080;">;</span>
<span style="color: #008000;">&#125;</span>
&nbsp;
<span style="color: #0000ff;">int</span> main<span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span>
<span style="color: #008000;">&#123;</span>
    <span style="color: #0000ff;">int</span> n,m<span style="color: #008080;">;</span>
    <span style="color: #0000dd;">cin</span><span style="color: #000080;">&gt;&gt;</span>n<span style="color: #008080;">;</span>
    <span style="color: #0000ff;">while</span> <span style="color: #008000;">&#40;</span>n<span style="color: #000040;">--</span><span style="color: #008000;">&#41;</span>
    <span style="color: #008000;">&#123;</span>
        <span style="color: #0000dd;">cin</span><span style="color: #000080;">&gt;&gt;</span>m<span style="color: #008080;">;</span>
        <span style="color: #0000ff;">for</span> <span style="color: #008000;">&#40;</span><span style="color: #0000ff;">int</span> i<span style="color: #000080;">=</span><span style="color: #0000dd;">0</span><span style="color: #008080;">;</span>i<span style="color: #000080;">&lt;</span>m<span style="color: #008080;">;</span><span style="color: #000040;">++</span>i<span style="color: #008000;">&#41;</span>
        <span style="color: #008000;">&#123;</span>
            <span style="color: #0000dd;">cin</span><span style="color: #000080;">&gt;&gt;</span>st<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span>.<span style="color: #007788;">l</span><span style="color: #000080;">&gt;&gt;</span>st<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span>.<span style="color: #007788;">w</span><span style="color: #008080;">;</span>
        <span style="color: #008000;">&#125;</span>
        <span style="color: #0000dd;">qsort</span><span style="color: #008000;">&#40;</span>st,m,<span style="color: #0000dd;">sizeof</span><span style="color: #008000;">&#40;</span>st<span style="color: #008000;">&#91;</span><span style="color: #0000dd;">0</span><span style="color: #008000;">&#93;</span><span style="color: #008000;">&#41;</span>,cmp<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
        <span style="color: #0000dd;">cout</span><span style="color: #000080;">&lt;&lt;</span>work<span style="color: #008000;">&#40;</span>m<span style="color: #008000;">&#41;</span><span style="color: #000080;">&lt;&lt;</span>endl<span style="color: #008080;">;</span>
    <span style="color: #008000;">&#125;</span>
    <span style="color: #0000ff;">return</span> <span style="color: #0000dd;">0</span><span style="color: #008080;">;</span>
<span style="color: #008000;">&#125;</span>
&nbsp;
&nbsp;
<span style="color: #0000ff;">int</span> work<span style="color: #008000;">&#40;</span><span style="color: #0000ff;">int</span> m<span style="color: #008000;">&#41;</span>
<span style="color: #008000;">&#123;</span>
    <span style="color: #0000ff;">int</span> temp<span style="color: #008080;">;</span>
    <span style="color: #0000ff;">int</span> sum<span style="color: #000080;">=</span><span style="color: #0000dd;">0</span><span style="color: #008080;">;</span>
    <span style="color: #0000ff;">for</span> <span style="color: #008000;">&#40;</span><span style="color: #0000ff;">int</span> i <span style="color: #000080;">=</span><span style="color: #0000dd;">0</span><span style="color: #008080;">;</span>i<span style="color: #000080;">&lt;</span>m<span style="color: #008080;">;</span><span style="color: #000040;">++</span>i<span style="color: #008000;">&#41;</span>
    <span style="color: #008000;">&#123;</span>
        <span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span>st<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span>.<span style="color: #007788;">w</span><span style="color: #000040;">!</span><span style="color: #000080;">=</span><span style="color: #000040;">-</span><span style="color: #0000dd;">1</span><span style="color: #008000;">&#41;</span>
        <span style="color: #008000;">&#123;</span>
            temp <span style="color: #000080;">=</span> st<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span>.<span style="color: #007788;">w</span><span style="color: #008080;">;</span>
            sum<span style="color: #000040;">++</span><span style="color: #008080;">;</span>
            <span style="color: #0000ff;">for</span> <span style="color: #008000;">&#40;</span><span style="color: #0000ff;">int</span> j<span style="color: #000080;">=</span>i<span style="color: #000040;">+</span><span style="color: #0000dd;">1</span><span style="color: #008080;">;</span>j<span style="color: #000080;">&lt;</span>m<span style="color: #008080;">;</span><span style="color: #000040;">++</span>j<span style="color: #008000;">&#41;</span>
            <span style="color: #008000;">&#123;</span>
                <span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span>st<span style="color: #008000;">&#91;</span>j<span style="color: #008000;">&#93;</span>.<span style="color: #007788;">w</span><span style="color: #000080;">&gt;=</span>temp<span style="color: #008000;">&#41;</span>
                <span style="color: #008000;">&#123;</span>
                    temp<span style="color: #000080;">=</span>st<span style="color: #008000;">&#91;</span>j<span style="color: #008000;">&#93;</span>.<span style="color: #007788;">w</span><span style="color: #008080;">;</span>
                    st<span style="color: #008000;">&#91;</span>j<span style="color: #008000;">&#93;</span>.<span style="color: #007788;">w</span><span style="color: #000080;">=</span><span style="color: #000040;">-</span><span style="color: #0000dd;">1</span><span style="color: #008080;">;</span>
                <span style="color: #008000;">&#125;</span>
            <span style="color: #008000;">&#125;</span>
        <span style="color: #008000;">&#125;</span>
    <span style="color: #008000;">&#125;</span>
    <span style="color: #0000ff;">return</span> sum<span style="color: #008080;">;</span>
<span style="color: #008000;">&#125;</span></pre></td></tr></table></div>

]]></content:encoded>
			<wfw:commentRss>http://www.joansky.com/poj-1065-wooden-sticks-c.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>常用四种排序算法实现 C版本</title>
		<link>http://www.joansky.com/sort-c.html</link>
		<comments>http://www.joansky.com/sort-c.html#comments</comments>
		<pubDate>Sun, 28 Mar 2010 14:01:22 +0000</pubDate>
		<dc:creator>Joan</dc:creator>
				<category><![CDATA[编程相关]]></category>
		<category><![CDATA[C]]></category>
		<category><![CDATA[算法]]></category>

		<guid isPermaLink="false">http://www.joansky.com/?p=84</guid>
		<description><![CDATA[鉴于各种排序算法经常使用，把上学期c实践课实现冒泡排序，插入排序，快速排序，希尔排序的算法贴出来供参考 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 [...]]]></description>
			<content:encoded><![CDATA[<p>鉴于各种排序算法经常使用，把上学期c实践课实现冒泡排序，插入排序，快速排序，希尔排序的算法贴出来供参考</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
</pre></td><td class="code"><pre class="cpp" style="font-family:Verdana,Courier New;"> <span style="color: #339900;">#include&lt;stdio.h&gt;</span>
<span style="color: #339900;">#include&lt;stdlib.h&gt;</span>
<span style="color: #339900;">#define MAX 200</span>
<span style="color: #0000ff;">int</span> a<span style="color: #008000;">&#91;</span>MAX<span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span>
&nbsp;
<span style="color: #0000ff;">void</span> randsee<span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
<span style="color: #0000ff;">void</span> print<span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span> 
<span style="color: #0000ff;">void</span> bubblesort<span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
<span style="color: #0000ff;">void</span> insertsort<span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
<span style="color: #0000ff;">void</span> quickSort<span style="color: #008000;">&#40;</span><span style="color: #0000ff;">int</span> a<span style="color: #008000;">&#91;</span><span style="color: #008000;">&#93;</span>,<span style="color: #0000ff;">int</span> left,<span style="color: #0000ff;">int</span> right<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
<span style="color: #0000ff;">int</span> SortGroup<span style="color: #008000;">&#40;</span><span style="color: #0000ff;">int</span> pnData<span style="color: #008000;">&#91;</span><span style="color: #008000;">&#93;</span>, <span style="color: #0000ff;">int</span> nLen, <span style="color: #0000ff;">int</span> nBegin,<span style="color: #0000ff;">int</span> nStep<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
<span style="color: #0000ff;">int</span> ShellSort<span style="color: #008000;">&#40;</span><span style="color: #0000ff;">int</span> pnData<span style="color: #008000;">&#91;</span><span style="color: #008000;">&#93;</span>, <span style="color: #0000ff;">int</span> nLen<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
&nbsp;
<span style="color: #ff0000;">/*主函数*/</span>
<span style="color: #0000ff;">int</span> main<span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span>
<span style="color: #008000;">&#123;</span>
     <span style="color: #0000ff;">int</span> num<span style="color: #000080;">=</span><span style="color: #0000dd;">0</span><span style="color: #008080;">;</span>
     <span style="color: #0000ff;">while</span><span style="color: #008000;">&#40;</span><span style="color: #0000dd;">1</span><span style="color: #008000;">&#41;</span>
     <span style="color: #008000;">&#123;</span>
          <span style="color: #0000dd;">system</span><span style="color: #008000;">&#40;</span><span style="color: #FF0000;">&quot;cls&quot;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
          <span style="color: #0000dd;">printf</span><span style="color: #008000;">&#40;</span><span style="color: #FF0000;">&quot;1：生成随机数<span style="color: #000099; font-weight: bold;">\n</span>2：冒泡排序<span style="color: #000099; font-weight: bold;">\n</span>3；插入排序<span style="color: #000099; font-weight: bold;">\n</span>4；快速排序<span style="color: #000099; font-weight: bold;">\n</span>5；希尔排序<span style="color: #000099; font-weight: bold;">\n</span>6：打印随机数<span style="color: #000099; font-weight: bold;">\n</span>7：退出<span style="color: #000099; font-weight: bold;">\n</span>Input 1-7:<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
          <span style="color: #0000dd;">scanf</span><span style="color: #008000;">&#40;</span><span style="color: #FF0000;">&quot;%d&quot;</span>,<span style="color: #000040;">&amp;</span>num<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
          <span style="color: #0000ff;">switch</span><span style="color: #008000;">&#40;</span>num<span style="color: #008000;">&#41;</span>
          <span style="color: #008000;">&#123;</span>
          <span style="color: #0000ff;">case</span> <span style="color: #0000dd;">1</span><span style="color: #008080;">:</span>
               <span style="color: #0000dd;">system</span><span style="color: #008000;">&#40;</span><span style="color: #FF0000;">&quot;cls&quot;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
               randsee<span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
               <span style="color: #0000dd;">system</span><span style="color: #008000;">&#40;</span><span style="color: #FF0000;">&quot;pause&quot;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
               <span style="color: #0000ff;">break</span><span style="color: #008080;">;</span>
          <span style="color: #0000ff;">case</span> <span style="color: #0000dd;">2</span><span style="color: #008080;">:</span>
               <span style="color: #0000dd;">system</span><span style="color: #008000;">&#40;</span><span style="color: #FF0000;">&quot;cls&quot;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
               bubblesort<span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
               <span style="color: #0000dd;">system</span><span style="color: #008000;">&#40;</span><span style="color: #FF0000;">&quot;pause&quot;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
               <span style="color: #0000dd;">system</span><span style="color: #008000;">&#40;</span><span style="color: #FF0000;">&quot;cls&quot;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
               <span style="color: #0000ff;">break</span><span style="color: #008080;">;</span>
          <span style="color: #0000ff;">case</span> <span style="color: #0000dd;">3</span><span style="color: #008080;">:</span>
               <span style="color: #0000dd;">system</span><span style="color: #008000;">&#40;</span><span style="color: #FF0000;">&quot;cls&quot;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
               insertsort<span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
               <span style="color: #0000dd;">system</span><span style="color: #008000;">&#40;</span><span style="color: #FF0000;">&quot;pause&quot;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
               <span style="color: #0000dd;">system</span><span style="color: #008000;">&#40;</span><span style="color: #FF0000;">&quot;cls&quot;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
               <span style="color: #0000ff;">break</span><span style="color: #008080;">;</span>
          <span style="color: #0000ff;">case</span> <span style="color: #0000dd;">4</span><span style="color: #008080;">:</span>
               <span style="color: #0000dd;">system</span><span style="color: #008000;">&#40;</span><span style="color: #FF0000;">&quot;cls&quot;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
               quickSort<span style="color: #008000;">&#40;</span>a,<span style="color: #0000dd;">0</span>,MAX<span style="color: #000040;">-</span><span style="color: #0000dd;">1</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
               <span style="color: #0000dd;">system</span><span style="color: #008000;">&#40;</span><span style="color: #FF0000;">&quot;pause&quot;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
               <span style="color: #0000dd;">system</span><span style="color: #008000;">&#40;</span><span style="color: #FF0000;">&quot;cls&quot;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
               <span style="color: #0000ff;">break</span><span style="color: #008080;">;</span>
          <span style="color: #0000ff;">case</span> <span style="color: #0000dd;">5</span><span style="color: #008080;">:</span>
               <span style="color: #0000dd;">system</span><span style="color: #008000;">&#40;</span><span style="color: #FF0000;">&quot;cls&quot;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
               ShellSort<span style="color: #008000;">&#40;</span>a,MAX<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
               <span style="color: #0000dd;">system</span><span style="color: #008000;">&#40;</span><span style="color: #FF0000;">&quot;pause&quot;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
               <span style="color: #0000dd;">system</span><span style="color: #008000;">&#40;</span><span style="color: #FF0000;">&quot;cls&quot;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
               <span style="color: #0000ff;">break</span><span style="color: #008080;">;</span>
          <span style="color: #0000ff;">case</span> <span style="color: #0000dd;">6</span><span style="color: #008080;">:</span>
               <span style="color: #0000dd;">system</span><span style="color: #008000;">&#40;</span><span style="color: #FF0000;">&quot;cls&quot;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
               print<span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
               <span style="color: #0000dd;">system</span><span style="color: #008000;">&#40;</span><span style="color: #FF0000;">&quot;pause&quot;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
               <span style="color: #0000dd;">system</span><span style="color: #008000;">&#40;</span><span style="color: #FF0000;">&quot;cls&quot;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
               <span style="color: #0000ff;">break</span><span style="color: #008080;">;</span>
          <span style="color: #0000ff;">case</span> <span style="color: #0000dd;">7</span><span style="color: #008080;">:</span>
               <span style="color: #0000dd;">exit</span><span style="color: #008000;">&#40;</span><span style="color: #0000dd;">0</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
          <span style="color: #0000ff;">default</span><span style="color: #008080;">:</span>
               <span style="color: #0000dd;">system</span><span style="color: #008000;">&#40;</span><span style="color: #FF0000;">&quot;cls&quot;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
               <span style="color: #0000dd;">printf</span><span style="color: #008000;">&#40;</span><span style="color: #FF0000;">&quot;1：生成随机数<span style="color: #000099; font-weight: bold;">\n</span>2：冒泡排序<span style="color: #000099; font-weight: bold;">\n</span>3；插入排序<span style="color: #000099; font-weight: bold;">\n</span>4；快速排序<span style="color: #000099; font-weight: bold;">\n</span>5；希尔排序<span style="color: #000099; font-weight: bold;">\n</span>6：打印随机数<span style="color: #000099; font-weight: bold;">\n</span>7：退出<span style="color: #000099; font-weight: bold;">\n</span>Input 1-7:<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
               <span style="color: #0000ff;">break</span><span style="color: #008080;">;</span> 
          <span style="color: #008000;">&#125;</span>
     <span style="color: #008000;">&#125;</span>
     <span style="color: #0000dd;">system</span><span style="color: #008000;">&#40;</span><span style="color: #FF0000;">&quot;pause&quot;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
     <span style="color: #0000ff;">return</span> <span style="color: #0000dd;">0</span><span style="color: #008080;">;</span>
<span style="color: #008000;">&#125;</span>
&nbsp;
<span style="color: #ff0000;">/*产生随机数组*/</span>
<span style="color: #0000ff;">void</span> randsee<span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span>
<span style="color: #008000;">&#123;</span>
     <span style="color: #0000ff;">int</span> i<span style="color: #008080;">;</span>
     <span style="color: #0000dd;">srand</span><span style="color: #008000;">&#40;</span><span style="color: #0000dd;">time</span><span style="color: #008000;">&#40;</span><span style="color: #0000dd;">0</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
     <span style="color: #0000ff;">for</span><span style="color: #008000;">&#40;</span>i<span style="color: #000080;">=</span><span style="color: #0000dd;">0</span><span style="color: #008080;">;</span>i<span style="color: #000080;">&lt;</span>MAX<span style="color: #008080;">;</span>i<span style="color: #000040;">++</span><span style="color: #008000;">&#41;</span>
     <span style="color: #008000;">&#123;</span>
          a<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span><span style="color: #000080;">=</span><span style="color: #0000dd;">1</span><span style="color: #000040;">+</span><span style="color: #008000;">&#40;</span><span style="color: #0000dd;">rand</span><span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #000040;">%</span>MAX<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
     <span style="color: #008000;">&#125;</span>
<span style="color: #008000;">&#125;</span>
<span style="color: #ff0000;">/*打印随机数*/</span>
<span style="color: #0000ff;">void</span> print<span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span>
<span style="color: #008000;">&#123;</span>
     <span style="color: #0000ff;">int</span> i<span style="color: #008080;">;</span>
     <span style="color: #0000ff;">for</span><span style="color: #008000;">&#40;</span>i<span style="color: #000080;">=</span><span style="color: #0000dd;">1</span><span style="color: #008080;">;</span>i<span style="color: #000080;">&lt;=</span>MAX<span style="color: #008080;">;</span><span style="color: #000040;">++</span>i<span style="color: #008000;">&#41;</span>
     <span style="color: #008000;">&#123;</span>
          <span style="color: #0000dd;">printf</span><span style="color: #008000;">&#40;</span><span style="color: #FF0000;">&quot;%5d &quot;</span>,a<span style="color: #008000;">&#91;</span>i<span style="color: #000040;">-</span><span style="color: #0000dd;">1</span><span style="color: #008000;">&#93;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
          <span style="color: #0000ff;">if</span><span style="color: #008000;">&#40;</span>i<span style="color: #000040;">%</span><span style="color:#800080;">10</span><span style="color: #000080;">==</span><span style="color: #0000dd;">0</span><span style="color: #008000;">&#41;</span>
          <span style="color: #008000;">&#123;</span>
               <span style="color: #0000dd;">printf</span><span style="color: #008000;">&#40;</span><span style="color: #FF0000;">&quot;<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
          <span style="color: #008000;">&#125;</span>
     <span style="color: #008000;">&#125;</span>
<span style="color: #008000;">&#125;</span>
<span style="color: #ff0000;">/*冒泡排序*/</span>
<span style="color: #0000ff;">void</span> bubblesort<span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span>
<span style="color: #008000;">&#123;</span>
     <span style="color: #0000ff;">int</span> i,sign,j,temp<span style="color: #008080;">;</span>
     <span style="color: #0000ff;">for</span><span style="color: #008000;">&#40;</span>i<span style="color: #000080;">=</span><span style="color: #0000dd;">0</span><span style="color: #008080;">;</span>i<span style="color: #000080;">&lt;</span>MAX<span style="color: #000040;">-</span><span style="color: #0000dd;">2</span><span style="color: #008080;">;</span>i<span style="color: #000040;">++</span><span style="color: #008000;">&#41;</span>
     <span style="color: #008000;">&#123;</span>
          sign<span style="color: #000080;">=</span><span style="color: #0000dd;">1</span><span style="color: #008080;">;</span>
          <span style="color: #0000ff;">for</span><span style="color: #008000;">&#40;</span>j<span style="color: #000080;">=</span>MAX<span style="color: #000040;">-</span><span style="color: #0000dd;">1</span><span style="color: #008080;">;</span>j<span style="color: #000080;">&gt;=</span>i<span style="color: #008080;">;</span>j<span style="color: #000040;">--</span><span style="color: #008000;">&#41;</span>
          <span style="color: #008000;">&#123;</span>
               <span style="color: #0000ff;">if</span><span style="color: #008000;">&#40;</span>a<span style="color: #008000;">&#91;</span>j<span style="color: #000040;">+</span><span style="color: #0000dd;">1</span><span style="color: #008000;">&#93;</span><span style="color: #000080;">&lt;</span>a<span style="color: #008000;">&#91;</span>j<span style="color: #008000;">&#93;</span><span style="color: #008000;">&#41;</span>
               <span style="color: #008000;">&#123;</span>
                    temp<span style="color: #000080;">=</span>a<span style="color: #008000;">&#91;</span>j<span style="color: #000040;">+</span><span style="color: #0000dd;">1</span><span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span>
                    a<span style="color: #008000;">&#91;</span>j<span style="color: #000040;">+</span><span style="color: #0000dd;">1</span><span style="color: #008000;">&#93;</span><span style="color: #000080;">=</span>a<span style="color: #008000;">&#91;</span>j<span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span>
                    a<span style="color: #008000;">&#91;</span>j<span style="color: #008000;">&#93;</span><span style="color: #000080;">=</span>temp<span style="color: #008080;">;</span>
                    sign<span style="color: #000080;">=</span><span style="color: #0000dd;">0</span><span style="color: #008080;">;</span>
               <span style="color: #008000;">&#125;</span>
          <span style="color: #008000;">&#125;</span>
          <span style="color: #0000ff;">if</span><span style="color: #008000;">&#40;</span>sign<span style="color: #008000;">&#41;</span>
          <span style="color: #008000;">&#123;</span>
               <span style="color: #0000ff;">break</span><span style="color: #008080;">;</span>
          <span style="color: #008000;">&#125;</span>
     <span style="color: #008000;">&#125;</span>
<span style="color: #008000;">&#125;</span>
&nbsp;
<span style="color: #ff0000;">/*插入排序*/</span>
<span style="color: #0000ff;">void</span> insertsort<span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span>
<span style="color: #008000;">&#123;</span>
     <span style="color: #0000ff;">int</span> i,j,c<span style="color: #008080;">;</span>
     <span style="color: #0000ff;">for</span><span style="color: #008000;">&#40;</span>i<span style="color: #000080;">=</span><span style="color: #0000dd;">1</span><span style="color: #008080;">;</span>i<span style="color: #000080;">&lt;</span>MAX<span style="color: #008080;">;</span><span style="color: #000040;">++</span>i<span style="color: #008000;">&#41;</span>
     <span style="color: #008000;">&#123;</span>
          c<span style="color: #000080;">=</span>a<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span>
          j<span style="color: #000080;">=</span>i<span style="color: #000040;">-</span><span style="color: #0000dd;">1</span><span style="color: #008080;">;</span>
          <span style="color: #0000ff;">while</span><span style="color: #008000;">&#40;</span>j<span style="color: #000080;">&gt;=</span><span style="color: #0000dd;">0</span><span style="color: #000040;">&amp;&amp;</span>a<span style="color: #008000;">&#91;</span>j<span style="color: #008000;">&#93;</span><span style="color: #000080;">&gt;</span>c<span style="color: #008000;">&#41;</span>
          <span style="color: #008000;">&#123;</span>
               a<span style="color: #008000;">&#91;</span>j<span style="color: #000040;">+</span><span style="color: #0000dd;">1</span><span style="color: #008000;">&#93;</span><span style="color: #000080;">=</span>a<span style="color: #008000;">&#91;</span>j<span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span>
               j<span style="color: #000040;">--</span><span style="color: #008080;">;</span>
          <span style="color: #008000;">&#125;</span>
          a<span style="color: #008000;">&#91;</span>j<span style="color: #000040;">+</span><span style="color: #0000dd;">1</span><span style="color: #008000;">&#93;</span><span style="color: #000080;">=</span>c<span style="color: #008080;">;</span>
     <span style="color: #008000;">&#125;</span>
<span style="color: #008000;">&#125;</span>
&nbsp;
&nbsp;
<span style="color: #ff0000;">/*快速排序*/</span>
<span style="color: #0000ff;">void</span> quickSort<span style="color: #008000;">&#40;</span><span style="color: #0000ff;">int</span> a<span style="color: #008000;">&#91;</span><span style="color: #008000;">&#93;</span>,<span style="color: #0000ff;">int</span> left,<span style="color: #0000ff;">int</span> right<span style="color: #008000;">&#41;</span>
<span style="color: #008000;">&#123;</span>
     <span style="color: #0000ff;">int</span> i,j,temp<span style="color: #008080;">;</span>
     i<span style="color: #000080;">=</span>left<span style="color: #008080;">;</span>
     j<span style="color: #000080;">=</span>right<span style="color: #008080;">;</span>
     temp<span style="color: #000080;">=</span>a<span style="color: #008000;">&#91;</span>left<span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span>
     <span style="color: #0000ff;">if</span><span style="color: #008000;">&#40;</span>left<span style="color: #000080;">&gt;</span>right<span style="color: #008000;">&#41;</span>
          <span style="color: #0000ff;">return</span><span style="color: #008080;">;</span>
     <span style="color: #0000ff;">while</span><span style="color: #008000;">&#40;</span>i<span style="color: #000040;">!</span><span style="color: #000080;">=</span>j<span style="color: #008000;">&#41;</span>
     <span style="color: #008000;">&#123;</span>
          <span style="color: #0000ff;">while</span><span style="color: #008000;">&#40;</span>a<span style="color: #008000;">&#91;</span>j<span style="color: #008000;">&#93;</span><span style="color: #000080;">&gt;=</span>temp <span style="color: #000040;">&amp;&amp;</span> j<span style="color: #000080;">&gt;</span>i<span style="color: #008000;">&#41;</span>
               j<span style="color: #000040;">--</span><span style="color: #008080;">;</span>
          <span style="color: #0000ff;">if</span><span style="color: #008000;">&#40;</span>j<span style="color: #000080;">&gt;</span>i<span style="color: #008000;">&#41;</span>
               a<span style="color: #008000;">&#91;</span>i<span style="color: #000040;">++</span><span style="color: #008000;">&#93;</span><span style="color: #000080;">=</span>a<span style="color: #008000;">&#91;</span>j<span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span>
          <span style="color: #0000ff;">while</span><span style="color: #008000;">&#40;</span>a<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span><span style="color: #000080;">&lt;=</span>temp <span style="color: #000040;">&amp;&amp;</span> j<span style="color: #000080;">&gt;</span>i<span style="color: #008000;">&#41;</span>
               i<span style="color: #000040;">++</span><span style="color: #008080;">;</span>
          <span style="color: #0000ff;">if</span><span style="color: #008000;">&#40;</span>j<span style="color: #000080;">&gt;</span>i<span style="color: #008000;">&#41;</span>
               a<span style="color: #008000;">&#91;</span>j<span style="color: #000040;">--</span><span style="color: #008000;">&#93;</span><span style="color: #000080;">=</span>a<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span>
&nbsp;
     <span style="color: #008000;">&#125;</span>
     a<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span><span style="color: #000080;">=</span>temp<span style="color: #008080;">;</span>
     quickSort<span style="color: #008000;">&#40;</span>a,left,i<span style="color: #000040;">-</span><span style="color: #0000dd;">1</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
     quickSort<span style="color: #008000;">&#40;</span>a,i<span style="color: #000040;">+</span><span style="color: #0000dd;">1</span>,right<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
<span style="color: #008000;">&#125;</span>
&nbsp;
&nbsp;
<span style="color: #0000ff;">int</span> SortGroup<span style="color: #008000;">&#40;</span><span style="color: #0000ff;">int</span> pnData<span style="color: #008000;">&#91;</span><span style="color: #008000;">&#93;</span>, <span style="color: #0000ff;">int</span> nLen, <span style="color: #0000ff;">int</span> nBegin,<span style="color: #0000ff;">int</span> nStep<span style="color: #008000;">&#41;</span>
<span style="color: #008000;">&#123;</span>
     <span style="color: #0000ff;">int</span> i,j,k,nTemp<span style="color: #008080;">;</span>
     <span style="color: #0000ff;">for</span> <span style="color: #008000;">&#40;</span>i <span style="color: #000080;">=</span> nBegin <span style="color: #000040;">+</span> nStep<span style="color: #008080;">;</span> i <span style="color: #000080;">&lt;</span> nLen<span style="color: #008080;">;</span> i <span style="color: #000040;">+</span><span style="color: #000080;">=</span> nStep<span style="color: #008000;">&#41;</span>
     <span style="color: #008000;">&#123;</span>
          <span style="color: #0000ff;">for</span> <span style="color: #008000;">&#40;</span>j <span style="color: #000080;">=</span> nBegin<span style="color: #008080;">;</span> j <span style="color: #000080;">&lt;</span> i<span style="color: #008080;">;</span> j<span style="color: #000040;">+</span><span style="color: #000080;">=</span> nStep<span style="color: #008000;">&#41;</span>
          <span style="color: #008000;">&#123;</span>
               <span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span>pnData<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span> <span style="color: #000080;">&lt;</span> pnData<span style="color: #008000;">&#91;</span>j<span style="color: #008000;">&#93;</span><span style="color: #008000;">&#41;</span>
               <span style="color: #008000;">&#123;</span>
                    nTemp <span style="color: #000080;">=</span> pnData<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span>
                    <span style="color: #0000ff;">for</span> <span style="color: #008000;">&#40;</span>k <span style="color: #000080;">=</span> i<span style="color: #008080;">;</span> k <span style="color: #000080;">&gt;</span> j<span style="color: #008080;">;</span> k <span style="color: #000040;">-</span><span style="color: #000080;">=</span> nStep<span style="color: #008000;">&#41;</span>
                    <span style="color: #008000;">&#123;</span>
                         pnData<span style="color: #008000;">&#91;</span>k<span style="color: #008000;">&#93;</span> <span style="color: #000080;">=</span> pnData<span style="color: #008000;">&#91;</span>k <span style="color: #000040;">-</span> nStep<span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span>
                    <span style="color: #008000;">&#125;</span>
                    pnData<span style="color: #008000;">&#91;</span>j<span style="color: #008000;">&#93;</span> <span style="color: #000080;">=</span> nTemp<span style="color: #008080;">;</span>
               <span style="color: #008000;">&#125;</span>
          <span style="color: #008000;">&#125;</span>
     <span style="color: #008000;">&#125;</span>
     <span style="color: #0000ff;">return</span> <span style="color: #0000dd;">1</span><span style="color: #008080;">;</span>
<span style="color: #008000;">&#125;</span>
<span style="color: #ff0000;">/*希尔排序*/</span>
<span style="color: #0000ff;">int</span> ShellSort<span style="color: #008000;">&#40;</span><span style="color: #0000ff;">int</span> pnData<span style="color: #008000;">&#91;</span><span style="color: #008000;">&#93;</span>, <span style="color: #0000ff;">int</span> nLen<span style="color: #008000;">&#41;</span>
<span style="color: #008000;">&#123;</span>
     <span style="color: #0000ff;">int</span> nStep,i<span style="color: #008080;">;</span>
     <span style="color: #0000ff;">for</span> <span style="color: #008000;">&#40;</span>nStep <span style="color: #000080;">=</span> nLen <span style="color: #000040;">/</span> <span style="color: #0000dd;">2</span><span style="color: #008080;">;</span> nStep <span style="color: #000080;">&gt;</span> <span style="color: #0000dd;">0</span><span style="color: #008080;">;</span> nStep <span style="color: #000040;">/</span><span style="color: #000080;">=</span> <span style="color: #0000dd;">2</span><span style="color: #008000;">&#41;</span>
     <span style="color: #008000;">&#123;</span>
          <span style="color: #0000ff;">for</span> <span style="color: #008000;">&#40;</span>i <span style="color: #000080;">=</span> <span style="color: #0000dd;">0</span> <span style="color: #008080;">;</span>i <span style="color: #000080;">&lt;</span> nStep<span style="color: #008080;">;</span> <span style="color: #000040;">++</span>i<span style="color: #008000;">&#41;</span>
          <span style="color: #008000;">&#123;</span>
               SortGroup<span style="color: #008000;">&#40;</span>pnData, nLen, i, nStep<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
          <span style="color: #008000;">&#125;</span>
     <span style="color: #008000;">&#125;</span>
     <span style="color: #0000ff;">return</span> <span style="color: #0000dd;">1</span><span style="color: #008080;">;</span>
<span style="color: #008000;">&#125;</span></pre></td></tr></table></div>

]]></content:encoded>
			<wfw:commentRss>http://www.joansky.com/sort-c.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>分治法求数组中第k大的元素 C++版本</title>
		<link>http://www.joansky.com/max-c.html</link>
		<comments>http://www.joansky.com/max-c.html#comments</comments>
		<pubDate>Sun, 28 Mar 2010 13:49:20 +0000</pubDate>
		<dc:creator>Joan</dc:creator>
				<category><![CDATA[编程相关]]></category>
		<category><![CDATA[C]]></category>
		<category><![CDATA[算法]]></category>

		<guid isPermaLink="false">http://www.joansky.com/?p=83</guid>
		<description><![CDATA[分治法求数组中第k大的元素 思想：用快速排序定位数组中其中一个元素a按从小到大确定它在数组中的位置temp 当temp等于k时，那么这个元素就是我们要找的第k个大的元素 当temp大于k时，说明第k大的元素一定在a元素的左边，向左缩小查找范围 当temp小于k时，说明第k大的元素一定在a元素的右边，向右缩小查找范围 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 [...]]]></description>
			<content:encoded><![CDATA[<p>分治法求数组中第k大的元素</p>
<p>思想：用快速排序定位数组中其中一个元素a按从小到大确定它在数组中的位置temp</p>
<p><span style="color: #0000ff;">当temp等于k时，那么这个元素就是我们要找的第k个大的元素</span></p>
<p><span style="color: #0000ff;">当temp大于k时，说明第k大的元素一定在a元素的左边，向左缩小查找范围<br />
</span></p>
<p><span style="color: #0000ff;">当temp小于k时，说明第k大的元素一定在a元素的右边，向右缩小查找范围</span></p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
</pre></td><td class="code"><pre class="cpp" style="font-family:Verdana,Courier New;"><span style="color: #339900;">#include &quot;stdafx.h&quot;</span>
<span style="color: #339900;">#include &lt;iostream&gt;</span>
<span style="color: #0000ff;">using</span> <span style="color: #0000ff;">namespace</span> std<span style="color: #008080;">;</span>
&nbsp;
<span style="color: #0000ff;">int</span> quickSort<span style="color: #008000;">&#40;</span><span style="color: #0000ff;">int</span> <span style="color: #000040;">*</span>a,<span style="color: #0000ff;">int</span> left,<span style="color: #0000ff;">int</span> right<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
<span style="color: #0000ff;">int</span> search<span style="color: #008000;">&#40;</span><span style="color: #0000ff;">int</span> <span style="color: #000040;">*</span>a,<span style="color: #0000ff;">int</span> i,<span style="color: #0000ff;">int</span> j,<span style="color: #0000ff;">int</span> k<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
&nbsp;
<span style="color: #666666;">//主函数</span>
<span style="color: #0000ff;">int</span> _tmain<span style="color: #008000;">&#40;</span><span style="color: #0000ff;">int</span> argc, _TCHAR<span style="color: #000040;">*</span> argv<span style="color: #008000;">&#91;</span><span style="color: #008000;">&#93;</span><span style="color: #008000;">&#41;</span>
<span style="color: #008000;">&#123;</span>
     <span style="color: #0000ff;">int</span> n,k_max<span style="color: #008080;">;</span>
     <span style="color: #0000ff;">int</span> a<span style="color: #008000;">&#91;</span><span style="color: #0000dd;">100</span><span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span>
     <span style="color: #0000dd;">cin</span> <span style="color: #000080;">&gt;&gt;</span> n <span style="color: #008080;">;</span>
&nbsp;
     <span style="color: #0000ff;">for</span> <span style="color: #008000;">&#40;</span><span style="color: #0000ff;">int</span> i <span style="color: #000080;">=</span> <span style="color: #0000dd;">1</span><span style="color: #008080;">;</span> i <span style="color: #000080;">&lt;=</span> n<span style="color: #008080;">;</span> <span style="color: #000040;">++</span>i<span style="color: #008000;">&#41;</span>
     <span style="color: #008000;">&#123;</span>     
          <span style="color: #0000dd;">cin</span> <span style="color: #000080;">&gt;&gt;</span> a<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span>
     <span style="color: #008000;">&#125;</span>
     <span style="color: #0000dd;">cin</span> <span style="color: #000080;">&gt;&gt;</span> k_max<span style="color: #008080;">;</span>
     <span style="color: #0000dd;">cout</span> <span style="color: #000080;">&lt;&lt;</span> search<span style="color: #008000;">&#40;</span>a,<span style="color: #0000dd;">1</span>,n,k_max<span style="color: #008000;">&#41;</span><span style="color: #000080;">&lt;&lt;</span>endl<span style="color: #008080;">;</span>
&nbsp;
     <span style="color: #0000ff;">return</span> <span style="color: #0000dd;">0</span><span style="color: #008080;">;</span>
<span style="color: #008000;">&#125;</span>
&nbsp;
<span style="color: #666666;">//一次快速排序，返回被定位元素的位置</span>
<span style="color: #0000ff;">int</span> quickSort<span style="color: #008000;">&#40;</span><span style="color: #0000ff;">int</span> <span style="color: #000040;">*</span>a,<span style="color: #0000ff;">int</span> left,<span style="color: #0000ff;">int</span> right<span style="color: #008000;">&#41;</span>
<span style="color: #008000;">&#123;</span>
     <span style="color: #0000ff;">int</span> i,j,temp<span style="color: #008080;">;</span>
     i<span style="color: #000080;">=</span>left<span style="color: #008080;">;</span>
     j<span style="color: #000080;">=</span>right<span style="color: #008080;">;</span>
     temp<span style="color: #000080;">=</span>a<span style="color: #008000;">&#91;</span>left<span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span>
     <span style="color: #0000ff;">if</span><span style="color: #008000;">&#40;</span>left<span style="color: #000080;">&gt;</span>right<span style="color: #008000;">&#41;</span>
          <span style="color: #0000ff;">return</span> <span style="color: #000040;">-</span><span style="color: #0000dd;">1</span><span style="color: #008080;">;</span>
     <span style="color: #0000ff;">while</span><span style="color: #008000;">&#40;</span>i<span style="color: #000040;">!</span><span style="color: #000080;">=</span>j<span style="color: #008000;">&#41;</span>
     <span style="color: #008000;">&#123;</span>
          <span style="color: #0000ff;">while</span><span style="color: #008000;">&#40;</span>a<span style="color: #008000;">&#91;</span>j<span style="color: #008000;">&#93;</span><span style="color: #000080;">&gt;=</span>temp <span style="color: #000040;">&amp;&amp;</span> j<span style="color: #000080;">&gt;</span>i<span style="color: #008000;">&#41;</span>
               j<span style="color: #000040;">--</span><span style="color: #008080;">;</span>
          <span style="color: #0000ff;">if</span><span style="color: #008000;">&#40;</span>j<span style="color: #000080;">&gt;</span>i<span style="color: #008000;">&#41;</span>
               a<span style="color: #008000;">&#91;</span>i<span style="color: #000040;">++</span><span style="color: #008000;">&#93;</span><span style="color: #000080;">=</span>a<span style="color: #008000;">&#91;</span>j<span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span>
          <span style="color: #0000ff;">while</span><span style="color: #008000;">&#40;</span>a<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span><span style="color: #000080;">&lt;=</span>temp <span style="color: #000040;">&amp;&amp;</span> j<span style="color: #000080;">&gt;</span>i<span style="color: #008000;">&#41;</span>
               i<span style="color: #000040;">++</span><span style="color: #008080;">;</span>
          <span style="color: #0000ff;">if</span><span style="color: #008000;">&#40;</span>j<span style="color: #000080;">&gt;</span>i<span style="color: #008000;">&#41;</span>
               a<span style="color: #008000;">&#91;</span>j<span style="color: #000040;">--</span><span style="color: #008000;">&#93;</span><span style="color: #000080;">=</span>a<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span>
&nbsp;
     <span style="color: #008000;">&#125;</span>
     a<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span><span style="color: #000080;">=</span>temp<span style="color: #008080;">;</span>
     <span style="color: #0000ff;">return</span> i<span style="color: #008080;">;</span>
<span style="color: #008000;">&#125;</span>
&nbsp;
<span style="color: #666666;">//分治查找第k大的元素</span>
<span style="color: #0000ff;">int</span> search<span style="color: #008000;">&#40;</span><span style="color: #0000ff;">int</span> <span style="color: #000040;">*</span>a,<span style="color: #0000ff;">int</span> i,<span style="color: #0000ff;">int</span> j,<span style="color: #0000ff;">int</span> k<span style="color: #008000;">&#41;</span>
<span style="color: #008000;">&#123;</span>
     <span style="color: #0000ff;">int</span> temp<span style="color: #008080;">;</span>
     <span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span>j <span style="color: #000080;">&lt;</span> i<span style="color: #008000;">&#41;</span>
     <span style="color: #008000;">&#123;</span>
          <span style="color: #0000ff;">return</span> <span style="color: #000040;">-</span><span style="color: #0000dd;">1</span><span style="color: #008080;">;</span>
     <span style="color: #008000;">&#125;</span>
     <span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span>i <span style="color: #000080;">==</span> j<span style="color: #008000;">&#41;</span>
     <span style="color: #008000;">&#123;</span>
          <span style="color: #0000ff;">return</span> a<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span>
     <span style="color: #008000;">&#125;</span>
     <span style="color: #666666;">//得到第i个元素被定位的下标</span>
     temp <span style="color: #000080;">=</span> quickSort<span style="color: #008000;">&#40;</span>a,i,j<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
     <span style="color: #666666;">//相等说明找到第k个大的元素</span>
     <span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span>temp <span style="color: #000080;">==</span> k<span style="color: #008000;">&#41;</span>
     <span style="color: #008000;">&#123;</span>
          <span style="color: #0000ff;">return</span> a<span style="color: #008000;">&#91;</span>k<span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span>
     <span style="color: #008000;">&#125;</span>
     <span style="color: #666666;">//比k大，往左缩小查找范围</span>
     <span style="color: #0000ff;">else</span> <span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span>temp <span style="color: #000080;">&gt;</span> k <span style="color: #008000;">&#41;</span>
     <span style="color: #008000;">&#123;</span>
          <span style="color: #0000ff;">return</span> search<span style="color: #008000;">&#40;</span>a,i,temp<span style="color: #000040;">-</span><span style="color: #0000dd;">1</span>,k<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
     <span style="color: #008000;">&#125;</span>
     <span style="color: #666666;">//比k大，往右缩小超找范围</span>
     <span style="color: #0000ff;">else</span> 
     <span style="color: #008000;">&#123;</span>
          <span style="color: #0000ff;">return</span> search<span style="color: #008000;">&#40;</span>a,temp<span style="color: #000040;">+</span><span style="color: #0000dd;">1</span>,j,k<span style="color: #000040;">-</span>temp<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
     <span style="color: #008000;">&#125;</span>
<span style="color: #008000;">&#125;</span></pre></td></tr></table></div>

]]></content:encoded>
			<wfw:commentRss>http://www.joansky.com/max-c.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>在Ubuntu server 下设置ftp服务器本地用户管理</title>
		<link>http://www.joansky.com/ubuntu-server-ftp.html</link>
		<comments>http://www.joansky.com/ubuntu-server-ftp.html#comments</comments>
		<pubDate>Tue, 09 Mar 2010 04:50:52 +0000</pubDate>
		<dc:creator>Joan</dc:creator>
				<category><![CDATA[Linux笔记]]></category>
		<category><![CDATA[Ubuntu server]]></category>
		<category><![CDATA[配置]]></category>

		<guid isPermaLink="false">http://www.joansky.com/?p=81</guid>
		<description><![CDATA[在Ubuntu server 下设置apache多用户管理这一篇中我们已经设置好apache多用户管理环境，很多用户都会选择用ftp来管理他们的web站点，这就需要我们再架设ftp服务多用户管理 本地主机的用户名是joan1和joan2，根文件夹分别是/home/joan1/www，/home/joan2/ww，IP是192.168.106.130，选择使用vsftpd这个软件，下面这些命令要求你拥有root权限 1：安装vsftpd软件 apt-get install vsftpd 2：编辑/etc/vsftpd.conf文件 vi /etc/vsftpd.conf 按‘i’，进入编辑状态 3：修改文本参数值 不让匿名用户使用，在anonymous_enable=YES 前加‘#’ 本地用户可用，去掉#local_enable=YES 前的‘#’ 允许进行读写操作，去掉#write_enable=YES 前的‘#’ 显示登录到ftp的提示，去掉#ftpd_banner=Welcome to blah FTP service 前的‘#’ 限制用户浏览的目录，一般我们只允许他在自家目录下乱窜，那么就需要启动chroot列表，去掉#chroot_list_enable=YES 前加‘#’ 指定chroot列表位置，去掉#chroot_list_file=/etc/vsftpd.chroot_list 前‘#’ 更改用户的根目录，默认的根目录是此时登陆ftp用户的家目录，在文件最后一行加入 ，user_config_dir=/etc/local_root 4：保存修改，退出 依次按‘Esc’‘：’‘w’‘q’ 5：新建/etc/vsftpd.chroot_list 文件，列出所要限制用户浏览文件的用户名 vi /etc/vsftpd.chroot_list ，然后按‘i’ 输入 joan1 joan2 保存修改，退出 5：新建文件夹 ，以确定ftp用户所在的根目录 mkdir /etc/local_root 新建以用户名命名的文件，（这里有两个用户，所以重复两次操作） vi /etc/local_root/joan1，然后按‘i’ 输入 local_root=/home/joan1/www 保存修改，退出 vi /etc/local_root/joan2，然后按‘i’ 输入 [...]]]></description>
			<content:encoded><![CDATA[<p>在<a href="http://www.joansky.com/80.html" target="_blank">Ubuntu server 下设置apache多用户管理</a>这一篇中我们已经设置好apache多用户管理环境，很多用户都会选择用ftp来管理他们的web站点，这就需要我们再架设ftp服务多用户管理</p>
<p>本地主机的用户名是joan1和joan2，根文件夹分别是/home/joan1/www，/home/joan2/ww，IP是192.168.106.130，选择使用vsftpd这个软件，下面这些命令要求你拥有root权限</p>
<p>1：安装vsftpd软件</p>
<p><span style="color: #0000ff;">apt-get install vsftpd</span></p>
<p>2：编辑/etc/vsftpd.conf文件</p>
<p><span style="color: #0000ff;">vi /etc/vsftpd.conf</span></p>
<p>按‘i’，进入编辑状态</p>
<p>3：修改文本参数值</p>
<p>不让匿名用户使用，<span style="color: #0000ff;">在anonymous_enable=YES 前加‘#’</span></p>
<p>本地用户可用，<span style="color: #0000ff;">去掉#local_enable=YES 前的‘#’</span></p>
<p>允许进行读写操作，<span style="color: #0000ff;">去掉#write_enable=YES 前的‘#’</span></p>
<p>显示登录到ftp的提示，<span style="color: #0000ff;">去掉#ftpd_banner=Welcome to blah FTP service 前的‘#’</span></p>
<p>限制用户浏览的目录，一般我们只允许他在自家目录下乱窜，那么就需要启动chroot列表，<span style="color: #0000ff;">去掉#chroot_list_enable=YES 前加‘#’<br />
</span><br />
指定chroot列表位置，<span style="color: #0000ff;">去掉#chroot_list_file=/etc/vsftpd.chroot_list 前‘#’</span></p>
<p>更改用户的根目录，默认的根目录是此时登陆ftp用户的家目录，在文件最后一行加入 ，<span style="color: #0000ff;">user_config_dir=/etc/local_root<br />
</span><br />
4：保存修改，退出</p>
<p>依次按‘Esc’‘：’‘w’‘q’</p>
<p>5：新建/etc/vsftpd.chroot_list 文件，列出所要限制用户浏览文件的用户名</p>
<p><span style="color: #0000ff;">vi /etc/vsftpd.chroot_list ，然后按‘i’<br />
</span></p>
<p>输入</p>
<p><span style="color: #0000ff;">joan1</span></p>
<p><span style="color: #0000ff;">joan2</span></p>
<p>保存修改，退出</p>
<p>5：新建文件夹 ，以确定ftp用户所在的根目录</p>
<p><span style="color: #0000ff;">mkdir /etc/local_root</span></p>
<p>新建以用户名命名的文件，（这里有两个用户，所以重复两次操作）</p>
<p><span style="color: #0000ff;">vi /etc/local_root/joan1，然后按‘i’</span></p>
<p>输入</p>
<p><span style="color: #0000ff;">local_root=/home/joan1/www</span></p>
<p>保存修改，退出</p>
<p><span style="color: #0000ff;">vi /etc/local_root/joan2</span><span style="color: #0000ff;">，然后按‘i’</span></p>
<p>输入</p>
<p><span style="color: #0000ff;">local_root=/home/joan2/www</span></p>
<p>保存修改，退出</p>
<p>7：修改文件夹的权限，使拥有修改权限</p>
<p><span style="color: #0000ff;">chmod 777 /home/joan1/www</span></p>
<p><span style="color: #0000ff;">chmod 777 /home/joan2/www</span></p>
<p>8：重新启动ftp服务（这一步很重要）</p>
<p><span style="color: #0000ff;">/etc/init.d/vsftpd restart</span></p>
<p>9：测试设置是否成功</p>
<p><span style="color: #0000ff;">ftp 192.168.106.130</span></p>
<p>输入你的用户名和密码</p>
<p>看到提示 230 Login successful......那就对了</p>
]]></content:encoded>
			<wfw:commentRss>http://www.joansky.com/ubuntu-server-ftp.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>在Ubuntu server 下设置apache多用户管理</title>
		<link>http://www.joansky.com/ubuntu-server-apache.html</link>
		<comments>http://www.joansky.com/ubuntu-server-apache.html#comments</comments>
		<pubDate>Fri, 05 Mar 2010 16:19:09 +0000</pubDate>
		<dc:creator>Joan</dc:creator>
				<category><![CDATA[Linux笔记]]></category>
		<category><![CDATA[Ubuntu server]]></category>
		<category><![CDATA[配置]]></category>

		<guid isPermaLink="false">http://www.joansky.com/?p=80</guid>
		<description><![CDATA[apache多用户管理，可以是一个IP，多个网站的设置。这里就说说应该怎么设置啦，假设我的IP是192.168.106.130，要设置两个网站，分别为www.joan1.com，www.joan2.com 1：编辑/etc/hosts文件 vi /etc/hosts 然后按‘i’键 2：添加主机名 在127.0.0.1       localhost 的下一行添加 192.168.106.130 www.joan1.com 192.168.106.130 www.joan2.com 3:保存修改，退出 依次按’Esc’，‘:’，’w ’，‘q‘ 4：打开/etc/apache2/httpd.conf 用户配置文件 vi /etc/apache2/httpd.conf 然后按’i‘键 如果你一安装完什么都没干的话，应该是个空文件 5：修改文件。直接复制以下代码到文件中就行啦 1 2 3 4 5 6 7 8 9 10 11 12 #NameVirtualHost apache虚拟主机的ip #ServerName 网站名称 #DocumentRoot 网站文件存放目录 NameVirtualHost 192.168.106.130 &#60;VirtualHost www.joan1.com&#62; ServerName www.joan1.com:80 DocumentRoot /home/joan1 &#60;/VirtualHost&#62; &#60;VirtualHost www.joansky.com&#62; ServerName www.joan2.com:80 DocumentRoot [...]]]></description>
			<content:encoded><![CDATA[<p>apache多用户管理，可以是一个IP，多个网站的设置。这里就说说应该怎么设置啦，假设我的IP是192.168.106.130，要设置两个网站，分别为www.joan1.com，www.joan2.com</p>
<p>1：编辑/etc/hosts文件</p>
<p><span style="color: #0000ff;">vi /etc/hosts</span></p>
<p>然后按‘i’键</p>
<p>2：添加主机名</p>
<p>在127.0.0.1       localhost 的下一行添加</p>
<p><span style="color: #0000ff;">192.168.106.130 www.joan1.com</span></p>
<p><span style="color: #0000ff;">192.168.106.130 www.joan2.com</span></p>
<p>3:保存修改，退出</p>
<p>依次按’Esc’，‘:’，’w ’，‘q‘</p>
<p>4：打开/etc/apache2/httpd.conf 用户配置文件</p>
<p><span style="color: #0000ff;">vi /etc/apache2/httpd.conf</span></p>
<p>然后按’i‘键</p>
<p>如果你一安装完什么都没干的话，应该是个空文件</p>
<p>5：修改文件。直接复制以下代码到文件中就行啦</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
</pre></td><td class="code"><pre class="cpp" style="font-family:Verdana,Courier New;"><span style="color: #339900;">#NameVirtualHost apache虚拟主机的ip</span>
<span style="color: #339900;">#ServerName 网站名称</span>
<span style="color: #339900;">#DocumentRoot 网站文件存放目录</span>
NameVirtualHost 192.168.106.130
<span style="color: #000080;">&lt;</span>VirtualHost www.<span style="color: #007788;">joan1</span>.<span style="color: #007788;">com</span><span style="color: #000080;">&gt;</span>
	ServerName www.<span style="color: #007788;">joan1</span>.<span style="color: #007788;">com</span><span style="color: #008080;">:</span><span style="color: #0000dd;">80</span>
	DocumentRoot <span style="color: #000040;">/</span>home<span style="color: #000040;">/</span>joan1
<span style="color: #000080;">&lt;</span><span style="color: #000040;">/</span>VirtualHost<span style="color: #000080;">&gt;</span>
<span style="color: #000080;">&lt;</span>VirtualHost www.<span style="color: #007788;">joansky</span>.<span style="color: #007788;">com</span><span style="color: #000080;">&gt;</span>
	ServerName www.<span style="color: #007788;">joan2</span>.<span style="color: #007788;">com</span><span style="color: #008080;">:</span><span style="color: #0000dd;">80</span>
	DocumentRoot <span style="color: #000040;">/</span>home<span style="color: #000040;">/</span>joan2
<span style="color: #000080;">&lt;</span><span style="color: #000040;">/</span>VirtualHost<span style="color: #000080;">&gt;</span></pre></td></tr></table></div>

<p>6：保存修改，退出</p>
<p>依次按’Esc’，‘:’，’w ’，‘q‘</p>
<p>7：重启apache</p>
<p><span style="color: #0000ff;">/etc/init.d/apache2 restart</span></p>
<p>8：写测试文件。在已有的/home/joan1，/home/joan2 的目录下写测试文件</p>
<p>呃，这里直接复制文件了</p>
<p><span style="color: #0000ff;">cp /var/www/index.html /home/joan1/demo1.html</span></p>
<p><span style="color: #0000ff;">cp /var/www/index.html /home/joan2/demo2.html</span></p>
<p>9:测试是否成功设置</p>
<p><span style="color: #0000ff;">w3m http://www.joan1.com/demo1.html</span></p>
<p><span style="color: #0000ff;">w3m http://www.joan2.com/demo2.html</span></p>
<p>当你看到两个网页都显示This is the default web page for this server......那就说明大功告成了</p>
]]></content:encoded>
			<wfw:commentRss>http://www.joansky.com/ubuntu-server-apache.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>在Ubuntu Server下设置Apache2主机名字和文件存放目录</title>
		<link>http://www.joansky.com/ubuntu-server-apache2.html</link>
		<comments>http://www.joansky.com/ubuntu-server-apache2.html#comments</comments>
		<pubDate>Fri, 05 Mar 2010 14:11:07 +0000</pubDate>
		<dc:creator>Joan</dc:creator>
				<category><![CDATA[Linux笔记]]></category>
		<category><![CDATA[Ubuntu server]]></category>
		<category><![CDATA[配置]]></category>

		<guid isPermaLink="false">http://www.joansky.com/?p=79</guid>
		<description><![CDATA[先记录一下 /etc/apache2 是apache2配置文件目录 apache2.conf主配置文件 httpd.conf 用户配置文件 sites-enabled 虚拟主机配置文件 下面这些指令是用来设置Apache2的虚拟主机，使其Ip与主机名字（假设要设置的主机名是 www.joan.com）对应，更改网页文件存放目录（假设要更改为 /home/joan），使用下面命令的前提，你拥有root权限，已安装了apache2 1：编辑/etc/hosts vi /etc/hosts 然后按‘i’键 2：将主机名写入/etc/hosts 文件中 在127.0.0.1       localhost 的下一行添加  127.0.0.1 www.joan1.com 3：保存修改，退出 依次按’Esc’，‘:’，’w ’，‘q‘ 4：编辑 /etc/apache2/sites-enabled /default 文件 vi /etc/apache2/sites-available/default 然后按 ’i’ 键 3：增加主机名字项 在ServerAdmin webmaster@localhost 的下一行添加 ServerName www.joan.com 4：修改网站文件存放目录 DocumentRoot /var/www 改为 DocumentRoot /home/joan &#60;Directory /var/www&#62; 改为 &#60;Directory /home/joan&#62; 5:保存修改，退出 依次按’Esc’，‘:’，’w ’，‘q‘ 6：重启Apache2（这一步很重要，不要忘） [...]]]></description>
			<content:encoded><![CDATA[<p>先记录一下</p>
<p>/etc/apache2 是apache2配置文件目录</p>
<p>apache2.conf主配置文件</p>
<p>httpd.conf 用户配置文件</p>
<p>sites-enabled 虚拟主机配置文件</p>
<p>下面这些指令是用来设置Apache2的虚拟主机，使其Ip与主机名字（假设要设置的主机名是 www.joan.com）对应，更改网页文件存放目录（假设要更改为 /home/joan），使用下面命令的前提，你拥有root权限，已安装了apache2</p>
<p>1：编辑/etc/hosts</p>
<p><span style="color: #0000ff;">vi /etc/hosts</span></p>
<p>然后按‘i’键</p>
<p>2：将主机名写入/etc/hosts 文件中</p>
<p>在127.0.0.1       localhost 的下一行添加  <span style="color: #0000ff;">127.0.0.1 www.joan1.com</span></p>
<p>3：保存修改，退出</p>
<p>依次按’Esc’，‘:’，’w ’，‘q‘</p>
<p>4：编辑 /etc/apache2/sites-enabled /default 文件</p>
<p><span style="color: #0000ff;">vi /etc/apache2/sites-available/default</span></p>
<p>然后按 ’i’ 键</p>
<p>3：增加主机名字项</p>
<p>在ServerAdmin webmaster@localhost 的下一行添加 <span style="color: #0000ff;">ServerName www.joan.com</span></p>
<p>4：修改网站文件存放目录</p>
<p>DocumentRoot /var/www 改为 <span style="color: #0000ff;">DocumentRoot /home/joan</span></p>
<p>&lt;Directory /var/www&gt; 改为 <span style="color: #0000ff;">&lt;Directory /home/joan&gt;</span></p>
<p>5:保存修改，退出</p>
<p>依次按’Esc’，‘:’，’w ’，‘q‘</p>
<p>6：重启Apache2（这一步很重要，不要忘）</p>
<p><span style="color: #0000ff;">/etc/init.d/apache2 restart</span></p>
<p>7:写测试文件。比较懒，直接复制了</p>
<p><span style="color: #0000ff;">cp /var/www/index.html /home/joan/demo.html</span></p>
<p>8：测试修改是否成功</p>
<p><span style="color: #0000ff;">w3m http://www.joan.com/demo.html</span></p>
<p>能看到 This is the default web page for this server.....那就说明设置成功啦</p>
]]></content:encoded>
			<wfw:commentRss>http://www.joansky.com/ubuntu-server-apache2.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>无聊的寒假</title>
		<link>http://www.joansky.com/holiday2.html</link>
		<comments>http://www.joansky.com/holiday2.html#comments</comments>
		<pubDate>Thu, 25 Feb 2010 10:43:44 +0000</pubDate>
		<dc:creator>Joan</dc:creator>
				<category><![CDATA[生活琐事]]></category>
		<category><![CDATA[生活]]></category>

		<guid isPermaLink="false">http://www.joansky.com/?p=78</guid>
		<description><![CDATA[博客快两个月没更新了，主要是本人懒，没计划该更新些什么内容；其次是家里上网不方便，还是学校比较自由，虽然网速慢。 放假前打算学下Linux。呃，回到家啥计划都是假的，学习效率很低，回校再继续看了。 再次签了香港通行证，琢磨着下学期找个时间玩玩。上次去澳门玩得稀里糊涂的，去香港之前可得好好计划下。 配了副隐形眼镜。大一的时候就想去弄副隐形眼镜了，可家人一直说隐形眼镜不安全不让我戴，一直拖到现在。隐形眼镜还真难戴，在那里试了40分钟左右才成功戴上，那个服务员也还真有耐心。 花了￥450买了一个320G的笔记本硬盘。 跟朋友聚聚。今年的班级聚会只有一个，高三的，依旧没去。到现在只要是班级聚会我都没理睬，恩，不喜欢群聚。 这个寒假很无聊，没啥可说的。恩，明天坐包车回校。这回宿舍轮我最早回。]]></description>
			<content:encoded><![CDATA[<p>博客快两个月没更新了，主要是本人懒，没计划该更新些什么内容；其次是家里上网不方便，还是学校比较自由，虽然网速慢。</p>
<p>放假前打算学下Linux。呃，回到家啥计划都是假的，学习效率很低，回校再继续看了。</p>
<p>再次签了香港通行证，琢磨着下学期找个时间玩玩。上次去澳门玩得稀里糊涂的，去香港之前可得好好计划下。</p>
<p>配了副隐形眼镜。大一的时候就想去弄副隐形眼镜了，可家人一直说隐形眼镜不安全不让我戴，一直拖到现在。隐形眼镜还真难戴，在那里试了40分钟左右才成功戴上，那个服务员也还真有耐心。</p>
<p>花了￥450买了一个320G的笔记本硬盘。</p>
<p>跟朋友聚聚。今年的班级聚会只有一个，高三的，依旧没去。到现在只要是班级聚会我都没理睬，恩，不喜欢群聚。</p>
<p>这个寒假很无聊，没啥可说的。恩，明天坐包车回校。这回宿舍轮我最早回。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.joansky.com/holiday2.html/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>对2009年的学习回顾</title>
		<link>http://www.joansky.com/college-life4.html</link>
		<comments>http://www.joansky.com/college-life4.html#comments</comments>
		<pubDate>Fri, 01 Jan 2010 04:55:52 +0000</pubDate>
		<dc:creator>Joan</dc:creator>
				<category><![CDATA[生活琐事]]></category>
		<category><![CDATA[总结]]></category>
		<category><![CDATA[生活]]></category>

		<guid isPermaLink="false">http://www.joansky.com/?p=77</guid>
		<description><![CDATA[一个未曾涉足计算机领域的我想要在计算机专业上站稳脚步，不但需要让自己知识不断扩充，还需要拥有一计之处。 一开始觉得大家每天上网都在浏览各式各样的网页，带着好奇心想从网页制作入手。朋友给我指点了入门之道，先让我熟悉Dreamweaver的使用，了解网站设计与建设的基本知识。大一下学期选了火爷的网站设计与制作的课，火爷讲的东西与实际互联网上的网页根本不是一回事，但当是一次“扫盲”活动吧。 想要做出符合3WC标准的网页，学CSS是必不可少的，于是我又开始研究起CSS来，在网上买了本《CSS商业网站布局之道》。当自己想练习写一个简单漂亮的网站出来时，需要一些图片的搭配，可网上找的图片都不符合自己要求，朋友也想让我学PS帮他做logo，于是乎，我把css丢在一边，开始学起ps。到现在我都很羡慕那些能做出精美图片的人，原因很简单，我的审美很差，一个看似简单的东西，但是就是调不出那种我要的效果——对颜色的把握不好。 而后，我把焦点转到了编程上，无论是培养一个人的思维方式还是提高对编程的熟练度和算法的运用，编程在计算机专业有着举足轻重的地位。开始在poj上刷题，刷到现在是60多道。其实刷题还有一个原因，那就是我想参加珠海赛，但当得知参加珠海赛的队伍有能力去参加省赛时队伍的成员是不能改变的，我就开始纠结了，跟我组队的成员肯定能参加省赛，参加省赛意味着我必须接受长达4个月的训练，且我又不想扎根于编程中，毕竟我的方向不在编程上。 恩，继续转移学习的方向——PHP与数据库的操作，因为之前无聊的时候看过关于php的书，只是缺乏动手经验，所以刚开始写些小小的程序还是比较容易的。朋友的主意比较多，让我写些符合他要求的小程序，他的要求刚好在我的能力范围内，也能让我逐渐接触新知识。我现在学会的也只是对PHP跟数据库最基本的运用。 从网页——PS——编程——PHP与数据库，每一门都是刚刚入门然后就放弃，于是我成了那种啥也了解一点，但是啥也不精。还有半年的时间让我鼓捣我感兴趣的东西，因为大三的时候或许会更早，开始学网络方面的东西。我要把重点学习的东西放在PHP和数据库上，半年时间肯定不能让我成为什么php大师，但是起码应该做到脱掉菜鸟称号吧。 2010年已经起航，希望在这一年能有更大的进步。]]></description>
			<content:encoded><![CDATA[<p>一个未曾涉足计算机领域的我想要在计算机专业上站稳脚步，不但需要让自己知识不断扩充，还需要拥有一计之处。</p>
<p>一开始觉得大家每天上网都在浏览各式各样的网页，带着好奇心想从网页制作入手。朋友给我指点了入门之道，先让我熟悉Dreamweaver的使用，了解网站设计与建设的基本知识。大一下学期选了火爷的网站设计与制作的课，火爷讲的东西与实际互联网上的网页根本不是一回事，但当是一次“扫盲”活动吧。</p>
<p>想要做出符合3WC标准的网页，学CSS是必不可少的，于是我又开始研究起CSS来，在网上买了本《CSS商业网站布局之道》。当自己想练习写一个简单漂亮的网站出来时，需要一些图片的搭配，可网上找的图片都不符合自己要求，朋友也想让我学PS帮他做logo，于是乎，我把css丢在一边，开始学起ps。到现在我都很羡慕那些能做出精美图片的人，原因很简单，我的审美很差，一个看似简单的东西，但是就是调不出那种我要的效果——对颜色的把握不好。</p>
<p>而后，我把焦点转到了编程上，无论是培养一个人的思维方式还是提高对编程的熟练度和算法的运用，编程在计算机专业有着举足轻重的地位。开始在poj上刷题，刷到现在是60多道。其实刷题还有一个原因，那就是我想参加珠海赛，但当得知参加珠海赛的队伍有能力去参加省赛时队伍的成员是不能改变的，我就开始纠结了，跟我组队的成员肯定能参加省赛，参加省赛意味着我必须接受长达4个月的训练，且我又不想扎根于编程中，毕竟我的方向不在编程上。</p>
<p>恩，继续转移学习的方向——PHP与数据库的操作，因为之前无聊的时候看过关于php的书，只是缺乏动手经验，所以刚开始写些小小的程序还是比较容易的。朋友的主意比较多，让我写些符合他要求的小程序，他的要求刚好在我的能力范围内，也能让我逐渐接触新知识。我现在学会的也只是对PHP跟数据库最基本的运用。</p>
<p>从网页——PS——编程——PHP与数据库，每一门都是刚刚入门然后就放弃，于是我成了那种啥也了解一点，但是啥也不精。还有半年的时间让我鼓捣我感兴趣的东西，因为大三的时候或许会更早，开始学网络方面的东西。我要把重点学习的东西放在PHP和数据库上，半年时间肯定不能让我成为什么php大师，但是起码应该做到脱掉菜鸟称号吧。</p>
<p>2010年已经起航，希望在这一年能有更大的进步。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.joansky.com/college-life4.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>ACM女生赛总结</title>
		<link>http://www.joansky.com/acm-college-life.html</link>
		<comments>http://www.joansky.com/acm-college-life.html#comments</comments>
		<pubDate>Sun, 27 Dec 2009 12:26:03 +0000</pubDate>
		<dc:creator>Joan</dc:creator>
				<category><![CDATA[生活琐事]]></category>
		<category><![CDATA[总结]]></category>
		<category><![CDATA[证书]]></category>

		<guid isPermaLink="false">http://www.joansky.com/?p=76</guid>
		<description><![CDATA[参加了学院组织的女生赛，拿了个第一名。名次已经不重要了，重要得是得到了什么经验与教训。 粗心，是我的一个最大缺点 。 去年的新生赛B题就因为没仔细看题，没理解清题意，就在那做题，结局肯定很悲剧的。这次依旧，看题不仔细，做出来不检查就想直接提交通过。 A题，输出的时候没有多加中括号，加了中括号后，判断输出时还写错，交了3次才过。E 题，开始提交的时候没有写头函数，第二次提交发现多加了system("pause");，改过来后提交发现答案错误，检查发现没加'\0'，觉得加了' \0'应该对了，于是就赶紧提交，其实这连样例输出都没过，因为我直接把输出的字符串检查略过，看最后统计的结果，连交了5次，还是没A掉。比赛结束后，朋友跟我说你是不是看题又不仔细，没看到这里有“（如果两个字符串完全相同的情况就不叫山寨）”，恩，我再次悲剧了。一开始看题是仔细看了，看到做题的时候就把这条件给忘了。 还发现，无论看什么东西，很容易跳过符号，即算看了也压根没引起重视。 不能老在同一地方跌倒，吸取教训~~ 好像这是最后一届女生赛，发下图片记录下]]></description>
			<content:encoded><![CDATA[<p>参加了学院组织的女生赛，拿了个第一名。名次已经不重要了，重要得是得到了什么经验与教训。</p>
<p>粗心，是我的一个最大缺点 。</p>
<p>去年的新生赛B题就因为没仔细看题，没理解清题意，就在那做题，结局肯定很悲剧的。这次依旧，看题不仔细，做出来不检查就想直接提交通过。</p>
<p>A题，输出的时候没有多加中括号，加了中括号后，判断输出时还写错，交了3次才过。E 题，开始提交的时候没有写头函数，第二次提交发现多加了system("pause");，改过来后提交发现答案错误，检查发现没加'\0'，觉得加了' \0'应该对了，于是就赶紧提交，其实这连样例输出都没过，因为我直接把输出的字符串检查略过，看最后统计的结果，连交了5次，还是没A掉。比赛结束后，朋友跟我说你是不是看题又不仔细，没看到这里有“（如果两个字符串完全相同的情况就不叫山寨）”，恩，我再次悲剧了。一开始看题是仔细看了，看到做题的时候就把这条件给忘了。</p>
<p>还发现，无论看什么东西，很容易跳过符号，即算看了也压根没引起重视。</p>
<p>不能老在同一地方跌倒，吸取教训~~</p>
<p>好像这是最后一届女生赛，发下图片记录下</p>
<p><img class="alignnone size-full wp-image-75" title="ACM" src="http://www.joansky.com/wp-content/uploads/2009/12/ACM.jpg" alt="ACM" width="550" height="412" /></p>
]]></content:encoded>
			<wfw:commentRss>http://www.joansky.com/acm-college-life.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>《蜗居》之感言</title>
		<link>http://www.joansky.com/movie1.html</link>
		<comments>http://www.joansky.com/movie1.html#comments</comments>
		<pubDate>Sat, 26 Dec 2009 13:03:15 +0000</pubDate>
		<dc:creator>Joan</dc:creator>
				<category><![CDATA[生活琐事]]></category>
		<category><![CDATA[影评]]></category>

		<guid isPermaLink="false">http://www.joansky.com/?p=74</guid>
		<description><![CDATA[一天，一位对连续剧没什么大爱的朋友看起蜗居来，还推荐我去看，恩，这片子肯定有什么可人之处，又看到网上的那些评论，炒得可热了，所以我决定也来凑凑。到木铎下了蜗居，开始看起来 白天没时间看蜗居，一般都是宿舍断网后开始看，看到本没电就去睡觉，终于把蜗居看完。 给人议论最多的是海藻跟宋思明，在我看来，我对海藻的做法很不齿，借个6万就觉得自己欠人家很多，自己还不了，得用肉体还。。。跟着宋思明出入高级餐厅，打扮得跟贵妇一样，慢慢的习惯宋思明给的这些荣耀，步入二奶行列，海藻口口声声说她是爱宋思明的，我倒不见得，见了几次面，连身子都献出去，这里面真的有爱吗，结局的时候，海藻潜意识里想的都是小贝。海萍说得对了，海藻不过是被宋头上的光环迷恋住了。 我的室友整天都说，“以后找老公一定要找个有钱的，要不是我现在没碰到比他更好的，我早把他甩了”。一个多么现实的女生，是的，她的想法并没有错，每个人都想有个美好的未来，美好是建立金钱基础上的。当女人把未来放在男人身上时，找个有钱的老公比找个真正爱自己关心自己的人重要得多了。 宋思明很聪明，很有远见，也很有才能，宋思明能制服海藻也算很正常。见到一个男生的个性签名写着这样一句话“做人要做宋思明”，的确，虽然宋的结局是悲剧的，但是现在一个80后的男人能有宋的一切，那么他就算是很成功了。 其实我觉得小贝要比宋悲剧得多了，一个对海藻如此付出的人，却因为物质条件差而失去爱情。恩，现实生活中的“小贝”应该不少，因为生活中存在着太多的“海藻”。 蜗居其实是围绕着房子展开的，一切都是因房子而起，房地产的现状，让我们不得不蜗居啊。]]></description>
			<content:encoded><![CDATA[<p>一天，一位对连续剧没什么大爱的朋友看起蜗居来，还推荐我去看，恩，这片子肯定有什么可人之处，又看到网上的那些评论，炒得可热了，所以我决定也来凑凑。到木铎下了蜗居，开始看起来</p>
<p>白天没时间看蜗居，一般都是宿舍断网后开始看，看到本没电就去睡觉，终于把蜗居看完。</p>
<p>给人议论最多的是海藻跟宋思明，在我看来，我对海藻的做法很不齿，借个6万就觉得自己欠人家很多，自己还不了，得用肉体还。。。跟着宋思明出入高级餐厅，打扮得跟贵妇一样，慢慢的习惯宋思明给的这些荣耀，步入二奶行列，海藻口口声声说她是爱宋思明的，我倒不见得，见了几次面，连身子都献出去，这里面真的有爱吗，结局的时候，海藻潜意识里想的都是小贝。海萍说得对了，海藻不过是被宋头上的光环迷恋住了。</p>
<p>我的室友整天都说，“以后找老公一定要找个有钱的，要不是我现在没碰到比他更好的，我早把他甩了”。一个多么现实的女生，是的，她的想法并没有错，每个人都想有个美好的未来，美好是建立金钱基础上的。当女人把未来放在男人身上时，找个有钱的老公比找个真正爱自己关心自己的人重要得多了。</p>
<p>宋思明很聪明，很有远见，也很有才能，宋思明能制服海藻也算很正常。见到一个男生的个性签名写着这样一句话“做人要做宋思明”，的确，虽然宋的结局是悲剧的，但是现在一个80后的男人能有宋的一切，那么他就算是很成功了。</p>
<p>其实我觉得小贝要比宋悲剧得多了，一个对海藻如此付出的人，却因为物质条件差而失去爱情。恩，现实生活中的“小贝”应该不少，因为生活中存在着太多的“海藻”。</p>
<p>蜗居其实是围绕着房子展开的，一切都是因房子而起，房地产的现状，让我们不得不蜗居啊。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.joansky.com/movie1.html/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>POJ 1860 Currency Exchange C版本</title>
		<link>http://www.joansky.com/poj-1860-currency-exchange-c.html</link>
		<comments>http://www.joansky.com/poj-1860-currency-exchange-c.html#comments</comments>
		<pubDate>Tue, 22 Dec 2009 04:12:11 +0000</pubDate>
		<dc:creator>Joan</dc:creator>
				<category><![CDATA[解题报告]]></category>
		<category><![CDATA[C]]></category>
		<category><![CDATA[poj]]></category>

		<guid isPermaLink="false">http://www.joansky.com/?p=73</guid>
		<description><![CDATA[最短单源路径与松弛定理的运用 Description Several currency exchange points are working in our city. Let us suppose that each point specializes in two particular currencies and performs exchange operations only with these currencies. There can be several points specializing in the same pair of currencies. Each point has its own exchange rates, exchange rate of A to B [...]]]></description>
			<content:encoded><![CDATA[<p>最短单源路径与松弛定理的运用</p>
<p><span id="more-73"></span>Description</p>
<p>Several currency exchange points are working in our city. Let us suppose that each point specializes in two particular currencies and performs exchange operations only with these currencies. There can be several points specializing in the same pair of currencies. Each point has its own exchange rates, exchange rate of A to B is the quantity of B you get for 1A. Also each exchange point has some commission, the sum you have to pay for your exchange operation. Commission is always collected in source currency.<br />
For example, if you want to exchange 100 US Dollars into Russian Rubles at the exchange point, where the exchange rate is 29.75, and the commission is 0.39 you will get (100 - 0.39) * 29.75 = 2963.3975RUR.<br />
You surely know that there are N different currencies you can deal with in our city. Let us assign unique integer number from 1 to N to each currency. Then each exchange point can be described with 6 numbers: integer A and B - numbers of currencies it exchanges, and real RAB, CAB, RBA and CBA - exchange rates and commissions when exchanging A to B and B to A respectively.<br />
Nick has some money in currency S and wonders if he can somehow, after some exchange operations, increase his capital. Of course, he wants to have his money in currency S in the end. Help him to answer this difficult question. Nick must always have non-negative sum of money while making his operations.</p>
<p>Input</p>
<p>The first line of the input contains four numbers: N - the number of currencies, M - the number of exchange points, S - the number of currency Nick has and V - the quantity of currency units he has. The following M lines contain 6 numbers each - the description of the corresponding exchange point - in specified above order. Numbers are separated by one or more spaces. 1&lt;=S&lt;=N&lt;=100, 1&lt;=M&lt;=100, V is real number, 0&lt;=V&lt;=103.<br />
For each point exchange rates and commissions are real, given with at most two digits after the decimal point, 10-2&lt;=rate&lt;=102, 0&lt;=commission&lt;=102.<br />
Let us call some sequence of the exchange operations simple if no exchange point is used more than once in this sequence. You may assume that ratio of the numeric values of the sums at the end and at the beginning of any simple sequence of the exchange operations will be less than 104.</p>
<p>Output</p>
<p>If Nick can increase his wealth, output YES, in other case output NO to the output file.</p>
<p>Sample Input</p>
<p>3 2 1 20.0<br />
1 2 1.00 1.00 1.00 1.00<br />
2 3 1.10 1.00 1.10 1.00</p>
<p>Sample Output</p>
<p>YES</p>
<p><span style="color: #ff0000;">题目大意</span></p>
<p><span style="color: #ff0000;">有多种汇币，汇币之间可以交换，这需要手续费，当你用100A币交换B币时，A到B的汇率是29.75，手续费是0.39，那么你可以得到(100 - 0.39) * 29.75 = 2963.3975 B币。问s币的金额经过交换最终得到的s币金额数能否增加</span></p>
<p><span style="color: #ff0000;">货币的交换是可以重复多次的，所以我们需要找出是否存在正权回路，且最后得到的s金额是增加的</span></p>
<p><span style="color: #ff0000;">怎么找正权回路呢？（正权回路：在这一回路上，顶点的权值能不断增加即能一直进行松弛）</span></p>
<p><span style="color: #ff0000;">1：当s金额没有增值时，我们才进行查找；</span></p>
<p><span style="color: #ff0000;">2：当所有的顶点都不能进行松弛时，说明不存在正权回路；</span></p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
</pre></td><td class="code"><pre class="cpp" style="font-family:Verdana,Courier New;"><span style="color: #339900;">#include&lt;stdio.h&gt;</span>
<span style="color: #339900;">#define eps 1e-8</span>
<span style="color: #0000ff;">typedef</span> <span style="color: #0000ff;">struct</span> 
<span style="color: #008000;">&#123;</span>
     <span style="color: #0000ff;">double</span> r<span style="color: #008080;">;</span>
     <span style="color: #0000ff;">double</span> c<span style="color: #008080;">;</span>
     <span style="color: #0000ff;">int</span> x<span style="color: #008080;">;</span>
     <span style="color: #0000ff;">int</span> y<span style="color: #008080;">;</span>
<span style="color: #008000;">&#125;</span>E<span style="color: #008080;">;</span>
E e<span style="color: #008000;">&#91;</span><span style="color: #0000dd;">204</span><span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span>
<span style="color: #0000ff;">double</span> d<span style="color: #008000;">&#91;</span><span style="color: #0000dd;">102</span><span style="color: #008000;">&#93;</span>,v<span style="color: #008080;">;</span>
<span style="color: #0000ff;">int</span> s,temp<span style="color: #008080;">;</span>
&nbsp;
<span style="color: #0000ff;">int</span> dijkstra<span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span>
<span style="color: #008000;">&#123;</span>
     <span style="color: #0000ff;">int</span> i,sign<span style="color: #008080;">;</span>
     <span style="color: #0000dd;">memset</span><span style="color: #008000;">&#40;</span>d,<span style="color: #0000dd;">0</span>,<span style="color: #0000dd;">sizeof</span><span style="color: #008000;">&#40;</span>d<span style="color: #008000;">&#41;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
     d<span style="color: #008000;">&#91;</span>s<span style="color: #008000;">&#93;</span><span style="color: #000080;">=</span>v<span style="color: #008080;">;</span>
     <span style="color: #ff0000;">/*当s金额没有增值时进行松弛*/</span>
     <span style="color: #0000ff;">while</span><span style="color: #008000;">&#40;</span>d<span style="color: #008000;">&#91;</span>s<span style="color: #008000;">&#93;</span><span style="color: #000080;">&lt;=</span>v<span style="color: #000040;">+</span>eps<span style="color: #008000;">&#41;</span>
     <span style="color: #008000;">&#123;</span>
          sign<span style="color: #000080;">=</span><span style="color: #0000dd;">1</span><span style="color: #008080;">;</span>
          <span style="color: #0000ff;">for</span><span style="color: #008000;">&#40;</span>i<span style="color: #000080;">=</span><span style="color: #0000dd;">0</span><span style="color: #008080;">;</span>i<span style="color: #000080;">&lt;</span>temp<span style="color: #008080;">;</span><span style="color: #000040;">++</span>i<span style="color: #008000;">&#41;</span>
          <span style="color: #008000;">&#123;</span>
               <span style="color: #ff0000;">/*松弛条件*/</span>
               <span style="color: #0000ff;">if</span><span style="color: #008000;">&#40;</span>d<span style="color: #008000;">&#91;</span>e<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span>.<span style="color: #007788;">y</span><span style="color: #008000;">&#93;</span><span style="color: #000040;">+</span>eps<span style="color: #000080;">&lt;</span><span style="color: #008000;">&#40;</span>d<span style="color: #008000;">&#91;</span>e<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span>.<span style="color: #007788;">x</span><span style="color: #008000;">&#93;</span><span style="color: #000040;">-</span>e<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span>.<span style="color: #007788;">c</span><span style="color: #008000;">&#41;</span><span style="color: #000040;">*</span>e<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span>.<span style="color: #007788;">r</span><span style="color: #008000;">&#41;</span>
               <span style="color: #008000;">&#123;</span>
                    sign<span style="color: #000080;">=</span><span style="color: #0000dd;">0</span><span style="color: #008080;">;</span>
                    d<span style="color: #008000;">&#91;</span>e<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span>.<span style="color: #007788;">y</span><span style="color: #008000;">&#93;</span><span style="color: #000080;">=</span><span style="color: #008000;">&#40;</span>d<span style="color: #008000;">&#91;</span>e<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span>.<span style="color: #007788;">x</span><span style="color: #008000;">&#93;</span><span style="color: #000040;">-</span>e<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span>.<span style="color: #007788;">c</span><span style="color: #008000;">&#41;</span><span style="color: #000040;">*</span>e<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span>.<span style="color: #007788;">r</span><span style="color: #008080;">;</span>
               <span style="color: #008000;">&#125;</span>
          <span style="color: #008000;">&#125;</span>
          <span style="color: #ff0000;">/*所有的顶点都不能进行松弛时，退出并判断s金额是否已增值*/</span>
          <span style="color: #0000ff;">if</span><span style="color: #008000;">&#40;</span>sign<span style="color: #008000;">&#41;</span>
          <span style="color: #008000;">&#123;</span>
               <span style="color: #0000ff;">return</span> d<span style="color: #008000;">&#91;</span>s<span style="color: #008000;">&#93;</span><span style="color: #000040;">-</span>v<span style="color: #008080;">;</span>
          <span style="color: #008000;">&#125;</span>
     <span style="color: #008000;">&#125;</span>
     <span style="color: #0000ff;">return</span> <span style="color: #0000dd;">1</span><span style="color: #008080;">;</span>
<span style="color: #008000;">&#125;</span>
<span style="color: #0000ff;">int</span> main<span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span>
<span style="color: #008000;">&#123;</span>
     <span style="color: #0000ff;">int</span> n,m,i,a,b<span style="color: #008080;">;</span>
     <span style="color: #0000ff;">double</span> xrate,xcom,yrate,ycom<span style="color: #008080;">;</span>
     <span style="color: #0000ff;">while</span><span style="color: #008000;">&#40;</span><span style="color: #0000dd;">scanf</span><span style="color: #008000;">&#40;</span><span style="color: #FF0000;">&quot;%d%d%d%lf&quot;</span>,<span style="color: #000040;">&amp;</span>n,<span style="color: #000040;">&amp;</span>m,<span style="color: #000040;">&amp;</span>s,<span style="color: #000040;">&amp;</span>v<span style="color: #008000;">&#41;</span><span style="color: #000040;">!</span><span style="color: #000080;">=</span><span style="color: #0000ff;">EOF</span><span style="color: #008000;">&#41;</span>
     <span style="color: #008000;">&#123;</span>
          temp<span style="color: #000080;">=</span><span style="color: #0000dd;">0</span><span style="color: #008080;">;</span>
          <span style="color: #0000ff;">for</span><span style="color: #008000;">&#40;</span>i<span style="color: #000080;">=</span><span style="color: #0000dd;">0</span><span style="color: #008080;">;</span>i<span style="color: #000080;">&lt;</span>m<span style="color: #008080;">;</span><span style="color: #000040;">++</span>i<span style="color: #008000;">&#41;</span>
          <span style="color: #008000;">&#123;</span>
               <span style="color: #0000dd;">scanf</span><span style="color: #008000;">&#40;</span><span style="color: #FF0000;">&quot;%d%d%lf%lf%lf%lf&quot;</span>,<span style="color: #000040;">&amp;</span>a,<span style="color: #000040;">&amp;</span>b,<span style="color: #000040;">&amp;</span>xrate,<span style="color: #000040;">&amp;</span>xcom,<span style="color: #000040;">&amp;</span>yrate,<span style="color: #000040;">&amp;</span>ycom<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
               e<span style="color: #008000;">&#91;</span>temp<span style="color: #008000;">&#93;</span>.<span style="color: #007788;">x</span> <span style="color: #000080;">=</span> a<span style="color: #008080;">;</span>
               e<span style="color: #008000;">&#91;</span>temp<span style="color: #008000;">&#93;</span>.<span style="color: #007788;">y</span> <span style="color: #000080;">=</span> b<span style="color: #008080;">;</span>
               e<span style="color: #008000;">&#91;</span>temp<span style="color: #008000;">&#93;</span>.<span style="color: #007788;">r</span> <span style="color: #000080;">=</span> xrate<span style="color: #008080;">;</span>
               e<span style="color: #008000;">&#91;</span>temp<span style="color: #008000;">&#93;</span>.<span style="color: #007788;">c</span> <span style="color: #000080;">=</span> xcom<span style="color: #008080;">;</span>
               <span style="color: #000040;">++</span>temp<span style="color: #008080;">;</span>
               e<span style="color: #008000;">&#91;</span>temp<span style="color: #008000;">&#93;</span>.<span style="color: #007788;">x</span> <span style="color: #000080;">=</span> b<span style="color: #008080;">;</span>
               e<span style="color: #008000;">&#91;</span>temp<span style="color: #008000;">&#93;</span>.<span style="color: #007788;">y</span> <span style="color: #000080;">=</span> a<span style="color: #008080;">;</span>
               e<span style="color: #008000;">&#91;</span>temp<span style="color: #008000;">&#93;</span>.<span style="color: #007788;">r</span><span style="color: #000080;">=</span>yrate<span style="color: #008080;">;</span>
               e<span style="color: #008000;">&#91;</span>temp<span style="color: #008000;">&#93;</span>.<span style="color: #007788;">c</span><span style="color: #000080;">=</span>ycom<span style="color: #008080;">;</span>
               <span style="color: #000040;">++</span>temp<span style="color: #008080;">;</span>
          <span style="color: #008000;">&#125;</span>
          <span style="color: #0000ff;">if</span><span style="color: #008000;">&#40;</span>dijkstra<span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">&#41;</span>
          <span style="color: #008000;">&#123;</span>
               <span style="color: #0000dd;">printf</span><span style="color: #008000;">&#40;</span><span style="color: #FF0000;">&quot;YES<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
          <span style="color: #008000;">&#125;</span>
          <span style="color: #0000ff;">else</span>
          <span style="color: #008000;">&#123;</span>
               <span style="color: #0000dd;">printf</span><span style="color: #008000;">&#40;</span><span style="color: #FF0000;">&quot;NO<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
          <span style="color: #008000;">&#125;</span>
     <span style="color: #008000;">&#125;</span>
     <span style="color: #0000dd;">system</span><span style="color: #008000;">&#40;</span><span style="color: #FF0000;">&quot;pause&quot;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
     <span style="color: #0000ff;">return</span> <span style="color: #0000dd;">0</span><span style="color: #008080;">;</span>
<span style="color: #008000;">&#125;</span></pre></td></tr></table></div>

]]></content:encoded>
			<wfw:commentRss>http://www.joansky.com/poj-1860-currency-exchange-c.html/feed</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>POJ 1247 Magnificent Meatballs C版本</title>
		<link>http://www.joansky.com/poj-1247-magnificent-meatballs-c.html</link>
		<comments>http://www.joansky.com/poj-1247-magnificent-meatballs-c.html#comments</comments>
		<pubDate>Sun, 20 Dec 2009 13:33:27 +0000</pubDate>
		<dc:creator>Joan</dc:creator>
				<category><![CDATA[解题报告]]></category>
		<category><![CDATA[C]]></category>
		<category><![CDATA[poj]]></category>

		<guid isPermaLink="false">http://www.joansky.com/?p=72</guid>
		<description><![CDATA[简单数学题 Description Sam and Ella run a catering service. They like to put on a show when serving meatballs to guests seated at round tables. They march out of the kitchen with pots of meatballs and start serving adjacent guests. Ella goes counterclockwise and Sam goes clockwise, until they both plop down their last meatball, [...]]]></description>
			<content:encoded><![CDATA[<p>简单数学题</p>
<p><span id="more-72"></span><br />
Description</p>
<p>Sam and Ella run a catering service. They like to put on a show when serving meatballs to guests seated at round tables. They march out of the kitchen with pots of meatballs and start serving adjacent guests. Ella goes counterclockwise and Sam goes clockwise, until they both plop down their last meatball, at the same time, again at adjacent guests. This impressive routine can only be accomplished if they can divide the table into two sections, each having the same number of meatballs. You are to write a program to assist them.</p>
<p>At these catering events, each table seats 2 &lt;= N &lt;= 30 guests. Each guest orders at least one and at most nine meatballs. Each place at the table is numbered from 1 to N, with the host at position 1 and the host's spouse at position N. Sam always serves the host first then proceeds to serve guests in increasing order. Ella serves the spouse first, then serves guests in decreasing order. The figures illustrate the first two example input cases.</p>
<p>Input</p>
<p>Input consists of one or more test cases. Each test case contains the number of guests N followed by meatballs ordered by each guest, from guest 1 to guest N. The end of the input is a line with a single zero.</p>
<p>Output</p>
<p>For each table, output a single line with the ending positions for Sam and Ella, or the sentence indicating an equal partitioning isn't possible. Use the exact formatting shown below.</p>
<p>Sample Input</p>
<p>5 9 4 2 8 3<br />
5 3 9 4 2 8<br />
6 1 2 1 2 1 2<br />
6 1 2 1 2 1 1<br />
0</p>
<p>Sample Output</p>
<p>Sam stops at position 2 and Ella stops at position 3.<br />
No equal partitioning.<br />
No equal partitioning.<br />
Sam stops at position 3 and Ella stops at position 4.</p>
<p><span style="color: #ff0000;">题意：找出Sam和Ella负责分发相同数量的meatballs时，各自需要负责的客人数</span></p>
<p><span style="color: #ff0000;">其实题很简单，只要题目意思看懂了</span></p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
</pre></td><td class="code"><pre class="cpp" style="font-family:Verdana,Courier New;"><span style="color: #339900;">#include&lt;stdio.h&gt;</span>
&nbsp;
<span style="color: #0000ff;">int</span> main<span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span>
<span style="color: #008000;">&#123;</span>
     <span style="color: #0000ff;">int</span> n,i,j,a<span style="color: #008000;">&#91;</span><span style="color: #0000dd;">32</span><span style="color: #008000;">&#93;</span>,sum,sumtemp,temp,sign<span style="color: #008080;">;</span>
     <span style="color: #0000ff;">while</span><span style="color: #008000;">&#40;</span><span style="color: #0000dd;">1</span><span style="color: #008000;">&#41;</span>
     <span style="color: #008000;">&#123;</span>
          <span style="color: #0000dd;">scanf</span><span style="color: #008000;">&#40;</span><span style="color: #FF0000;">&quot;%d&quot;</span>,<span style="color: #000040;">&amp;</span>n<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
          <span style="color: #0000ff;">if</span><span style="color: #008000;">&#40;</span>n<span style="color: #000080;">==</span><span style="color: #0000dd;">0</span><span style="color: #008000;">&#41;</span> <span style="color: #0000ff;">break</span><span style="color: #008080;">;</span>
          sum<span style="color: #000080;">=</span><span style="color: #0000dd;">0</span><span style="color: #008080;">;</span>
          <span style="color: #0000ff;">for</span><span style="color: #008000;">&#40;</span>i<span style="color: #000080;">=</span><span style="color: #0000dd;">0</span><span style="color: #008080;">;</span>i<span style="color: #000080;">&lt;</span>n<span style="color: #008080;">;</span><span style="color: #000040;">++</span>i<span style="color: #008000;">&#41;</span>
          <span style="color: #008000;">&#123;</span>
               <span style="color: #0000dd;">scanf</span><span style="color: #008000;">&#40;</span><span style="color: #FF0000;">&quot;%d&quot;</span>,<span style="color: #000040;">&amp;</span>a<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
               sum<span style="color: #000040;">+</span><span style="color: #000080;">=</span>a<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span>
          <span style="color: #008000;">&#125;</span>
          <span style="color: #0000ff;">if</span><span style="color: #008000;">&#40;</span>sum<span style="color: #000040;">%</span><span style="color:#800080;">2</span><span style="color: #000080;">==</span><span style="color: #0000dd;">0</span><span style="color: #008000;">&#41;</span>
          <span style="color: #008000;">&#123;</span>
               temp<span style="color: #000080;">=</span>sum<span style="color: #000040;">/</span><span style="color: #0000dd;">2</span><span style="color: #008080;">;</span>
               sign<span style="color: #000080;">=</span><span style="color: #0000dd;">1</span><span style="color: #008080;">;</span>
               sumtemp<span style="color: #000080;">=</span><span style="color: #0000dd;">0</span><span style="color: #008080;">;</span>
               <span style="color: #0000ff;">for</span><span style="color: #008000;">&#40;</span>j<span style="color: #000080;">=</span><span style="color: #0000dd;">0</span><span style="color: #008080;">;</span>j<span style="color: #000080;">&lt;</span>n<span style="color: #008080;">;</span><span style="color: #000040;">++</span>j<span style="color: #008000;">&#41;</span>
               <span style="color: #008000;">&#123;</span>
                    <span style="color: #0000ff;">if</span><span style="color: #008000;">&#40;</span>temp<span style="color: #000080;">==</span>sumtemp<span style="color: #008000;">&#41;</span>
                    <span style="color: #008000;">&#123;</span>
                         sign<span style="color: #000080;">=</span><span style="color: #0000dd;">0</span><span style="color: #008080;">;</span>
                         <span style="color: #0000dd;">printf</span><span style="color: #008000;">&#40;</span><span style="color: #FF0000;">&quot;Sam stops at position %d and Ella stops at position %d.<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span>,j,j<span style="color: #000040;">+</span><span style="color: #0000dd;">1</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
                         <span style="color: #0000ff;">break</span><span style="color: #008080;">;</span>
                    <span style="color: #008000;">&#125;</span>
                    sumtemp<span style="color: #000040;">+</span><span style="color: #000080;">=</span>a<span style="color: #008000;">&#91;</span>j<span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span>
&nbsp;
               <span style="color: #008000;">&#125;</span>
               <span style="color: #0000ff;">if</span><span style="color: #008000;">&#40;</span>sign<span style="color: #008000;">&#41;</span>
               <span style="color: #008000;">&#123;</span>
                    <span style="color: #0000dd;">printf</span><span style="color: #008000;">&#40;</span><span style="color: #FF0000;">&quot;No equal partitioning.<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
               <span style="color: #008000;">&#125;</span>
          <span style="color: #008000;">&#125;</span>
          <span style="color: #0000ff;">else</span>
          <span style="color: #008000;">&#123;</span>
               <span style="color: #0000dd;">printf</span><span style="color: #008000;">&#40;</span><span style="color: #FF0000;">&quot;No equal partitioning.<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
          <span style="color: #008000;">&#125;</span>
&nbsp;
     <span style="color: #008000;">&#125;</span>
     <span style="color: #0000dd;">system</span><span style="color: #008000;">&#40;</span><span style="color: #FF0000;">&quot;pause&quot;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
     <span style="color: #0000ff;">return</span> <span style="color: #0000dd;">0</span><span style="color: #008080;">;</span>
<span style="color: #008000;">&#125;</span></pre></td></tr></table></div>

]]></content:encoded>
			<wfw:commentRss>http://www.joansky.com/poj-1247-magnificent-meatballs-c.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>POJ 1226 Substrings C版本</title>
		<link>http://www.joansky.com/poj-1226-substrings-c.html</link>
		<comments>http://www.joansky.com/poj-1226-substrings-c.html#comments</comments>
		<pubDate>Sun, 20 Dec 2009 13:17:50 +0000</pubDate>
		<dc:creator>Joan</dc:creator>
				<category><![CDATA[解题报告]]></category>
		<category><![CDATA[C]]></category>
		<category><![CDATA[poj]]></category>

		<guid isPermaLink="false">http://www.joansky.com/?p=71</guid>
		<description><![CDATA[字符串查找 Description You are given a number of case-sensitive strings of alphabetic characters, find the largest string X, such that either X, or its inverse can be found as a substring of any of the given strings. Input The first line of the input contains a single integer t (1 &#60;= t &#60;= 10), the [...]]]></description>
			<content:encoded><![CDATA[<p>字符串查找</p>
<p><span id="more-71"></span></p>
<p>Description</p>
<p>You are given a number of case-sensitive strings of alphabetic characters, find the largest string X, such that either X, or its inverse can be found as a substring of any of the given strings.</p>
<p>Input</p>
<p>The first line of the input contains a single integer t (1 &lt;= t &lt;= 10), the number of test cases, followed by the input data for each test case. The first line of each test case contains a single integer n (1 &lt;= n &lt;= 100), the number of given strings, followed by n lines, each representing one string of minimum length 1 and maximum length 100. There is no extra white space before and after a string.</p>
<p>Output</p>
<p>There should be one line per test case containing the length of the largest string found.</p>
<p>Sample Input</p>
<p>2<br />
3<br />
ABCD<br />
BCDFF<br />
BRCD<br />
2<br />
rose<br />
orchid</p>
<p>Sample Output</p>
<p>2<br />
2</p>
<p><span style="color: #ff0000;">题目大意</span></p>
<p><span style="color: #ff0000;">找出n个字符串中相同的最大子串长度，其子串的逆序也可以作为子串</span></p>
<p><span style="color: #ff0000;">考察到字符串函数 strncpy,strlen,strrev,strstr的运用，一开始我按顺序查找前两个的最大子串长度，再找出子串与下一个字符串最大子串长度，这显然是RA，因为两个字符串中可能存在次子串，匹配到最后时，次子串可能比最大子串的长度大。</span></p>
<p><span style="color: #ff0000;">正确解法的思路已经做了注释，直接看代码吧</span></p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
</pre></td><td class="code"><pre class="cpp" style="font-family:Verdana,Courier New;"><span style="color: #339900;">#include&lt;stdio.h&gt;</span>
<span style="color: #339900;">#include&lt;string.h&gt;</span>
<span style="color: #339900;">#define MAX 105</span>
&nbsp;
<span style="color: #0000ff;">int</span> n<span style="color: #008080;">;</span>
<span style="color: #0000ff;">char</span> str<span style="color: #008000;">&#91;</span>MAX<span style="color: #008000;">&#93;</span><span style="color: #008000;">&#91;</span>MAX<span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span>
&nbsp;
<span style="color: #0000ff;">int</span> work<span style="color: #008000;">&#40;</span><span style="color: #0000ff;">char</span> s<span style="color: #008000;">&#91;</span><span style="color: #008000;">&#93;</span><span style="color: #008000;">&#41;</span>
<span style="color: #008000;">&#123;</span>
     <span style="color: #0000ff;">int</span> i,j,scourelen,laterlen,sign<span style="color: #008080;">;</span>
     <span style="color: #0000ff;">char</span> scorestr<span style="color: #008000;">&#91;</span>MAX<span style="color: #008000;">&#93;</span>,laterstr<span style="color: #008000;">&#91;</span>MAX<span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span>
     scourelen<span style="color: #000080;">=</span><span style="color: #0000dd;">strlen</span><span style="color: #008000;">&#40;</span>s<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
     laterlen<span style="color: #000080;">=</span><span style="color: #0000dd;">strlen</span><span style="color: #008000;">&#40;</span>s<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
     <span style="color: #ff0000;">/*按长度递减对字符串进行分割*/</span>
     <span style="color: #0000ff;">while</span><span style="color: #008000;">&#40;</span>laterlen<span style="color: #000080;">&gt;</span><span style="color: #0000dd;">0</span><span style="color: #008000;">&#41;</span>
     <span style="color: #008000;">&#123;</span>
          <span style="color: #0000ff;">for</span><span style="color: #008000;">&#40;</span>i<span style="color: #000080;">=</span><span style="color: #0000dd;">0</span><span style="color: #008080;">;</span>i<span style="color: #000080;">&lt;=</span>scourelen<span style="color: #000040;">-</span>laterlen<span style="color: #008080;">;</span>i<span style="color: #000040;">++</span><span style="color: #008000;">&#41;</span>
          <span style="color: #008000;">&#123;</span>
               <span style="color: #0000dd;">strncpy</span><span style="color: #008000;">&#40;</span>scorestr,s<span style="color: #000040;">+</span>i,laterlen<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
               <span style="color: #0000dd;">strncpy</span><span style="color: #008000;">&#40;</span>laterstr,s<span style="color: #000040;">+</span>i,laterlen<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
               scorestr<span style="color: #008000;">&#91;</span>laterlen<span style="color: #008000;">&#93;</span><span style="color: #000080;">=</span>laterstr<span style="color: #008000;">&#91;</span>laterlen<span style="color: #008000;">&#93;</span><span style="color: #000080;">=</span><span style="color: #FF0000;">'<span style="color: #006699; font-weight: bold;">\0</span>'</span><span style="color: #008080;">;</span>
               strrev<span style="color: #008000;">&#40;</span>laterstr<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
               <span style="color: #ff0000;">/*让子串与所有字符串进行匹配*/</span>
               sign<span style="color: #000080;">=</span><span style="color: #0000dd;">1</span><span style="color: #008080;">;</span>
               <span style="color: #0000ff;">for</span><span style="color: #008000;">&#40;</span>j<span style="color: #000080;">=</span><span style="color: #0000dd;">0</span><span style="color: #008080;">;</span>j<span style="color: #000080;">&lt;</span>n<span style="color: #008080;">;</span><span style="color: #000040;">++</span>j<span style="color: #008000;">&#41;</span>
               <span style="color: #008000;">&#123;</span>
                    <span style="color: #ff0000;">/*当字符串中正反顺序都没有匹配成功时退出*/</span>
                    <span style="color: #0000ff;">if</span><span style="color: #008000;">&#40;</span><span style="color: #0000dd;">strstr</span><span style="color: #008000;">&#40;</span>str<span style="color: #008000;">&#91;</span>j<span style="color: #008000;">&#93;</span>,scorestr<span style="color: #008000;">&#41;</span><span style="color: #000080;">==</span><span style="color: #0000ff;">NULL</span><span style="color: #000040;">&amp;&amp;</span><span style="color: #0000dd;">strstr</span><span style="color: #008000;">&#40;</span>str<span style="color: #008000;">&#91;</span>j<span style="color: #008000;">&#93;</span>,laterstr<span style="color: #008000;">&#41;</span><span style="color: #000080;">==</span><span style="color: #0000ff;">NULL</span><span style="color: #008000;">&#41;</span>
                    <span style="color: #008000;">&#123;</span>
                         sign<span style="color: #000080;">=</span><span style="color: #0000dd;">0</span><span style="color: #008080;">;</span>
                         <span style="color: #0000ff;">break</span><span style="color: #008080;">;</span>
                    <span style="color: #008000;">&#125;</span>
               <span style="color: #008000;">&#125;</span>
               <span style="color: #ff0000;">/*当所有的字符串都匹配时，说明这已经是最大的字串了*/</span>
               <span style="color: #0000ff;">if</span><span style="color: #008000;">&#40;</span>sign<span style="color: #008000;">&#41;</span>
               <span style="color: #008000;">&#123;</span>
                    <span style="color: #0000ff;">return</span> laterlen<span style="color: #008080;">;</span>
               <span style="color: #008000;">&#125;</span>
          <span style="color: #008000;">&#125;</span>
          laterlen<span style="color: #000040;">--</span><span style="color: #008080;">;</span>
     <span style="color: #008000;">&#125;</span>
     <span style="color: #0000ff;">return</span> <span style="color: #0000dd;">0</span><span style="color: #008080;">;</span>
<span style="color: #008000;">&#125;</span>
<span style="color: #0000ff;">int</span> main<span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span>
<span style="color: #008000;">&#123;</span>
     <span style="color: #0000ff;">int</span> t,maxlength,i<span style="color: #008080;">;</span>
     <span style="color: #0000ff;">char</span> substr<span style="color: #008000;">&#91;</span>MAX<span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span>
     <span style="color: #0000dd;">scanf</span><span style="color: #008000;">&#40;</span><span style="color: #FF0000;">&quot;%d&quot;</span>,<span style="color: #000040;">&amp;</span>t<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
     <span style="color: #0000ff;">while</span><span style="color: #008000;">&#40;</span>t<span style="color: #000040;">--</span><span style="color: #008000;">&#41;</span>
     <span style="color: #008000;">&#123;</span>
          <span style="color: #0000dd;">scanf</span><span style="color: #008000;">&#40;</span><span style="color: #FF0000;">&quot;%d&quot;</span>,<span style="color: #000040;">&amp;</span>n<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
          maxlength <span style="color: #000080;">=</span> MAX<span style="color: #008080;">;</span>
          <span style="color: #0000ff;">for</span><span style="color: #008000;">&#40;</span>i<span style="color: #000080;">=</span><span style="color: #0000dd;">0</span><span style="color: #008080;">;</span>i<span style="color: #000080;">&lt;</span>n<span style="color: #008080;">;</span><span style="color: #000040;">++</span>i<span style="color: #008000;">&#41;</span>
          <span style="color: #008000;">&#123;</span>
               <span style="color: #0000dd;">scanf</span><span style="color: #008000;">&#40;</span><span style="color: #FF0000;">&quot;%s&quot;</span>,<span style="color: #000040;">&amp;</span>str<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
               <span style="color: #ff0000;">/*找出长度最短的字符串*/</span>
               <span style="color: #0000ff;">if</span><span style="color: #008000;">&#40;</span>maxlength<span style="color: #000080;">&gt;</span><span style="color: #0000dd;">strlen</span><span style="color: #008000;">&#40;</span>str<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">&#41;</span>
               <span style="color: #008000;">&#123;</span>
                    <span style="color: #0000dd;">strcpy</span><span style="color: #008000;">&#40;</span>substr,str<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
                    maxlength<span style="color: #000080;">=</span><span style="color: #0000dd;">strlen</span><span style="color: #008000;">&#40;</span>str<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
&nbsp;
               <span style="color: #008000;">&#125;</span>
          <span style="color: #008000;">&#125;</span>
          <span style="color: #0000dd;">printf</span><span style="color: #008000;">&#40;</span><span style="color: #FF0000;">&quot;%d<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span>,work<span style="color: #008000;">&#40;</span>substr<span style="color: #008000;">&#41;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
     <span style="color: #008000;">&#125;</span>
     <span style="color: #0000dd;">system</span><span style="color: #008000;">&#40;</span><span style="color: #FF0000;">&quot;pause&quot;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
     <span style="color: #0000ff;">return</span> <span style="color: #0000dd;">0</span><span style="color: #008080;">;</span>
<span style="color: #008000;">&#125;</span></pre></td></tr></table></div>

]]></content:encoded>
			<wfw:commentRss>http://www.joansky.com/poj-1226-substrings-c.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>print与echo在使用时需注意的地方 PHP</title>
		<link>http://www.joansky.com/print-echo-php.html</link>
		<comments>http://www.joansky.com/print-echo-php.html#comments</comments>
		<pubDate>Thu, 17 Dec 2009 12:48:09 +0000</pubDate>
		<dc:creator>Joan</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[打印]]></category>

		<guid isPermaLink="false">http://www.joansky.com/?p=70</guid>
		<description><![CDATA[在写代码时，输出语句用得是最多的，刚学习PHP，写程序输出时，时不时给我“Parse error”（分析错误），为此郁闷了很久，上网查了下，原来在“print&#60;&#60;&#60;EOT 你要打印的东西 EOT;”，后面的EOT必须出现在行首，且前面不能出现符号（空格也是符号）； 顺便总结下，在使用print、print()、echo、echo()需要注意的地方，它们在使用上没什么区别，只是print、print()有返回值 1：当你要输出多个变量时，要么以“.”符号把多个值连接起来，要么用双引号把多个值包含起来 print ("$t $t"); print $t.$t ; 这些都是可行的 2：使用 print &#60;&#60;&#60;EOT EOT; 或 echo&#60;&#60;&#60;EOT 在这里直接输入打印的内容，不需要加分号。打印的内容有引号时也不需要加转义字符 EOT; 末尾的EOT一定要放在行首，且前面不能有空格。不要忘记后面还有个分号 一般使用“print&#60;&#60;&#60;EOT 输出语句 EOT;” 来打印html代码和JavaScript]]></description>
			<content:encoded><![CDATA[<p>在写代码时，输出语句用得是最多的，刚学习PHP，写程序输出时，时不时给我“Parse error”（分析错误），为此郁闷了很久，上网查了下，原来在“print&lt;&lt;&lt;EOT 你要打印的东西 EOT;”，后面的EOT必须出现在行首，且前面不能出现符号（空格也是符号）；</p>
<p>顺便总结下，在使用print、print()、echo、echo()需要注意的地方，它们在使用上没什么区别，只是print、print()有返回值</p>
<p>1：当你要输出多个变量时，要么以“.”符号把多个值连接起来，要么用双引号把多个值包含起来</p>
<p><span style="color: #0000ff;">print ("$t $t");</span></p>
<p><span style="color: #0000ff;">print $t.$t ;</span></p>
<p>这些都是可行的</p>
<p>2：使用</p>
<p>print &lt;&lt;&lt;EOT<br />
EOT;</p>
<p>或</p>
<p><span style="color: #0000ff;">echo&lt;&lt;&lt;EOT</span></p>
<p><span style="color: #0000ff;">在这里直接输入打印的内容，不需要加分号。打印的内容有引号时也不需要加转义字符<br />
</span></p>
<p><span style="color: #0000ff;">EOT;</span></p>
<p><span style="color: #ff0000;">末尾的EOT一定要放在行首，且前面不能有空格。不要忘记后面还有个分号</span></p>
<p>一般使用“print&lt;&lt;&lt;EOT 输出语句 EOT;” 来打印html代码和JavaScript</p>
]]></content:encoded>
			<wfw:commentRss>http://www.joansky.com/print-echo-php.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>用PHP写正则表达式应注意的问题</title>
		<link>http://www.joansky.com/regular-expressions-php.html</link>
		<comments>http://www.joansky.com/regular-expressions-php.html#comments</comments>
		<pubDate>Sun, 13 Dec 2009 04:16:34 +0000</pubDate>
		<dc:creator>Joan</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[正则表达式]]></category>

		<guid isPermaLink="false">http://www.joansky.com/?p=66</guid>
		<description><![CDATA[刚开始学正则表达式，在实战用PHP写正则表达式遇到一些问题，记录下 1， 正则表达式在正常情况下包含在两个斜杠（"/"）之间，所以一个最基本的正则表达式如"/php/" 2，用正则表达式查找文本中的匹配的字符串时，正则表达式用单引号表示所要查找的字符串，这样可以避免一些特殊的字符需要转义的情况 3，采用函数时，关注下它的试用期，eregi函数已不建议使用；这里php帮助文档，每天都在更新，你可以从这里得到最新的信息。 preg_match('/(?&#60;=p\()\d+(?=\))/',$subject,$matches)，最近在写PHP时用到正则表达式，简单解释下这是什么意思: 先解释下preg_match函数的作用 在$subject字符串中查找与正则表达式"/(?&#60;=p\()\d+(?=\))/"想匹配的内容，把查找的结果保存在$matches数组中,数组$matches中第一个元素包含与整个模式匹配的文本，第二个元素包含与第一个元素匹配的文本，依次类推。 正则表达式：/(?&#60;=p\()\d+(?=\))/ 1：最左边和最右边的"/"是每个表达式所必需的 2：(?&#60;=p\()：可以把它提取成(?&#60;表达式)，这就是所谓的零宽度正回顾后发断言，查找表达式后面出现的字符。"p\("：这个就是我们需要查找的表达式，这里查找的是"p(";但是在正则表达式中括号是元字符，所以需要加转义字符"\" 3：\d+；"\d"表示数字（0-9），"\d+"表示匹配一个或多个数字 4：(?=\))：一样把它提取出来(?=表达式)，这就是零宽度正预测先行断言，查找表达式前面出现的字符。"\)",这里查找时")"，同样需要加转义字符"\" 这整个表达就是匹配出现在 p()，括号中间出现的数字，如果括号中间出现非数字的字符，这就不匹配了； 如，$subject = 'p(12345)www'; 那么得到$matches[0] = 12345，]]></description>
			<content:encoded><![CDATA[<p>刚开始学正则表达式，在实战用PHP写正则表达式遇到一些问题，记录下</p>
<p>1， 正则表达式在正常情况下包含在两个斜杠（"/"）之间，所以一个最基本的正则表达式如"/php/"</p>
<p>2，用正则表达式查找文本中的匹配的字符串时，正则表达式用单引号表示所要查找的字符串，这样可以避免一些特殊的字符需要转义的情况</p>
<p>3，采用函数时，关注下它的试用期，eregi函数已不建议使用；这里<a href="http://www.php.net/manual/en/" target="_blank">php帮助文档</a>，每天都在更新，你可以从这里得到最新的信息。</p>
<p>preg_match('/(?&lt;=p\()\d+(?=\))/',$subject,$matches)，最近在写PHP时用到正则表达式，简单解释下这是什么意思:<br />
先解释下<span style="color: #0000ff;">preg_match</span>函数的作用</p>
<p>在$subject字符串中查找与正则表达式"/(?&lt;=p\()\d+(?=\))/"想匹配的内容，把查找的结果保存在$matches数组中,数组$matches中第一个元素包含与整个模式匹配的文本，第二个元素包含与第一个元素匹配的文本，依次类推。<br />
正则表达式：<span style="color: #0000ff;">/(?&lt;=p\()\d+(?=\))/</span><br />
1：最左边和最右边的"/"是每个表达式所必需的</p>
<p>2：(?&lt;=p\()：可以把它提取成(?&lt;表达式)，这就是所谓的零宽度正回顾后发断言，查找表达式后面出现的字符。"p\("：这个就是我们需要查找的表达式，这里查找的是"p(";但是在正则表达式中括号是元字符，所以需要加转义字符"\"</p>
<p>3：\d+；"\d"表示数字（0-9），"\d+"表示匹配一个或多个数字</p>
<p>4：(?=\))：一样把它提取出来(?=表达式)，这就是零宽度正预测先行断言，查找表达式前面出现的字符。"\)",这里查找时")"，同样需要加转义字符"\"</p>
<p>这整个表达就是匹配出现在 p()，括号中间出现的数字，如果括号中间出现非数字的字符，这就不匹配了；</p>
<p>如，$subject = 'p(12345)www';<br />
那么得到$matches[0] = 12345，</p>
]]></content:encoded>
			<wfw:commentRss>http://www.joansky.com/regular-expressions-php.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>大一学年的成果</title>
		<link>http://www.joansky.com/college-life5.html</link>
		<comments>http://www.joansky.com/college-life5.html#comments</comments>
		<pubDate>Sun, 13 Dec 2009 03:30:39 +0000</pubDate>
		<dc:creator>Joan</dc:creator>
				<category><![CDATA[生活琐事]]></category>
		<category><![CDATA[证书]]></category>

		<guid isPermaLink="false">http://www.joansky.com/?p=65</guid>
		<description><![CDATA[大一一学年的努力，换来了三张荣誉证书：学习标兵，二等专业奖学金和优秀团员。这些都是院级的奖，看见校级的那些，纸质好多了。恩，继续努力，希望明年能争取拿个校级的~ 留几张照片记录下]]></description>
			<content:encoded><![CDATA[<p>大一一学年的努力，换来了三张荣誉证书：学习标兵，二等专业奖学金和优秀团员。这些都是院级的奖，看见校级的那些，纸质好多了。恩，继续努力，希望明年能争取拿个校级的~</p>
<p>留几张照片记录下</p>
<p><span id="more-65"></span></p>
<p><img class="alignnone size-full wp-image-67" title="zhengshu_1" src="http://www.joansky.com/wp-content/uploads/2009/12/zhengshu_1.jpg" alt="zhengshu_1" width="550" height="412" /></p>
<p><img class="alignnone size-full wp-image-68" title="zhengshu_2" src="http://www.joansky.com/wp-content/uploads/2009/12/zhengshu_2.jpg" alt="zhengshu_2" width="550" height="412" /></p>
<p><img class="alignnone size-full wp-image-69" title="zhengshu_3" src="http://www.joansky.com/wp-content/uploads/2009/12/zhengshu_3.jpg" alt="zhengshu_3" width="550" height="412" /></p>
]]></content:encoded>
			<wfw:commentRss>http://www.joansky.com/college-life5.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>澳门游</title>
		<link>http://www.joansky.com/travel-macao.html</link>
		<comments>http://www.joansky.com/travel-macao.html#comments</comments>
		<pubDate>Fri, 04 Dec 2009 03:54:15 +0000</pubDate>
		<dc:creator>Joan</dc:creator>
				<category><![CDATA[生活琐事]]></category>
		<category><![CDATA[旅游]]></category>

		<guid isPermaLink="false">http://www.joansky.com/?p=61</guid>
		<description><![CDATA[折腾了好久，终于逮到了大家都空闲的周末去了趟澳门。 去澳门前没啥计划，浪费时间又浪费精力，以后出门前可得好好计划下行程才行。 从大陆进澳门时，需要过两个关口，中国边检检查与澳门关闸。由于我们是中午11点才到过境边检，赶上人流高峰期，排了足足两个小时的队，把我的心情都磨掉了~ 没事先换澳币，过境后直接搭乘新葡京的免费车到赌城。赌，在大陆是违法行为，一般人都一种“反逆”心理，你不让我干，我偏要干。大陆居民们对澳门这个一个开放赌场的行为产生强烈的好奇心，这也是澳门吸引了大量大陆游客的地方。要不然，澳门地方小，物价贵，就算是逛街，拍风景来一次已足已，大陆居民们没必要一直办签证来澳门。 新葡京的豪华就不说了，逛了一圈后，顺便在里面的取款机取了澳币后离开，来到大三巴街，基本上每个店面都是专卖店，手表，珠宝也比较多，价格没大陆便宜，所以没啥收获~ 后来逛了一些文化建筑特色，时间有限，只到了妈阁庙，圣若瑟修远圣堂，在附近有些教学区，建筑风格保有圣堂的特征。大三巴牌坊，大炮台，旧城墙遗址和哪吒庙。这些地方都相隔都比较近。 在每个大马路的拐角处都有个澳门的地图，有一点点建筑特色的遗址在地图上都罗列了，我们就是一直按着地图上找这些地方，也绕了不少没必要路，来之前没详细计划的后果~ 有玩的肯定有吃的，除了新葡京，一直往殷皇子大马路可以找到一些有名的小吃，葡挞，双皮奶，牛杂串串烧（其实跟OK里做法差不多，就是品种多样化了）、牛扒包，珍珠奶茶（估计是没找到正宗的，没觉得有啥特别之处）。听说海蟹粥也是一大特色，已经饱腹感十足的我，只好放过了~ 从澳门到大陆依旧需要通过两个关口，澳门出境和中国边检，出境的时候是晚上7点，也就比较容易了。 ps：大陆的中国移动卡到了澳门是没有信号的，其它类型的卡估计也是吧，不过在海拔较高（大炮台）的地方能接受到信号。]]></description>
			<content:encoded><![CDATA[<p>折腾了好久，终于逮到了大家都空闲的周末去了趟澳门。</p>
<p>去澳门前没啥计划，浪费时间又浪费精力，以后出门前可得好好计划下行程才行。</p>
<p>从大陆进澳门时，需要过两个关口，中国边检检查与澳门关闸。由于我们是中午11点才到过境边检，赶上人流高峰期，排了足足两个小时的队，把我的心情都磨掉了~</p>
<p>没事先换澳币，过境后直接搭乘新葡京的免费车到赌城。赌，在大陆是违法行为，一般人都一种“反逆”心理，你不让我干，我偏要干。大陆居民们对澳门这个一个开放赌场的行为产生强烈的好奇心，这也是澳门吸引了大量大陆游客的地方。要不然，澳门地方小，物价贵，就算是逛街，拍风景来一次已足已，大陆居民们没必要一直办签证来澳门。</p>
<p>新葡京的豪华就不说了，逛了一圈后，顺便在里面的取款机取了澳币后离开，来到大三巴街，基本上每个店面都是专卖店，手表，珠宝也比较多，价格没大陆便宜，所以没啥收获~</p>
<p>后来逛了一些文化建筑特色，时间有限，只到了妈阁庙，圣若瑟修远圣堂，在附近有些教学区，建筑风格保有圣堂的特征。大三巴牌坊，大炮台，旧城墙遗址和哪吒庙。这些地方都相隔都比较近。</p>
<p>在每个大马路的拐角处都有个澳门的地图，有一点点建筑特色的遗址在地图上都罗列了，我们就是一直按着地图上找这些地方，也绕了不少没必要路，来之前没详细计划的后果~</p>
<p>有玩的肯定有吃的，除了新葡京，一直往殷皇子大马路可以找到一些有名的小吃，葡挞，双皮奶，牛杂串串烧（其实跟OK里做法差不多，就是品种多样化了）、牛扒包，珍珠奶茶（估计是没找到正宗的，没觉得有啥特别之处）。听说海蟹粥也是一大特色，已经饱腹感十足的我，只好放过了~</p>
<p>从澳门到大陆依旧需要通过两个关口，澳门出境和中国边检，出境的时候是晚上7点，也就比较容易了。</p>
<p>ps：大陆的中国移动卡到了澳门是没有信号的，其它类型的卡估计也是吧，不过在海拔较高（大炮台）的地方能接受到信号。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.joansky.com/travel-macao.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Bellman-Ford算法 单源最短路径</title>
		<link>http://www.joansky.com/bellman-ford.html</link>
		<comments>http://www.joansky.com/bellman-ford.html#comments</comments>
		<pubDate>Sun, 29 Nov 2009 12:53:40 +0000</pubDate>
		<dc:creator>Joan</dc:creator>
				<category><![CDATA[编程相关]]></category>
		<category><![CDATA[算法]]></category>

		<guid isPermaLink="false">http://www.joansky.com/?p=60</guid>
		<description><![CDATA[解决的问题依旧是找出A城市到B城市的最短路径 Bellman-Ford算法，找出各个顶点间的最短路径，路径权值可以是负数，但是不能存在负权回路（在这一回路中存在负权路径）。 而Dijkstra算法，是找出某个顶点到其它顶点的最短路径。当然Dijkstra也可以找出各个顶点间的最短路径，只要做n次Dijkstra就行了。 思路： 对每对顶点i、j，不断缩小i到j的最短路径的权。在i、j中加入顶点k，判断从i到k和k到j路径的和是否小于i到j的路径长度，如果是将k加入，并调整i到j的路径长度。 缩小的条件: a[i][j]&#62;a[i][k]+a[k][j]; （a：每对顶点的路径长度） 下面两组测试数组，前一组没构成负权回路，后一组是负权回路，无法得出正确结果 第一组： 5 1 2 6 2 3 5 3 2 -2 5 3 -3 4 3 7 2 4 -4 5 4 9 1 5 7 4 1 2 2 5 8 0 0 0 第二组： 3 1 2 2 2 3 3 3 1 -8 [...]]]></description>
			<content:encoded><![CDATA[<p>解决的问题依旧是找出A城市到B城市的最短路径</p>
<p>Bellman-Ford算法，找出各个顶点间的最短路径，路径权值可以是负数，但是不能存在负权回路（在这一回路中存在负权路径）。<br />
而Dijkstra算法，是找出某个顶点到其它顶点的最短路径。当然Dijkstra也可以找出各个顶点间的最短路径，只要做n次Dijkstra就行了。</p>
<p>思路：<br />
对每对顶点i、j，不断缩小i到j的最短路径的权。在i、j中加入顶点k，判断从i到k和k到j路径的和是否小于i到j的路径长度，如果是将k加入，并调整i到j的路径长度。</p>
<p><span style="color: #0000ff;">缩小的条件: a[i][j]&gt;a[i][k]+a[k][j]; （a：每对顶点的路径长度）</span></p>
<p>下面两组测试数组，前一组没构成负权回路，后一组是负权回路，无法得出正确结果</p>
<p>第一组：</p>
<p>5<br />
1 2 6<br />
2 3 5<br />
3 2 -2<br />
5 3 -3<br />
4 3 7<br />
2 4 -4<br />
5 4 9<br />
1 5 7<br />
4 1 2<br />
2 5 8<br />
0 0 0</p>
<p>第二组：</p>
<p>3<br />
1 2 2<br />
2 3 3<br />
3 1 -8<br />
0 0 0</p>
<p><span id="more-60"></span></p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
</pre></td><td class="code"><pre class="cpp" style="font-family:Verdana,Courier New;"><span style="color: #339900;">#include&lt;stdio.h&gt;</span>
<span style="color: #339900;">#define MAX 10000</span>
&nbsp;
<span style="color: #ff0000;">/*路径长度矩阵*/</span>
<span style="color: #0000ff;">int</span> a<span style="color: #008000;">&#91;</span><span style="color: #0000dd;">100</span><span style="color: #008000;">&#93;</span><span style="color: #008000;">&#91;</span><span style="color: #0000dd;">100</span><span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span>
<span style="color: #ff0000;">/*路径后继矩阵*/</span> 
<span style="color: #0000ff;">int</span> path<span style="color: #008000;">&#91;</span><span style="color: #0000dd;">100</span><span style="color: #008000;">&#93;</span><span style="color: #008000;">&#91;</span><span style="color: #0000dd;">100</span><span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span>
<span style="color: #ff0000;">/*路径权值矩阵*/</span> 
<span style="color: #0000ff;">int</span> c<span style="color: #008000;">&#91;</span><span style="color: #0000dd;">100</span><span style="color: #008000;">&#93;</span><span style="color: #008000;">&#91;</span><span style="color: #0000dd;">100</span><span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span>
&nbsp;
<span style="color: #0000ff;">void</span> Floyd<span style="color: #008000;">&#40;</span><span style="color: #0000ff;">int</span> n<span style="color: #008000;">&#41;</span>
<span style="color: #008000;">&#123;</span>
    <span style="color: #0000ff;">int</span> i,j,k<span style="color: #008080;">;</span>
    <span style="color: #ff0000;">/*初始化a，path*/</span>
    <span style="color: #0000ff;">for</span><span style="color: #008000;">&#40;</span>i<span style="color: #000080;">=</span><span style="color: #0000dd;">1</span><span style="color: #008080;">;</span>i<span style="color: #000080;">&lt;=</span>n<span style="color: #008080;">;</span><span style="color: #000040;">++</span>i<span style="color: #008000;">&#41;</span>
    <span style="color: #008000;">&#123;</span>
        <span style="color: #0000ff;">for</span><span style="color: #008000;">&#40;</span>j<span style="color: #000080;">=</span><span style="color: #0000dd;">1</span><span style="color: #008080;">;</span>j<span style="color: #000080;">&lt;=</span>n<span style="color: #008080;">;</span><span style="color: #000040;">++</span>j<span style="color: #008000;">&#41;</span>
        <span style="color: #008000;">&#123;</span>
            <span style="color: #0000ff;">if</span><span style="color: #008000;">&#40;</span>c<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span><span style="color: #008000;">&#91;</span>j<span style="color: #008000;">&#93;</span><span style="color: #000040;">!</span><span style="color: #000080;">=</span>MAX<span style="color: #008000;">&#41;</span>
            <span style="color: #008000;">&#123;</span>
                path<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span><span style="color: #008000;">&#91;</span>j<span style="color: #008000;">&#93;</span><span style="color: #000080;">=</span>j<span style="color: #008080;">;</span>
            <span style="color: #008000;">&#125;</span>
            <span style="color: #0000ff;">else</span> 
            <span style="color: #008000;">&#123;</span>
                path<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span><span style="color: #008000;">&#91;</span>j<span style="color: #008000;">&#93;</span><span style="color: #000080;">=</span><span style="color: #000040;">-</span><span style="color: #0000dd;">1</span><span style="color: #008080;">;</span>
            <span style="color: #008000;">&#125;</span>
            a<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span><span style="color: #008000;">&#91;</span>j<span style="color: #008000;">&#93;</span><span style="color: #000080;">=</span>c<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span><span style="color: #008000;">&#91;</span>j<span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span>
        <span style="color: #008000;">&#125;</span>
    <span style="color: #008000;">&#125;</span>
    <span style="color: #ff0000;">/*尝试将顶点k扩充到已求得的从i到j的最短路径p上*/</span>
    <span style="color: #0000ff;">for</span><span style="color: #008000;">&#40;</span>k<span style="color: #000080;">=</span><span style="color: #0000dd;">1</span><span style="color: #008080;">;</span>k<span style="color: #000080;">&lt;=</span>n<span style="color: #008080;">;</span><span style="color: #000040;">++</span>k<span style="color: #008000;">&#41;</span>
    <span style="color: #008000;">&#123;</span>
        <span style="color: #0000ff;">for</span><span style="color: #008000;">&#40;</span>i<span style="color: #000080;">=</span><span style="color: #0000dd;">1</span><span style="color: #008080;">;</span>i<span style="color: #000080;">&lt;=</span>n<span style="color: #008080;">;</span><span style="color: #000040;">++</span>i<span style="color: #008000;">&#41;</span>
        <span style="color: #008000;">&#123;</span>
            <span style="color: #0000ff;">for</span><span style="color: #008000;">&#40;</span>j<span style="color: #000080;">=</span><span style="color: #0000dd;">1</span><span style="color: #008080;">;</span>j<span style="color: #000080;">&lt;=</span>n<span style="color: #008080;">;</span><span style="color: #000040;">++</span>j<span style="color: #008000;">&#41;</span>
            <span style="color: #008000;">&#123;</span>
                <span style="color: #0000ff;">if</span><span style="color: #008000;">&#40;</span>a<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span><span style="color: #008000;">&#91;</span>j<span style="color: #008000;">&#93;</span><span style="color: #000080;">&gt;</span>a<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span><span style="color: #008000;">&#91;</span>k<span style="color: #008000;">&#93;</span><span style="color: #000040;">+</span>a<span style="color: #008000;">&#91;</span>k<span style="color: #008000;">&#93;</span><span style="color: #008000;">&#91;</span>j<span style="color: #008000;">&#93;</span><span style="color: #008000;">&#41;</span>
                <span style="color: #008000;">&#123;</span>
                    <span style="color: #ff0000;">/*修改路径长度*/</span>
                    a<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span><span style="color: #008000;">&#91;</span>j<span style="color: #008000;">&#93;</span><span style="color: #000080;">=</span>a<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span><span style="color: #008000;">&#91;</span>k<span style="color: #008000;">&#93;</span><span style="color: #000040;">+</span>a<span style="color: #008000;">&#91;</span>k<span style="color: #008000;">&#93;</span><span style="color: #008000;">&#91;</span>j<span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span>
                    <span style="color: #ff0000;">/*修改路径*/</span>
                    path<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span><span style="color: #008000;">&#91;</span>j<span style="color: #008000;">&#93;</span><span style="color: #000080;">=</span>path<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span><span style="color: #008000;">&#91;</span>k<span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span>
                <span style="color: #008000;">&#125;</span>
            <span style="color: #008000;">&#125;</span>
        <span style="color: #008000;">&#125;</span>
    <span style="color: #008000;">&#125;</span>
<span style="color: #008000;">&#125;</span>
&nbsp;
<span style="color: #ff0000;">/*判断是否是负权回路*/</span>
<span style="color: #0000ff;">int</span> isNegationLoop<span style="color: #008000;">&#40;</span><span style="color: #0000ff;">int</span> n<span style="color: #008000;">&#41;</span>
<span style="color: #008000;">&#123;</span>
    <span style="color: #0000ff;">int</span> i,j,k<span style="color: #008080;">;</span>
    <span style="color: #0000ff;">for</span><span style="color: #008000;">&#40;</span>k<span style="color: #000080;">=</span><span style="color: #0000dd;">1</span><span style="color: #008080;">;</span>k<span style="color: #000080;">&lt;=</span>n<span style="color: #008080;">;</span><span style="color: #000040;">++</span>k<span style="color: #008000;">&#41;</span>
    <span style="color: #008000;">&#123;</span>
        <span style="color: #0000ff;">for</span><span style="color: #008000;">&#40;</span>i<span style="color: #000080;">=</span><span style="color: #0000dd;">1</span><span style="color: #008080;">;</span>i<span style="color: #000080;">&lt;=</span>n<span style="color: #008080;">;</span><span style="color: #000040;">++</span>i<span style="color: #008000;">&#41;</span>
        <span style="color: #008000;">&#123;</span>
            <span style="color: #0000ff;">for</span><span style="color: #008000;">&#40;</span>j<span style="color: #000080;">=</span><span style="color: #0000dd;">1</span><span style="color: #008080;">;</span>j<span style="color: #000080;">&lt;=</span>n<span style="color: #008080;">;</span><span style="color: #000040;">++</span>j<span style="color: #008000;">&#41;</span>
            <span style="color: #008000;">&#123;</span>
                <span style="color: #ff0000;">/*如果存在顶点k，从i到j存在一条更短的路径，则构成负权回路*/</span>
                <span style="color: #0000ff;">if</span><span style="color: #008000;">&#40;</span>a<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span><span style="color: #008000;">&#91;</span>j<span style="color: #008000;">&#93;</span><span style="color: #000080;">&gt;</span>a<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span><span style="color: #008000;">&#91;</span>k<span style="color: #008000;">&#93;</span><span style="color: #000040;">+</span>a<span style="color: #008000;">&#91;</span>k<span style="color: #008000;">&#93;</span><span style="color: #008000;">&#91;</span>j<span style="color: #008000;">&#93;</span><span style="color: #008000;">&#41;</span>
                <span style="color: #008000;">&#123;</span>
                    <span style="color: #0000ff;">return</span> <span style="color: #0000dd;">0</span><span style="color: #008080;">;</span>
                <span style="color: #008000;">&#125;</span>
            <span style="color: #008000;">&#125;</span>
        <span style="color: #008000;">&#125;</span>
    <span style="color: #008000;">&#125;</span>
    <span style="color: #0000ff;">return</span> <span style="color: #0000dd;">1</span><span style="color: #008080;">;</span>
<span style="color: #008000;">&#125;</span>
&nbsp;
<span style="color: #ff0000;">/*打印各对顶点的路径情况*/</span>
<span style="color: #0000ff;">void</span> Print<span style="color: #008000;">&#40;</span><span style="color: #0000ff;">int</span> n<span style="color: #008000;">&#41;</span>
<span style="color: #008000;">&#123;</span>
    <span style="color: #0000ff;">int</span> i,j,next<span style="color: #008080;">;</span>
    <span style="color: #0000ff;">for</span><span style="color: #008000;">&#40;</span>i<span style="color: #000080;">=</span><span style="color: #0000dd;">1</span><span style="color: #008080;">;</span>i<span style="color: #000080;">&lt;=</span>n<span style="color: #008080;">;</span><span style="color: #000040;">++</span>i<span style="color: #008000;">&#41;</span>
    <span style="color: #008000;">&#123;</span>
        <span style="color: #0000ff;">for</span><span style="color: #008000;">&#40;</span>j<span style="color: #000080;">=</span><span style="color: #0000dd;">1</span><span style="color: #008080;">;</span>j<span style="color: #000080;">&lt;=</span>n<span style="color: #008080;">;</span><span style="color: #000040;">++</span>j<span style="color: #008000;">&#41;</span>
        <span style="color: #008000;">&#123;</span>
            <span style="color: #ff0000;">/*naxt为path的后续顶点*/</span>
            next<span style="color: #000080;">=</span>path<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span><span style="color: #008000;">&#91;</span>j<span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span>
            <span style="color: #0000ff;">if</span><span style="color: #008000;">&#40;</span>next<span style="color: #000080;">==</span><span style="color: #000040;">-</span><span style="color: #0000dd;">1</span><span style="color: #008000;">&#41;</span>
            <span style="color: #008000;">&#123;</span>
                <span style="color: #0000dd;">printf</span><span style="color: #008000;">&#40;</span><span style="color: #FF0000;">&quot;%d - %d no path<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span>,i,j<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
            <span style="color: #008000;">&#125;</span>
            <span style="color: #0000ff;">else</span> 
            <span style="color: #008000;">&#123;</span>
                <span style="color: #ff0000;">/*每对顶点i、j的路径长度*/</span>
                <span style="color: #0000dd;">printf</span><span style="color: #008000;">&#40;</span><span style="color: #FF0000;">&quot;%d &quot;</span>,a<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span><span style="color: #008000;">&#91;</span>j<span style="color: #008000;">&#93;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
                <span style="color: #0000dd;">printf</span><span style="color: #008000;">&#40;</span><span style="color: #FF0000;">&quot;%d &quot;</span>,i<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
                <span style="color: #0000ff;">while</span><span style="color: #008000;">&#40;</span>next<span style="color: #000040;">!</span><span style="color: #000080;">=</span>j<span style="color: #008000;">&#41;</span>
                <span style="color: #008000;">&#123;</span>
                    <span style="color: #0000dd;">printf</span><span style="color: #008000;">&#40;</span><span style="color: #FF0000;">&quot;-&gt; %d &quot;</span>,next<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
                    <span style="color: #ff0000;">/*继续找下一后续顶点*/</span>
                    next<span style="color: #000080;">=</span>path<span style="color: #008000;">&#91;</span>next<span style="color: #008000;">&#93;</span><span style="color: #008000;">&#91;</span>j<span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span>
                <span style="color: #008000;">&#125;</span>
                <span style="color: #0000dd;">printf</span><span style="color: #008000;">&#40;</span><span style="color: #FF0000;">&quot;-&gt; %d<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span>,j<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
            <span style="color: #008000;">&#125;</span>
        <span style="color: #008000;">&#125;</span>
    <span style="color: #008000;">&#125;</span>
<span style="color: #008000;">&#125;</span>
&nbsp;
<span style="color: #0000ff;">int</span> main<span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span>
<span style="color: #008000;">&#123;</span>
    <span style="color: #0000ff;">int</span> n,i,j,x,y,value<span style="color: #008080;">;</span>
    <span style="color: #0000dd;">scanf</span><span style="color: #008000;">&#40;</span><span style="color: #FF0000;">&quot;%d&quot;</span>,<span style="color: #000040;">&amp;</span>n<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
    <span style="color: #ff0000;">/*初始化c*/</span> 
    <span style="color: #0000ff;">for</span><span style="color: #008000;">&#40;</span>i<span style="color: #000080;">=</span><span style="color: #0000dd;">0</span><span style="color: #008080;">;</span>i<span style="color: #000080;">&lt;=</span>n<span style="color: #008080;">;</span><span style="color: #000040;">++</span>i<span style="color: #008000;">&#41;</span>
    <span style="color: #008000;">&#123;</span>
        <span style="color: #0000ff;">for</span><span style="color: #008000;">&#40;</span>j<span style="color: #000080;">=</span><span style="color: #0000dd;">0</span><span style="color: #008080;">;</span>j<span style="color: #000080;">&lt;=</span>n<span style="color: #008080;">;</span><span style="color: #000040;">++</span>j<span style="color: #008000;">&#41;</span>
        <span style="color: #008000;">&#123;</span>
            <span style="color: #0000ff;">if</span><span style="color: #008000;">&#40;</span>i<span style="color: #000080;">==</span>j<span style="color: #008000;">&#41;</span>
            <span style="color: #008000;">&#123;</span>
                c<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span><span style="color: #008000;">&#91;</span>j<span style="color: #008000;">&#93;</span><span style="color: #000080;">=</span><span style="color: #0000dd;">0</span><span style="color: #008080;">;</span>
            <span style="color: #008000;">&#125;</span>
            <span style="color: #0000ff;">else</span> 
            <span style="color: #008000;">&#123;</span>
                c<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span><span style="color: #008000;">&#91;</span>j<span style="color: #008000;">&#93;</span><span style="color: #000080;">=</span>MAX<span style="color: #008080;">;</span>
            <span style="color: #008000;">&#125;</span>
        <span style="color: #008000;">&#125;</span>
    <span style="color: #008000;">&#125;</span>
    <span style="color: #0000ff;">while</span><span style="color: #008000;">&#40;</span><span style="color: #0000dd;">1</span><span style="color: #008000;">&#41;</span>
    <span style="color: #008000;">&#123;</span>
        <span style="color: #ff0000;">/*读入权值*/</span>
        <span style="color: #0000dd;">scanf</span><span style="color: #008000;">&#40;</span><span style="color: #FF0000;">&quot;%d%d%d&quot;</span>,<span style="color: #000040;">&amp;</span>x,<span style="color: #000040;">&amp;</span>y,<span style="color: #000040;">&amp;</span>value<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
        <span style="color: #0000ff;">if</span><span style="color: #008000;">&#40;</span>x<span style="color: #000080;">==</span><span style="color: #0000dd;">0</span><span style="color: #000040;">&amp;&amp;</span>y<span style="color: #000080;">==</span><span style="color: #0000dd;">0</span><span style="color: #000040;">&amp;&amp;</span>value<span style="color: #000080;">==</span><span style="color: #0000dd;">0</span><span style="color: #008000;">&#41;</span>
        <span style="color: #008000;">&#123;</span>
            <span style="color: #0000ff;">break</span><span style="color: #008080;">;</span>
        <span style="color: #008000;">&#125;</span>
        c<span style="color: #008000;">&#91;</span>x<span style="color: #008000;">&#93;</span><span style="color: #008000;">&#91;</span>y<span style="color: #008000;">&#93;</span><span style="color: #000080;">=</span>value<span style="color: #008080;">;</span>
    <span style="color: #008000;">&#125;</span>
    Floyd<span style="color: #008000;">&#40;</span>n<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
    <span style="color: #0000ff;">if</span><span style="color: #008000;">&#40;</span>isNegationLoop<span style="color: #008000;">&#40;</span>n<span style="color: #008000;">&#41;</span><span style="color: #008000;">&#41;</span>
    <span style="color: #008000;">&#123;</span>
        Print<span style="color: #008000;">&#40;</span>n<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
    <span style="color: #008000;">&#125;</span>
    <span style="color: #0000ff;">else</span> 
    <span style="color: #008000;">&#123;</span>
        <span style="color: #0000dd;">printf</span><span style="color: #008000;">&#40;</span><span style="color: #FF0000;">&quot;the short loop isn't exit<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span> 
    <span style="color: #008000;">&#125;</span>
    <span style="color: #0000dd;">system</span><span style="color: #008000;">&#40;</span><span style="color: #FF0000;">&quot;pause&quot;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
    <span style="color: #0000ff;">return</span> <span style="color: #0000dd;">0</span><span style="color: #008080;">;</span>
<span style="color: #008000;">&#125;</span></pre></td></tr></table></div>

]]></content:encoded>
			<wfw:commentRss>http://www.joansky.com/bellman-ford.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Dijkstra算法 单源最短路径</title>
		<link>http://www.joansky.com/dijkstra.html</link>
		<comments>http://www.joansky.com/dijkstra.html#comments</comments>
		<pubDate>Sun, 29 Nov 2009 12:40:03 +0000</pubDate>
		<dc:creator>Joan</dc:creator>
				<category><![CDATA[编程相关]]></category>
		<category><![CDATA[算法]]></category>

		<guid isPermaLink="false">http://www.joansky.com/?p=59</guid>
		<description><![CDATA[问题： 从A城市到B城市，中间有n条路径供你选择，每条路径的距离（权值）是不一样的，让你选择一条从A城市（A顶点）到B城市（B顶点）的最短路线，即找出两点间的最短路径。 Dijkstra算法能够为我们解决这一类问题，找出源点s源点到其它顶点的最短路径，但要求每条路径权值必须是非负的。 思路： 设置两个集合分别为集合s，集合t。s存放已找出的最短路径顶点；t，存放待加入顶点。源点为v，从源点到t集合中顶点权值d[t]已经确定，在这些确定的权值里选择最小的一个k，并把k从t移到s中，对u的所有出边进行调整，满足调整的条件： d[t]&#62;d[k]+c[k][t] (c:顶点k到t之间的权值) 具体实现看下面的代码，注释也写得很清楚了，下面是测试数据： 1 5 7 1 2 10 1 5 100 1 4 30 2 3 50 4 3 20 4 5 60 3 5 10 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 [...]]]></description>
			<content:encoded><![CDATA[<p>问题：</p>
<p>从A城市到B城市，中间有n条路径供你选择，每条路径的距离（权值）是不一样的，让你选择一条从A城市（A顶点）到B城市（B顶点）的最短路线，即找出两点间的最短路径。</p>
<p>Dijkstra算法能够为我们解决这一类问题，找出源点s源点到其它顶点的最短路径，但要求每条路径权值必须是非负的。</p>
<p>思路：</p>
<p>设置两个集合分别为集合s，集合t。s存放已找出的最短路径顶点；t，存放待加入顶点。源点为v，从源点到t集合中顶点权值d[t]已经确定，在这些确定的权值里选择最小的一个k，并把k从t移到s中，对u的所有出边进行调整，满足调整的条件：</p>
<p><span style="color: #0000ff;">d[t]&gt;d[k]+c[k][t] (c:顶点k到t之间的权值)</span></p>
<p>具体实现看下面的代码，注释也写得很清楚了，下面是测试数据：</p>
<p>1 5 7<br />
1 2 10<br />
1 5 100<br />
1 4 30<br />
2 3 50<br />
4 3 20<br />
4 5 60<br />
3 5 10</p>
<p><span id="more-59"></span></p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
</pre></td><td class="code"><pre class="cpp" style="font-family:Verdana,Courier New;"><span style="color: #339900;">#include&lt;stdio.h&gt;</span>
<span style="color: #339900;">#define MAX 10000</span>
&nbsp;
<span style="color: #ff0000;">/*权值矩阵*/</span>
<span style="color: #0000ff;">int</span> c<span style="color: #008000;">&#91;</span><span style="color: #0000dd;">1005</span><span style="color: #008000;">&#93;</span><span style="color: #008000;">&#91;</span><span style="color: #0000dd;">1005</span><span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span>
<span style="color: #ff0000;">/*顶点权值*/</span>
<span style="color: #0000ff;">int</span> d<span style="color: #008000;">&#91;</span><span style="color: #0000dd;">1005</span><span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span>
<span style="color: #ff0000;">/*前驱顶点*/</span>
<span style="color: #0000ff;">int</span> p<span style="color: #008000;">&#91;</span><span style="color: #0000dd;">1005</span><span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span>
<span style="color: #ff0000;">/*标记是否是s集合*/</span>
<span style="color: #0000ff;">int</span> s<span style="color: #008000;">&#91;</span><span style="color: #0000dd;">1005</span><span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span>
&nbsp;
&nbsp;
<span style="color: #0000ff;">void</span> dijkstra<span style="color: #008000;">&#40;</span><span style="color: #0000ff;">int</span> v,<span style="color: #0000ff;">int</span> n<span style="color: #008000;">&#41;</span>
<span style="color: #008000;">&#123;</span>
    <span style="color: #0000ff;">int</span> i,j,min,k<span style="color: #008080;">;</span>
    <span style="color: #ff0000;">/**/</span>
    <span style="color: #0000ff;">for</span><span style="color: #008000;">&#40;</span>i<span style="color: #000080;">=</span><span style="color: #0000dd;">1</span><span style="color: #008080;">;</span>i<span style="color: #000080;">&lt;=</span>n<span style="color: #008080;">;</span><span style="color: #000040;">++</span>i<span style="color: #008000;">&#41;</span>
    <span style="color: #008000;">&#123;</span>
        <span style="color: #ff0000;">/*确定源点到集合t中顶点的权值*/</span>
        d<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span><span style="color: #000080;">=</span>c<span style="color: #008000;">&#91;</span>v<span style="color: #008000;">&#93;</span><span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span>
        <span style="color: #ff0000;">/*确定集合t的前驱顶点*/</span>
        <span style="color: #0000ff;">if</span><span style="color: #008000;">&#40;</span>d<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span><span style="color: #000040;">!</span><span style="color: #000080;">=</span>MAX<span style="color: #008000;">&#41;</span>
        <span style="color: #008000;">&#123;</span>
            p<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span><span style="color: #000080;">=</span>v<span style="color: #008080;">;</span>
        <span style="color: #008000;">&#125;</span>
        <span style="color: #0000ff;">else</span> p<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span><span style="color: #000080;">=</span><span style="color: #0000dd;">0</span><span style="color: #008080;">;</span>
    <span style="color: #008000;">&#125;</span>
    <span style="color: #ff0000;">/*初始化集合s，开始为空*/</span>
    <span style="color: #0000ff;">for</span><span style="color: #008000;">&#40;</span>i<span style="color: #000080;">=</span><span style="color: #0000dd;">1</span><span style="color: #008080;">;</span>i<span style="color: #000080;">&lt;=</span>n<span style="color: #008080;">;</span><span style="color: #000040;">++</span>i<span style="color: #008000;">&#41;</span>
    <span style="color: #008000;">&#123;</span>
        s<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span><span style="color: #000080;">=</span><span style="color: #0000dd;">0</span><span style="color: #008080;">;</span>
    <span style="color: #008000;">&#125;</span>
    <span style="color: #ff0000;">/*把源点v加入到集合s里*/</span>
    s<span style="color: #008000;">&#91;</span>v<span style="color: #008000;">&#93;</span><span style="color: #000080;">=</span><span style="color: #0000dd;">1</span><span style="color: #008080;">;</span>
    d<span style="color: #008000;">&#91;</span>v<span style="color: #008000;">&#93;</span><span style="color: #000080;">=</span><span style="color: #0000dd;">0</span><span style="color: #008080;">;</span>
    <span style="color: #ff0000;">/*扩充s集，直到t中所有的顶点都进入s集*/</span>
    <span style="color: #0000ff;">for</span><span style="color: #008000;">&#40;</span>i<span style="color: #000080;">=</span><span style="color: #0000dd;">1</span><span style="color: #008080;">;</span>i<span style="color: #000080;">&lt;</span>n<span style="color: #008080;">;</span><span style="color: #000040;">++</span>i<span style="color: #008000;">&#41;</span>
    <span style="color: #008000;">&#123;</span>
        min<span style="color: #000080;">=</span>MAX<span style="color: #008080;">;</span>
        <span style="color: #ff0000;">/*在t中选择权值最小的顶点k*/</span>
        <span style="color: #0000ff;">for</span><span style="color: #008000;">&#40;</span>j<span style="color: #000080;">=</span><span style="color: #0000dd;">1</span><span style="color: #008080;">;</span>j<span style="color: #000080;">&lt;=</span>n<span style="color: #008080;">;</span><span style="color: #000040;">++</span>j<span style="color: #008000;">&#41;</span>
        <span style="color: #008000;">&#123;</span>
            <span style="color: #0000ff;">if</span><span style="color: #008000;">&#40;</span><span style="color: #008000;">&#40;</span><span style="color: #000040;">!</span>s<span style="color: #008000;">&#91;</span>j<span style="color: #008000;">&#93;</span><span style="color: #008000;">&#41;</span><span style="color: #000040;">&amp;&amp;</span>d<span style="color: #008000;">&#91;</span>j<span style="color: #008000;">&#93;</span><span style="color: #000080;">&lt;</span>min<span style="color: #008000;">&#41;</span>
            <span style="color: #008000;">&#123;</span>
                min<span style="color: #000080;">=</span>d<span style="color: #008000;">&#91;</span>j<span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span>
                k<span style="color: #000080;">=</span>j<span style="color: #008080;">;</span>
            <span style="color: #008000;">&#125;</span>
        <span style="color: #008000;">&#125;</span>
        <span style="color: #ff0000;">/*加到s中*/</span>
        s<span style="color: #008000;">&#91;</span>k<span style="color: #008000;">&#93;</span><span style="color: #000080;">=</span><span style="color: #0000dd;">1</span><span style="color: #008080;">;</span>
        <span style="color: #ff0000;">/*调整t中各点的距离值*/</span>
        <span style="color: #0000ff;">for</span><span style="color: #008000;">&#40;</span>j<span style="color: #000080;">=</span><span style="color: #0000dd;">1</span><span style="color: #008080;">;</span>j<span style="color: #000080;">&lt;=</span>n<span style="color: #008080;">;</span><span style="color: #000040;">++</span>j<span style="color: #008000;">&#41;</span>
        <span style="color: #008000;">&#123;</span>
            <span style="color: #ff0000;">/*如果t中j的权值大于k+&lt;k,j&gt;的权值，则调整*/</span>
            <span style="color: #0000ff;">if</span><span style="color: #008000;">&#40;</span><span style="color: #008000;">&#40;</span><span style="color: #000040;">!</span>s<span style="color: #008000;">&#91;</span>j<span style="color: #008000;">&#93;</span><span style="color: #008000;">&#41;</span><span style="color: #000040;">&amp;&amp;</span><span style="color: #008000;">&#40;</span>d<span style="color: #008000;">&#91;</span>j<span style="color: #008000;">&#93;</span><span style="color: #000080;">&gt;</span>d<span style="color: #008000;">&#91;</span>k<span style="color: #008000;">&#93;</span><span style="color: #000040;">+</span>c<span style="color: #008000;">&#91;</span>k<span style="color: #008000;">&#93;</span><span style="color: #008000;">&#91;</span>j<span style="color: #008000;">&#93;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">&#41;</span>
            <span style="color: #008000;">&#123;</span>
                d<span style="color: #008000;">&#91;</span>j<span style="color: #008000;">&#93;</span><span style="color: #000080;">=</span>d<span style="color: #008000;">&#91;</span>k<span style="color: #008000;">&#93;</span><span style="color: #000040;">+</span>c<span style="color: #008000;">&#91;</span>k<span style="color: #008000;">&#93;</span><span style="color: #008000;">&#91;</span>j<span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span>
                <span style="color: #ff0000;">/*k是j的前驱*/</span>
                p<span style="color: #008000;">&#91;</span>j<span style="color: #008000;">&#93;</span><span style="color: #000080;">=</span>k<span style="color: #008080;">;</span>
            <span style="color: #008000;">&#125;</span>
        <span style="color: #008000;">&#125;</span>
    <span style="color: #008000;">&#125;</span>
<span style="color: #008000;">&#125;</span>
<span style="color: #ff0000;">/*打印源点到各顶点的路径情况*/</span>
<span style="color: #0000ff;">void</span> Print<span style="color: #008000;">&#40;</span><span style="color: #0000ff;">int</span> n<span style="color: #008000;">&#41;</span>
<span style="color: #008000;">&#123;</span>
    <span style="color: #0000ff;">int</span> i,pre<span style="color: #008080;">;</span>
    <span style="color: #0000ff;">for</span><span style="color: #008000;">&#40;</span>i<span style="color: #000080;">=</span><span style="color: #0000dd;">1</span><span style="color: #008080;">;</span>i<span style="color: #000080;">&lt;=</span>n<span style="color: #008080;">;</span><span style="color: #000040;">++</span>i<span style="color: #008000;">&#41;</span>
    <span style="color: #008000;">&#123;</span>
        <span style="color: #0000dd;">printf</span><span style="color: #008000;">&#40;</span><span style="color: #FF0000;">&quot;%d %d&quot;</span>,d<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span>,i<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
        pre<span style="color: #000080;">=</span>p<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span>
        <span style="color: #0000ff;">while</span><span style="color: #008000;">&#40;</span>pre<span style="color: #000040;">!</span><span style="color: #000080;">=</span><span style="color: #0000dd;">0</span><span style="color: #008000;">&#41;</span>
        <span style="color: #008000;">&#123;</span>
            <span style="color: #0000dd;">printf</span><span style="color: #008000;">&#40;</span><span style="color: #FF0000;">&quot; &lt;- %d&quot;</span>,pre<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
            pre<span style="color: #000080;">=</span>p<span style="color: #008000;">&#91;</span>pre<span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span>
        <span style="color: #008000;">&#125;</span>
        <span style="color: #0000dd;">printf</span><span style="color: #008000;">&#40;</span><span style="color: #FF0000;">&quot;<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
    <span style="color: #008000;">&#125;</span>
<span style="color: #008000;">&#125;</span>
<span style="color: #0000ff;">int</span> main<span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span>
<span style="color: #008000;">&#123;</span>
    <span style="color: #0000ff;">int</span> s,n,m,i,j,x,y,d<span style="color: #008080;">;</span>
    <span style="color: #ff0000;">/*源点s，顶点数n，路径数m*/</span> 
    <span style="color: #0000dd;">scanf</span><span style="color: #008000;">&#40;</span><span style="color: #FF0000;">&quot;%d%d%d&quot;</span>,<span style="color: #000040;">&amp;</span>s,<span style="color: #000040;">&amp;</span>n,<span style="color: #000040;">&amp;</span>m<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
    <span style="color: #ff0000;">/*初始化权值矩阵*/</span>
    <span style="color: #0000ff;">for</span><span style="color: #008000;">&#40;</span>i<span style="color: #000080;">=</span><span style="color: #0000dd;">0</span><span style="color: #008080;">;</span>i<span style="color: #000080;">&lt;=</span>n<span style="color: #008080;">;</span><span style="color: #000040;">++</span>i<span style="color: #008000;">&#41;</span>
    <span style="color: #008000;">&#123;</span>
        <span style="color: #0000ff;">for</span><span style="color: #008000;">&#40;</span>j<span style="color: #000080;">=</span><span style="color: #0000dd;">0</span><span style="color: #008080;">;</span>j<span style="color: #000080;">&lt;=</span>n<span style="color: #008080;">;</span><span style="color: #000040;">++</span>j<span style="color: #008000;">&#41;</span>
        <span style="color: #008000;">&#123;</span>
            c<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span><span style="color: #008000;">&#91;</span>j<span style="color: #008000;">&#93;</span><span style="color: #000080;">=</span>MAX<span style="color: #008080;">;</span>
        <span style="color: #008000;">&#125;</span>
    <span style="color: #008000;">&#125;</span>
    <span style="color: #0000ff;">for</span><span style="color: #008000;">&#40;</span>i<span style="color: #000080;">=</span><span style="color: #0000dd;">0</span><span style="color: #008080;">;</span>i<span style="color: #000080;">&lt;</span>m<span style="color: #008080;">;</span><span style="color: #000040;">++</span>i<span style="color: #008000;">&#41;</span>
    <span style="color: #008000;">&#123;</span>
        <span style="color: #0000dd;">scanf</span><span style="color: #008000;">&#40;</span><span style="color: #FF0000;">&quot;%d%d%d&quot;</span>,<span style="color: #000040;">&amp;</span>x,<span style="color: #000040;">&amp;</span>y,<span style="color: #000040;">&amp;</span>d<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
        <span style="color: #0000ff;">if</span><span style="color: #008000;">&#40;</span>c<span style="color: #008000;">&#91;</span>x<span style="color: #008000;">&#93;</span><span style="color: #008000;">&#91;</span>y<span style="color: #008000;">&#93;</span><span style="color: #000080;">&gt;</span>d<span style="color: #008000;">&#41;</span>
        <span style="color: #008000;">&#123;</span>
            c<span style="color: #008000;">&#91;</span>x<span style="color: #008000;">&#93;</span><span style="color: #008000;">&#91;</span>y<span style="color: #008000;">&#93;</span><span style="color: #000080;">=</span>d<span style="color: #008080;">;</span>
            c<span style="color: #008000;">&#91;</span>y<span style="color: #008000;">&#93;</span><span style="color: #008000;">&#91;</span>x<span style="color: #008000;">&#93;</span><span style="color: #000080;">=</span>d<span style="color: #008080;">;</span>
        <span style="color: #008000;">&#125;</span>
    <span style="color: #008000;">&#125;</span>
    dijkstra<span style="color: #008000;">&#40;</span>s,n<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
    Print<span style="color: #008000;">&#40;</span>n<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
&nbsp;
<span style="color: #0000dd;">system</span><span style="color: #008000;">&#40;</span><span style="color: #FF0000;">&quot;pause&quot;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
<span style="color: #0000ff;">return</span> <span style="color: #0000dd;">0</span><span style="color: #008080;">;</span>
<span style="color: #008000;">&#125;</span></pre></td></tr></table></div>

]]></content:encoded>
			<wfw:commentRss>http://www.joansky.com/dijkstra.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>POJ 1019 Number Sequence C版本</title>
		<link>http://www.joansky.com/poj-1019-number-sequence-c.html</link>
		<comments>http://www.joansky.com/poj-1019-number-sequence-c.html#comments</comments>
		<pubDate>Sun, 29 Nov 2009 07:21:18 +0000</pubDate>
		<dc:creator>Joan</dc:creator>
				<category><![CDATA[解题报告]]></category>
		<category><![CDATA[C]]></category>
		<category><![CDATA[poj]]></category>

		<guid isPermaLink="false">http://www.joansky.com/?p=58</guid>
		<description><![CDATA[数学题 Description A single positive integer i is given. Write a program to find the digit located in the position i in the sequence of number groups S1S2...Sk. Each group Sk consists of a sequence of positive integer numbers ranging from 1 to k, written one after another. For example, the first 80 digits of [...]]]></description>
			<content:encoded><![CDATA[<p>数学题</p>
<p><span id="more-58"></span><br />
Description</p>
<p>A single positive integer i is given. Write a program to find the digit located in the position i in the sequence of number groups S1S2...Sk. Each group Sk consists of a sequence of positive integer numbers ranging from 1 to k, written one after another.<br />
For example, the first 80 digits of the sequence are as follows:<br />
11212312341234512345612345671234567812345678912345678910123456789101112345678910</p>
<p>Input</p>
<p>The first line of the input file contains a single integer t (1 ≤ t ≤ 10), the number of test cases, followed by one line for each test case. The line for a test case contains the single integer i (1 ≤ i ≤ 2147483647)</p>
<p>Output</p>
<p>There should be one output line per test case containing the digit located in the position i.</p>
<p>Sample Input</p>
<p>2<br />
8<br />
3</p>
<p>Sample Output</p>
<p>2<br />
2</p>
<p><span style="color: #ff0000;">题目大意</p>
<p>1121231234123451234561234567123456781234567891234567891012345678910111234......在这样的圈里，找出第n位的数字</p>
<p>思路</p>
<p>需要知道给出的数字num是在哪一段上，然后找出num是该段上哪个数字，再找出是在该数字的哪一位。</p>
<p>一个公式：计算出一个数的位数，(int)(log10((double)n))+1；</span></p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
</pre></td><td class="code"><pre class="cpp" style="font-family:Verdana,Courier New;"><span style="color: #339900;">#include&lt;stdio.h&gt;</span>
<span style="color: #339900;">#include&lt;math.h&gt;</span>
&nbsp;
<span style="color: #ff0000;">/*保存的数过大，采用无符号整形保存*/</span>
<span style="color: #ff0000;">/*a[i]为第i段总的数字位数*/</span>
<span style="color: #ff0000;">/*s[i]为前i断总的数字位数*/</span>
<span style="color: #0000ff;">unsigned</span> <span style="color: #0000ff;">int</span> a<span style="color: #008000;">&#91;</span><span style="color: #0000dd;">31270</span><span style="color: #008000;">&#93;</span>,s<span style="color: #008000;">&#91;</span><span style="color: #0000dd;">31270</span><span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span>
&nbsp;
<span style="color: #ff0000;">/*初始化a，s，打表*/</span>
<span style="color: #0000ff;">void</span> reset<span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span>
<span style="color: #008000;">&#123;</span>
    <span style="color: #0000ff;">int</span> i<span style="color: #008080;">;</span>
    a<span style="color: #008000;">&#91;</span><span style="color: #0000dd;">1</span><span style="color: #008000;">&#93;</span><span style="color: #000080;">=</span><span style="color: #0000dd;">1</span><span style="color: #008080;">;</span>
    s<span style="color: #008000;">&#91;</span><span style="color: #0000dd;">1</span><span style="color: #008000;">&#93;</span><span style="color: #000080;">=</span><span style="color: #0000dd;">1</span><span style="color: #008080;">;</span>
    <span style="color: #0000ff;">for</span><span style="color: #008000;">&#40;</span>i<span style="color: #000080;">=</span><span style="color: #0000dd;">2</span><span style="color: #008080;">;</span>i<span style="color: #000080;">&lt;</span><span style="color: #0000dd;">31270</span><span style="color: #008080;">;</span><span style="color: #000040;">++</span>i<span style="color: #008000;">&#41;</span>
    <span style="color: #008000;">&#123;</span>
        <span style="color: #ff0000;">/*a[i]总的位数为a[i-1]+i的位数*/</span>
        a<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span><span style="color: #000080;">=</span>a<span style="color: #008000;">&#91;</span>i<span style="color: #000040;">-</span><span style="color: #0000dd;">1</span><span style="color: #008000;">&#93;</span><span style="color: #000040;">+</span><span style="color: #008000;">&#40;</span><span style="color: #0000ff;">int</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">&#40;</span><span style="color: #0000dd;">log10</span><span style="color: #008000;">&#40;</span><span style="color: #008000;">&#40;</span><span style="color: #0000ff;">double</span><span style="color: #008000;">&#41;</span>i<span style="color: #008000;">&#41;</span><span style="color: #008000;">&#41;</span><span style="color: #000040;">+</span><span style="color: #0000dd;">1</span><span style="color: #008080;">;</span>
        s<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span><span style="color: #000080;">=</span>s<span style="color: #008000;">&#91;</span>i<span style="color: #000040;">-</span><span style="color: #0000dd;">1</span><span style="color: #008000;">&#93;</span><span style="color: #000040;">+</span>a<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span>
    <span style="color: #008000;">&#125;</span>
<span style="color: #008000;">&#125;</span>
&nbsp;
<span style="color: #0000ff;">int</span> work<span style="color: #008000;">&#40;</span><span style="color: #0000ff;">int</span> num<span style="color: #008000;">&#41;</span>
<span style="color: #008000;">&#123;</span>
    <span style="color: #0000ff;">int</span> i,location<span style="color: #008080;">;</span>
    <span style="color: #0000ff;">int</span> length<span style="color: #008080;">;</span>
&nbsp;
    <span style="color: #ff0000;">/*找出num处于哪个数段*/</span> 
    <span style="color: #0000ff;">for</span><span style="color: #008000;">&#40;</span>i<span style="color: #000080;">=</span><span style="color: #0000dd;">1</span><span style="color: #008080;">;</span>s<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span><span style="color: #000080;">&lt;</span>num<span style="color: #008080;">;</span><span style="color: #000040;">++</span>i<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
&nbsp;
    <span style="color: #ff0000;">/*找出num处于该段的哪个位置*/</span> 
    location<span style="color: #000080;">=</span>num<span style="color: #000040;">-</span>s<span style="color: #008000;">&#91;</span>i<span style="color: #000040;">-</span><span style="color: #0000dd;">1</span><span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span>
&nbsp;
    <span style="color: #ff0000;">/*找出该位置的数字，length:num指向的数字的最后一位的下标*/</span>
    length<span style="color: #000080;">=</span><span style="color: #0000dd;">0</span><span style="color: #008080;">;</span>
    <span style="color: #0000ff;">for</span><span style="color: #008000;">&#40;</span>i<span style="color: #000080;">=</span><span style="color: #0000dd;">1</span><span style="color: #008080;">;</span>location<span style="color: #000080;">&gt;</span>length<span style="color: #008080;">;</span><span style="color: #000040;">++</span>i<span style="color: #008000;">&#41;</span>
    <span style="color: #008000;">&#123;</span>
        length<span style="color: #000040;">+</span><span style="color: #000080;">=</span><span style="color: #008000;">&#40;</span><span style="color: #0000ff;">int</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">&#40;</span><span style="color: #0000dd;">log10</span><span style="color: #008000;">&#40;</span><span style="color: #008000;">&#40;</span><span style="color: #0000ff;">double</span><span style="color: #008000;">&#41;</span>i<span style="color: #008000;">&#41;</span><span style="color: #008000;">&#41;</span><span style="color: #000040;">+</span><span style="color: #0000dd;">1</span><span style="color: #008080;">;</span>
&nbsp;
    <span style="color: #008000;">&#125;</span>
&nbsp;
    <span style="color: #ff0000;">/*找出num在该数字上的哪个位，去除所求位后面的数字然后取余*/</span>
    <span style="color: #0000ff;">return</span> <span style="color: #008000;">&#40;</span>i<span style="color: #000040;">-</span><span style="color: #0000dd;">1</span><span style="color: #008000;">&#41;</span><span style="color: #000040;">/</span><span style="color: #008000;">&#40;</span><span style="color: #0000ff;">int</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">&#40;</span><span style="color: #0000dd;">pow</span><span style="color: #008000;">&#40;</span><span style="color: #008000;">&#40;</span><span style="color: #0000ff;">double</span><span style="color: #008000;">&#41;</span><span style="color: #0000dd;">10</span>,length<span style="color: #000040;">-</span>location<span style="color: #008000;">&#41;</span><span style="color: #008000;">&#41;</span><span style="color: #000040;">%</span><span style="color:#800080;">10</span><span style="color: #008080;">;</span>
&nbsp;
<span style="color: #008000;">&#125;</span>
&nbsp;
<span style="color: #0000ff;">int</span> main<span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span>
<span style="color: #008000;">&#123;</span>
    <span style="color: #0000ff;">int</span> n<span style="color: #008080;">;</span>
    <span style="color: #0000ff;">unsigned</span> <span style="color: #0000ff;">int</span> m<span style="color: #008080;">;</span>
    reset<span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
    <span style="color: #0000dd;">scanf</span><span style="color: #008000;">&#40;</span><span style="color: #FF0000;">&quot;%d&quot;</span>,<span style="color: #000040;">&amp;</span>n<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
    <span style="color: #0000ff;">while</span><span style="color: #008000;">&#40;</span>n<span style="color: #000040;">--</span><span style="color: #008000;">&#41;</span>
    <span style="color: #008000;">&#123;</span>
        <span style="color: #0000dd;">scanf</span><span style="color: #008000;">&#40;</span><span style="color: #FF0000;">&quot;%u&quot;</span>,<span style="color: #000040;">&amp;</span>m<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
        m<span style="color: #000080;">=</span>work<span style="color: #008000;">&#40;</span>m<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
        <span style="color: #0000dd;">printf</span><span style="color: #008000;">&#40;</span><span style="color: #FF0000;">&quot;%u<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span>,m<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
    <span style="color: #008000;">&#125;</span>
    <span style="color: #666666;">//system(&quot;pause&quot;);</span>
    <span style="color: #0000ff;">return</span> <span style="color: #0000dd;">0</span><span style="color: #008080;">;</span>
<span style="color: #008000;">&#125;</span></pre></td></tr></table></div>

]]></content:encoded>
			<wfw:commentRss>http://www.joansky.com/poj-1019-number-sequence-c.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>POJ 1029 False coin C版本</title>
		<link>http://www.joansky.com/poj-1029-false-coin-c.html</link>
		<comments>http://www.joansky.com/poj-1029-false-coin-c.html#comments</comments>
		<pubDate>Tue, 24 Nov 2009 13:47:23 +0000</pubDate>
		<dc:creator>Joan</dc:creator>
				<category><![CDATA[解题报告]]></category>
		<category><![CDATA[C]]></category>
		<category><![CDATA[poj]]></category>

		<guid isPermaLink="false">http://www.joansky.com/?p=57</guid>
		<description><![CDATA[数学题+算法 Description The "Gold Bar"bank received information from reliable sources that in their last group of N coins exactly one coin is false and differs in weight from other coins (while all other coins are equal in weight). After the economic crisis they have only a simple balance available (like one in the picture). Using [...]]]></description>
			<content:encoded><![CDATA[<p>数学题+算法</p>
<p><span id="more-57"></span></p>
<p>Description</p>
<p>The "Gold Bar"bank received information from reliable sources that in their last group of N coins exactly one coin is false and differs in weight from other coins (while all other coins are equal in weight). After the economic crisis they have only a simple balance available (like one in the picture). Using this balance, one is able to determine if the weight of objects in the left pan is less than, greater than, or equal to the weight of objects in the right pan.</p>
<p>In order to detect the false coin the bank employees numbered all coins by the integers from 1 to N, thus assigning each coin a unique integer identifier. After that they began to weight various groups of coins by placing equal numbers of coins in the left pan and in the right pan. The identifiers of coins and the results of the weightings were carefully recorded.</p>
<p>You are to write a program that will help the bank employees to determine the identifier of the false coin using the results of these weightings.</p>
<p>Input</p>
<p>The first line of the input file contains two integers N and K, separated by spaces, where N is the number of coins (2&lt;=N&lt;=1000 ) and K is the number of weightings fulfilled (1&lt;=K&lt;=100). The following 2K lines describe all weightings. Two consecutive lines describe each weighting. The first of them starts with a number Pi (1&lt;=Pi&lt;=N/2), representing the number of coins placed in the left and in the right pans, followed by Pi identifiers of coins placed in the left pan and Pi identifiers of coins placed in the right pan. All numbers are separated by spaces. The second line contains one of the following characters: '&lt;', '&gt;', or '='. It represents the result of the weighting:</p>
<p>'&lt;' means that the weight of coins in the left pan is less than the weight of coins in the right pan,<br />
'&gt;' means that the weight of coins in the left pan is greater than the weight of coins in the right pan,<br />
'=' means that the weight of coins in the left pan is equal to the weight of coins in the right pan.</p>
<p>Output</p>
<p>Write to the output file the identifier of the false coin or 0, if it cannot be found by the results of the given weightings.</p>
<p>Sample Input</p>
<p>5 3<br />
2 1 2 3 4<br />
&lt;<br />
1 1 4<br />
=<br />
1 2 5<br />
=</p>
<p>Sample Output</p>
<p>3</p>
<p><span style="color: #ff0000;">题目大意：找出假币。假币在每次不等式都应该出现。</p>
<p>写了一个代码，虽然AC了，但是相当复杂，学习了下slyar的算法，受益~</span></p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
</pre></td><td class="code"><pre class="cpp" style="font-family:Verdana,Courier New;"><span style="color: #339900;">#include&lt;stdio.h&gt;</span>
<span style="color: #339900;">#define MAX 1005</span>
&nbsp;
<span style="color: #0000ff;">int</span> main<span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span>
<span style="color: #008000;">&#123;</span>
    <span style="color: #0000ff;">int</span> n,m,i,p,sum,totle,num<span style="color: #008080;">;</span>
    <span style="color: #ff0000;">/*equal记录等式出现的值；
    t记录不等式出现的值；
    k保存读入的数据*/</span> 
    <span style="color: #0000ff;">int</span> equal<span style="color: #008000;">&#91;</span>MAX<span style="color: #008000;">&#93;</span>,t<span style="color: #008000;">&#91;</span>MAX<span style="color: #008000;">&#93;</span>，k<span style="color: #008000;">&#91;</span>MAX<span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span>
    <span style="color: #0000ff;">char</span> s<span style="color: #008080;">;</span>
    totle<span style="color: #000080;">=</span><span style="color: #0000dd;">0</span><span style="color: #008080;">;</span>
    <span style="color: #0000dd;">scanf</span><span style="color: #008000;">&#40;</span><span style="color: #FF0000;">&quot;%d&quot;</span>,<span style="color: #000040;">&amp;</span>n<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
    <span style="color: #0000dd;">scanf</span><span style="color: #008000;">&#40;</span><span style="color: #FF0000;">&quot;%d&quot;</span>,<span style="color: #000040;">&amp;</span>m<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
    <span style="color: #0000ff;">for</span><span style="color: #008000;">&#40;</span>i<span style="color: #000080;">=</span><span style="color: #0000dd;">1</span><span style="color: #008080;">;</span>i<span style="color: #000080;">&lt;=</span>n<span style="color: #008080;">;</span><span style="color: #000040;">++</span>i<span style="color: #008000;">&#41;</span>
    <span style="color: #008000;">&#123;</span>
        equal<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span><span style="color: #000080;">=</span><span style="color: #0000dd;">0</span><span style="color: #008080;">;</span>
        t<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span><span style="color: #000080;">=</span><span style="color: #0000dd;">0</span><span style="color: #008080;">;</span>
    <span style="color: #008000;">&#125;</span>
    <span style="color: #0000ff;">while</span><span style="color: #008000;">&#40;</span>m<span style="color: #000040;">--</span><span style="color: #008000;">&#41;</span>
    <span style="color: #008000;">&#123;</span>
        <span style="color: #0000dd;">scanf</span><span style="color: #008000;">&#40;</span><span style="color: #FF0000;">&quot;%d&quot;</span>,<span style="color: #000040;">&amp;</span>p<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
        <span style="color: #0000ff;">for</span><span style="color: #008000;">&#40;</span>i<span style="color: #000080;">=</span><span style="color: #0000dd;">0</span><span style="color: #008080;">;</span>i<span style="color: #000080;">&lt;</span>p<span style="color: #000040;">*</span><span style="color: #0000dd;">2</span><span style="color: #008080;">;</span><span style="color: #000040;">++</span>i<span style="color: #008000;">&#41;</span>
        <span style="color: #008000;">&#123;</span>
            <span style="color: #0000dd;">scanf</span><span style="color: #008000;">&#40;</span><span style="color: #FF0000;">&quot;%d&quot;</span>,<span style="color: #000040;">&amp;</span>k<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
        <span style="color: #008000;">&#125;</span>
        <span style="color: #0000dd;">getchar</span><span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
        <span style="color: #0000dd;">scanf</span><span style="color: #008000;">&#40;</span><span style="color: #FF0000;">&quot;%c&quot;</span>,<span style="color: #000040;">&amp;</span>s<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
        <span style="color: #0000ff;">if</span><span style="color: #008000;">&#40;</span>s<span style="color: #000080;">==</span><span style="color: #FF0000;">'='</span><span style="color: #008000;">&#41;</span>
        <span style="color: #008000;">&#123;</span>
            <span style="color: #0000ff;">for</span><span style="color: #008000;">&#40;</span>i<span style="color: #000080;">=</span><span style="color: #0000dd;">0</span><span style="color: #008080;">;</span>i<span style="color: #000080;">&lt;</span>p<span style="color: #000040;">*</span><span style="color: #0000dd;">2</span><span style="color: #008080;">;</span><span style="color: #000040;">++</span>i<span style="color: #008000;">&#41;</span>
            <span style="color: #008000;">&#123;</span>
                equal<span style="color: #008000;">&#91;</span>k<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span><span style="color: #008000;">&#93;</span><span style="color: #000080;">=</span><span style="color: #0000dd;">1</span><span style="color: #008080;">;</span>
            <span style="color: #008000;">&#125;</span>
        <span style="color: #008000;">&#125;</span>
        <span style="color: #0000ff;">else</span> <span style="color: #0000ff;">if</span><span style="color: #008000;">&#40;</span>s<span style="color: #000080;">==</span><span style="color: #FF0000;">'&gt;'</span><span style="color: #008000;">&#41;</span>
        <span style="color: #008000;">&#123;</span>
            <span style="color: #000040;">++</span>totle<span style="color: #008080;">;</span>
            <span style="color: #0000ff;">for</span><span style="color: #008000;">&#40;</span>i<span style="color: #000080;">=</span><span style="color: #0000dd;">0</span><span style="color: #008080;">;</span>i<span style="color: #000080;">&lt;</span>p<span style="color: #008080;">;</span><span style="color: #000040;">++</span>i<span style="color: #008000;">&#41;</span>
            <span style="color: #008000;">&#123;</span>
                <span style="color: #000040;">++</span>t<span style="color: #008000;">&#91;</span>k<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span><span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span>
            <span style="color: #008000;">&#125;</span>
            <span style="color: #0000ff;">for</span><span style="color: #008000;">&#40;</span>i<span style="color: #000080;">=</span>p<span style="color: #008080;">;</span>i<span style="color: #000080;">&lt;</span><span style="color: #0000dd;">2</span><span style="color: #000040;">*</span>p<span style="color: #008080;">;</span><span style="color: #000040;">++</span>i<span style="color: #008000;">&#41;</span>
            <span style="color: #008000;">&#123;</span>
                <span style="color: #000040;">--</span>t<span style="color: #008000;">&#91;</span>k<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span><span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span>
            <span style="color: #008000;">&#125;</span>
        <span style="color: #008000;">&#125;</span>
        <span style="color: #0000ff;">else</span> <span style="color: #0000ff;">if</span><span style="color: #008000;">&#40;</span>s<span style="color: #000080;">==</span><span style="color: #FF0000;">'&lt;'</span><span style="color: #008000;">&#41;</span>
        <span style="color: #008000;">&#123;</span>
            <span style="color: #000040;">++</span>totle<span style="color: #008080;">;</span>
            <span style="color: #0000ff;">for</span><span style="color: #008000;">&#40;</span>i<span style="color: #000080;">=</span><span style="color: #0000dd;">0</span><span style="color: #008080;">;</span>i<span style="color: #000080;">&lt;</span>p<span style="color: #008080;">;</span><span style="color: #000040;">++</span>i<span style="color: #008000;">&#41;</span>
            <span style="color: #008000;">&#123;</span>
                <span style="color: #000040;">--</span>t<span style="color: #008000;">&#91;</span>k<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span><span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span>
            <span style="color: #008000;">&#125;</span>
            <span style="color: #0000ff;">for</span><span style="color: #008000;">&#40;</span>i<span style="color: #000080;">=</span>p<span style="color: #008080;">;</span>i<span style="color: #000080;">&lt;</span><span style="color: #0000dd;">2</span><span style="color: #000040;">*</span>p<span style="color: #008080;">;</span><span style="color: #000040;">++</span>i<span style="color: #008000;">&#41;</span>
            <span style="color: #008000;">&#123;</span>
                <span style="color: #000040;">++</span>t<span style="color: #008000;">&#91;</span>k<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span><span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span>
            <span style="color: #008000;">&#125;</span>
        <span style="color: #008000;">&#125;</span>
    <span style="color: #008000;">&#125;</span>
    <span style="color: #ff0000;">/*假币在每个不等式中都应该出现*/</span>
    sum<span style="color: #000080;">=</span><span style="color: #0000dd;">0</span><span style="color: #008080;">;</span>
    <span style="color: #0000ff;">for</span><span style="color: #008000;">&#40;</span>i<span style="color: #000080;">=</span><span style="color: #0000dd;">1</span><span style="color: #008080;">;</span>i<span style="color: #000080;">&lt;=</span>n<span style="color: #008080;">;</span><span style="color: #000040;">++</span>i<span style="color: #008000;">&#41;</span>
    <span style="color: #008000;">&#123;</span>
        <span style="color: #0000ff;">if</span><span style="color: #008000;">&#40;</span>equal<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span><span style="color: #000080;">==</span><span style="color: #0000dd;">1</span><span style="color: #008000;">&#41;</span>
        <span style="color: #008000;">&#123;</span>
            <span style="color: #0000ff;">continue</span><span style="color: #008080;">;</span>
        <span style="color: #008000;">&#125;</span>
        <span style="color: #ff0000;">/*找出每次都出现的假币*/</span>
        <span style="color: #0000ff;">if</span><span style="color: #008000;">&#40;</span>t<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span><span style="color: #000080;">==</span>totle<span style="color: #000040;">||</span>t<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span><span style="color: #000080;">==</span><span style="color: #000040;">-</span>totle<span style="color: #008000;">&#41;</span>
        <span style="color: #008000;">&#123;</span>
            num<span style="color: #000080;">=</span>i<span style="color: #008080;">;</span>
            <span style="color: #000040;">++</span>sum<span style="color: #008080;">;</span>
        <span style="color: #008000;">&#125;</span>
    <span style="color: #008000;">&#125;</span>
    <span style="color: #0000ff;">if</span><span style="color: #008000;">&#40;</span>sum<span style="color: #000080;">==</span><span style="color: #0000dd;">1</span><span style="color: #008000;">&#41;</span>
    <span style="color: #008000;">&#123;</span>
        <span style="color: #0000dd;">printf</span><span style="color: #008000;">&#40;</span><span style="color: #FF0000;">&quot;%d<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span>,num<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
    <span style="color: #008000;">&#125;</span>
    <span style="color: #0000ff;">else</span> <span style="color: #0000dd;">printf</span><span style="color: #008000;">&#40;</span><span style="color: #FF0000;">&quot;0<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
    <span style="color: #666666;">//system(&quot;pause&quot;);</span>
    <span style="color: #0000ff;">return</span> <span style="color: #0000dd;">0</span><span style="color: #008080;">;</span>
<span style="color: #008000;">&#125;</span></pre></td></tr></table></div>

]]></content:encoded>
			<wfw:commentRss>http://www.joansky.com/poj-1029-false-coin-c.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>POJ 1207 The 3n + 1 problem C版本</title>
		<link>http://www.joansky.com/poj-1207-the-3n-1-problem-c.html</link>
		<comments>http://www.joansky.com/poj-1207-the-3n-1-problem-c.html#comments</comments>
		<pubDate>Tue, 24 Nov 2009 13:35:03 +0000</pubDate>
		<dc:creator>Joan</dc:creator>
				<category><![CDATA[解题报告]]></category>
		<category><![CDATA[C]]></category>
		<category><![CDATA[poj]]></category>

		<guid isPermaLink="false">http://www.joansky.com/?p=56</guid>
		<description><![CDATA[很水的数学题 Description Problems in Computer Science are often classified as belonging to a certain class of problems (e.g., NP, Unsolvable, Recursive). In this problem you will be analyzing a property of an algorithm whose classification is not known for all possible inputs. Consider the following algorithm: Given the input 22, the following sequence of numbers [...]]]></description>
			<content:encoded><![CDATA[<p>很水的数学题</p>
<p><span id="more-56"></span></p>
<p>Description</p>
<p>Problems in Computer Science are often classified as belonging to a certain class of problems (e.g., NP, Unsolvable, Recursive). In this problem you will be analyzing a property of an algorithm whose classification is not known for all possible inputs.</p>
<p>Consider the following algorithm:<br />
Given the input 22, the following sequence of numbers will be printed 22 11 34 17 52 26 13 40 20 10 5 16 8 4 2 1</p>
<p>It is conjectured that the algorithm above will terminate (when a 1 is printed) for any integral input value. Despite the simplicity of the algorithm, it is unknown whether this conjecture is true. It has been verified, however, for all integers n such that 0 < n < 1,000,000 (and, in fact, for many more numbers than this.) </p>
<p>Given an input n, it is possible to determine the number of numbers printed before the 1 is printed. For a given n this is called the cycle-length of n. In the example above, the cycle length of 22 is 16.</p>
<p>For any two numbers i and j you are to determine the maximum cycle length over all numbers between i and j.</p>
<p>Input</p>
<p>The input will consist of a series of pairs of integers i and j, one pair of integers per line. All integers will be less than 10,000 and greater than 0.</p>
<p>You should process all pairs of integers and for each pair determine the maximum cycle length over all integers between and including i and j.</p>
<p>Output</p>
<p>For each pair of input integers i and j you should output i, j, and the maximum cycle length for integers between and including i and j. These three numbers should be separated by at least one space with all three numbers on one line and with one line of output for each line of input. The integers i and j must appear in the output in the same order in which they appeared in the input and should be followed by the maximum cycle length (on the same line).</p>
<p>Sample Input</p>
<p>1 10<br />
100 200<br />
201 210<br />
900 1000</p>
<p>Sample Output</p>
<p>1 10 20<br />
100 200 125<br />
201 210 89<br />
900 1000 174</p>
<p><span style="color: #ff0000;">题目大意：当n为偶数时，n=n/2;当n为基数时，n=3*n+1;</p>
<p>注意下给出的i、j可以 i&gt;j,也可以 i&lt;j，i=j</span></p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
</pre></td><td class="code"><pre class="cpp" style="font-family:Verdana,Courier New;"><span style="color: #339900;">#include&lt;stdio.h&gt;</span>
&nbsp;
<span style="color: #0000ff;">int</span> main<span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span>
<span style="color: #008000;">&#123;</span>
    <span style="color: #0000ff;">int</span> n,m,<span style="color: #0000dd;">time</span>,max,key,i,temp,sign<span style="color: #008080;">;</span>
    <span style="color: #0000ff;">while</span><span style="color: #008000;">&#40;</span><span style="color: #0000dd;">scanf</span><span style="color: #008000;">&#40;</span><span style="color: #FF0000;">&quot;%d&quot;</span>,<span style="color: #000040;">&amp;</span>n<span style="color: #008000;">&#41;</span><span style="color: #000040;">!</span><span style="color: #000080;">=</span><span style="color: #0000ff;">EOF</span><span style="color: #008000;">&#41;</span>
    <span style="color: #008000;">&#123;</span>
        <span style="color: #0000dd;">scanf</span><span style="color: #008000;">&#40;</span><span style="color: #FF0000;">&quot;%d&quot;</span>,<span style="color: #000040;">&amp;</span>m<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
        sign<span style="color: #000080;">=</span><span style="color: #0000dd;">0</span><span style="color: #008080;">;</span>
        <span style="color: #0000ff;">if</span><span style="color: #008000;">&#40;</span>n<span style="color: #000080;">&gt;</span>m<span style="color: #008000;">&#41;</span>
        <span style="color: #008000;">&#123;</span>
            sign<span style="color: #000080;">=</span><span style="color: #0000dd;">1</span><span style="color: #008080;">;</span>
            temp<span style="color: #000080;">=</span>m<span style="color: #008080;">;</span>
            m<span style="color: #000080;">=</span>n<span style="color: #008080;">;</span>
            n<span style="color: #000080;">=</span>temp<span style="color: #008080;">;</span>
        <span style="color: #008000;">&#125;</span>
        max<span style="color: #000080;">=</span><span style="color: #0000dd;">0</span><span style="color: #008080;">;</span>
        <span style="color: #0000ff;">for</span><span style="color: #008000;">&#40;</span>i<span style="color: #000080;">=</span>n<span style="color: #008080;">;</span>i<span style="color: #000080;">&lt;=</span>m<span style="color: #008080;">;</span><span style="color: #000040;">++</span>i<span style="color: #008000;">&#41;</span>
        <span style="color: #008000;">&#123;</span>
            key<span style="color: #000080;">=</span>i<span style="color: #008080;">;</span>
            <span style="color: #0000dd;">time</span><span style="color: #000080;">=</span><span style="color: #0000dd;">1</span><span style="color: #008080;">;</span>
            <span style="color: #0000ff;">while</span><span style="color: #008000;">&#40;</span>key<span style="color: #000040;">!</span><span style="color: #000080;">=</span><span style="color: #0000dd;">1</span><span style="color: #008000;">&#41;</span>
            <span style="color: #008000;">&#123;</span>
                <span style="color: #0000ff;">if</span><span style="color: #008000;">&#40;</span>key<span style="color: #000040;">%</span><span style="color:#800080;">2</span><span style="color: #008000;">&#41;</span>
                <span style="color: #008000;">&#123;</span>
                    key<span style="color: #000080;">=</span>key<span style="color: #000040;">*</span><span style="color: #0000dd;">3</span><span style="color: #000040;">+</span><span style="color: #0000dd;">1</span><span style="color: #008080;">;</span>
                <span style="color: #008000;">&#125;</span>
                <span style="color: #0000ff;">else</span> 
                <span style="color: #008000;">&#123;</span>
                    key<span style="color: #000080;">=</span>key<span style="color: #000040;">/</span><span style="color: #0000dd;">2</span><span style="color: #008080;">;</span>
                <span style="color: #008000;">&#125;</span>
                <span style="color: #000040;">++</span><span style="color: #0000dd;">time</span><span style="color: #008080;">;</span>
            <span style="color: #008000;">&#125;</span>
            <span style="color: #0000ff;">if</span><span style="color: #008000;">&#40;</span><span style="color: #0000dd;">time</span><span style="color: #000080;">&gt;</span>max<span style="color: #008000;">&#41;</span>
            <span style="color: #008000;">&#123;</span>
                max<span style="color: #000080;">=</span><span style="color: #0000dd;">time</span><span style="color: #008080;">;</span>
            <span style="color: #008000;">&#125;</span>
        <span style="color: #008000;">&#125;</span>
        <span style="color: #0000ff;">if</span><span style="color: #008000;">&#40;</span>sign<span style="color: #008000;">&#41;</span>
        <span style="color: #008000;">&#123;</span>
            <span style="color: #0000dd;">printf</span><span style="color: #008000;">&#40;</span><span style="color: #FF0000;">&quot;%d %d %d<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span>,m,n,max<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
        <span style="color: #008000;">&#125;</span>
        <span style="color: #0000ff;">else</span> <span style="color: #0000dd;">printf</span><span style="color: #008000;">&#40;</span><span style="color: #FF0000;">&quot;%d %d %d<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span>,n,m,max<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
    <span style="color: #008000;">&#125;</span>
    <span style="color: #666666;">//system(&quot;pause&quot;);</span>
    <span style="color: #0000ff;">return</span> <span style="color: #0000dd;">0</span><span style="color: #008080;">;</span>
<span style="color: #008000;">&#125;</span></pre></td></tr></table></div>

]]></content:encoded>
			<wfw:commentRss>http://www.joansky.com/poj-1207-the-3n-1-problem-c.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>POJ 1107 W&#039;s Cipher C版本</title>
		<link>http://www.joansky.com/poj-1107-ws-cipher-c.html</link>
		<comments>http://www.joansky.com/poj-1107-ws-cipher-c.html#comments</comments>
		<pubDate>Tue, 24 Nov 2009 13:27:44 +0000</pubDate>
		<dc:creator>Joan</dc:creator>
				<category><![CDATA[解题报告]]></category>
		<category><![CDATA[C]]></category>
		<category><![CDATA[poj]]></category>

		<guid isPermaLink="false">http://www.joansky.com/?p=55</guid>
		<description><![CDATA[模拟 Description Weird Wally's Wireless Widgets, Inc. manufactures an eclectic assortment of small, wireless, network capable devices, ranging from dog collars, to pencils, to fishing bobbers. All these devices have very small memories. Encryption algorithms like Rijndael, the candidate for the Advanced Encryption Standard (AES) are demonstrably secure but they don't fit in such a [...]]]></description>
			<content:encoded><![CDATA[<p>模拟</p>
<p><span id="more-55"></span></p>
<p>Description</p>
<p>Weird Wally's Wireless Widgets, Inc. manufactures an eclectic assortment of small, wireless, network capable devices, ranging from dog collars, to pencils, to fishing bobbers. All these devices have very small memories. Encryption algorithms like Rijndael, the candidate for the Advanced Encryption Standard (AES) are demonstrably secure but they don't fit in such a tiny memory. In order to provide some security for transmissions to and from the devices, WWWW uses the following algorithm, which you are to implement.</p>
<p>Encrypting a message requires three integer keys, k1, k2, and k3. The letters [a-i] form one group, [j-r] a second group, and everything else ([s-z] and underscore) the third group. Within each group the letters are rotated left by ki positions in the message. Each group is rotated independently of the other two. Decrypting the message means doing a right rotation by ki positions within each group.</p>
<p>Consider the message the_quick_brown_fox encrypted with ki values of 2, 3 and 1. The encrypted string is _icuo_bfnwhoq_kxert. The figure below shows the decrypting right rotations for one character in each of the three character groups.</p>
<p>Looking at all the letters in the group [a-i] we see {i,c,b,f,h,e} appear at positions {2,3,7,8,11,17} within the encrypted message. After a right rotation of k1=2, these positions contain the letters {h,e,i,c,b,f}. The table below shows the intermediate strings that come from doing all the rotations in the first group, then all rotations in the second group, then all the rotations in the third group. Rotating letters in one group will not change any letters in any of the other groups.</p>
<p>All input strings contain only lowercase letters and underscores(_). Each string will be at most 80 characters long. The ki are all positive integers in the range 1-100.</p>
<p>Input</p>
<p>Input consists of information for one or more encrypted messages. Each problem begins with one line containing k1, k2, and k3 followed by a line containing the encrypted message. The end of the input is signalled by a line with all key values of 0.</p>
<p>Output<br />
For each encrypted message, the output is a single line containing the decrypted string.</p>
<p>Sample Input</p>
<p>2 3 1<br />
_icuo_bfnwhoq_kxert<br />
1 1 1<br />
bcalmkyzx<br />
3 7 4<br />
wcb_mxfep_dorul_eov_qtkrhe_ozany_dgtoh_u_eji<br />
2 4 3<br />
cjvdksaltbmu<br />
0 0 0</p>
<p>Sample Output</p>
<p>the_quick_brown_fox<br />
abcklmxyz<br />
the_quick_brown_fox_jumped_over_the_lazy_dog<br />
ajsbktcludmv</p>
<p><span style="color: #ff0000;">题目大意：对给出的字符串进行分组翻转解密，第一组为a-i，第二组为j-r，第三组为s-z，_;</p>
<p>刚开始看的时候没看到第三组还加个下划线，然后就杯具了</span></p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
</pre></td><td class="code"><pre class="cpp" style="font-family:Verdana,Courier New;"><span style="color: #339900;">#include&lt;stdio.h&gt;</span>
<span style="color: #339900;">#include&lt;string.h&gt;</span>
&nbsp;
<span style="color: #339900;">#define MAX 100</span>
&nbsp;
<span style="color: #0000ff;">char</span> s<span style="color: #008000;">&#91;</span>MAX<span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span>
&nbsp;
<span style="color: #ff0000;">/*改变字母在数组中的位置*/</span>
<span style="color: #0000ff;">void</span> work<span style="color: #008000;">&#40;</span><span style="color: #0000ff;">int</span> key,<span style="color: #0000ff;">int</span> j1,<span style="color: #0000ff;">char</span> st<span style="color: #008000;">&#91;</span><span style="color: #008000;">&#93;</span>,<span style="color: #0000ff;">int</span> temp<span style="color: #008000;">&#91;</span><span style="color: #008000;">&#93;</span><span style="color: #008000;">&#41;</span>
<span style="color: #008000;">&#123;</span>
    <span style="color: #0000ff;">int</span> i,j<span style="color: #008080;">;</span>
    <span style="color: #0000ff;">char</span> str<span style="color: #008000;">&#91;</span>MAX<span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span>
    i<span style="color: #000080;">=</span><span style="color: #0000dd;">0</span><span style="color: #008080;">;</span>
    <span style="color: #0000ff;">for</span><span style="color: #008000;">&#40;</span>j<span style="color: #000080;">=</span>key<span style="color: #008080;">;</span>j<span style="color: #000080;">&lt;</span>j1<span style="color: #008080;">;</span><span style="color: #000040;">++</span>j<span style="color: #008000;">&#41;</span>
    <span style="color: #008000;">&#123;</span>
        str<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span><span style="color: #000080;">=</span>st<span style="color: #008000;">&#91;</span>j<span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span>
        <span style="color: #000040;">++</span>i<span style="color: #008080;">;</span>
    <span style="color: #008000;">&#125;</span>
    <span style="color: #0000ff;">for</span><span style="color: #008000;">&#40;</span>j<span style="color: #000080;">=</span><span style="color: #0000dd;">0</span><span style="color: #008080;">;</span>j<span style="color: #000080;">&lt;</span>key<span style="color: #008080;">;</span><span style="color: #000040;">++</span>j<span style="color: #008000;">&#41;</span>
    <span style="color: #008000;">&#123;</span>
        str<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span><span style="color: #000080;">=</span>st<span style="color: #008000;">&#91;</span>j<span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span>
        <span style="color: #000040;">++</span>i<span style="color: #008080;">;</span>
    <span style="color: #008000;">&#125;</span>
    str<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span><span style="color: #000080;">=</span><span style="color: #FF0000;">'<span style="color: #006699; font-weight: bold;">\0</span>'</span><span style="color: #008080;">;</span>
    <span style="color: #ff0000;">/*把解密后的字母填到原字符串中 */</span>
    <span style="color: #0000ff;">for</span><span style="color: #008000;">&#40;</span>i<span style="color: #000080;">=</span><span style="color: #0000dd;">0</span><span style="color: #008080;">;</span>i<span style="color: #000080;">&lt;</span>j1<span style="color: #008080;">;</span><span style="color: #000040;">++</span>i<span style="color: #008000;">&#41;</span>
    <span style="color: #008000;">&#123;</span>
        s<span style="color: #008000;">&#91;</span>temp<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span><span style="color: #008000;">&#93;</span><span style="color: #000080;">=</span>str<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span>
    <span style="color: #008000;">&#125;</span>
<span style="color: #008000;">&#125;</span>
&nbsp;
<span style="color: #0000ff;">int</span> main<span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span>
<span style="color: #008000;">&#123;</span>
    <span style="color: #ff0000;">/*分别保存a-i,j-r,s-z+'_'*/</span>
    <span style="color: #0000ff;">char</span> st1<span style="color: #008000;">&#91;</span>MAX<span style="color: #008000;">&#93;</span>,st2<span style="color: #008000;">&#91;</span>MAX<span style="color: #008000;">&#93;</span>,st3<span style="color: #008000;">&#91;</span>MAX<span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span>
    <span style="color: #ff0000;">/*记录每组字符串字母的下标*/</span>
    <span style="color: #0000ff;">int</span> temp1<span style="color: #008000;">&#91;</span>MAX<span style="color: #008000;">&#93;</span>,temp2<span style="color: #008000;">&#91;</span>MAX<span style="color: #008000;">&#93;</span>,temp3<span style="color: #008000;">&#91;</span>MAX<span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span>
    <span style="color: #0000ff;">int</span> k1,k2,k3,j1,j2,j3,i<span style="color: #008080;">;</span>
    <span style="color: #0000ff;">while</span><span style="color: #008000;">&#40;</span><span style="color: #0000dd;">1</span><span style="color: #008000;">&#41;</span>
    <span style="color: #008000;">&#123;</span>
        <span style="color: #0000dd;">scanf</span><span style="color: #008000;">&#40;</span><span style="color: #FF0000;">&quot;%d%d%d&quot;</span>,<span style="color: #000040;">&amp;</span>k1,<span style="color: #000040;">&amp;</span>k2,<span style="color: #000040;">&amp;</span>k3<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
        <span style="color: #0000ff;">if</span><span style="color: #008000;">&#40;</span>k1<span style="color: #000040;">+</span>k2<span style="color: #000040;">+</span>k3<span style="color: #000080;">==</span><span style="color: #0000dd;">0</span><span style="color: #008000;">&#41;</span>
        <span style="color: #008000;">&#123;</span>
            <span style="color: #0000ff;">break</span><span style="color: #008080;">;</span>
        <span style="color: #008000;">&#125;</span>
        <span style="color: #0000dd;">scanf</span><span style="color: #008000;">&#40;</span><span style="color: #FF0000;">&quot;%s&quot;</span>,<span style="color: #000040;">&amp;</span>s<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
        j1<span style="color: #000080;">=</span>j2<span style="color: #000080;">=</span>j3<span style="color: #000080;">=</span><span style="color: #0000dd;">0</span><span style="color: #008080;">;</span>
        <span style="color: #0000ff;">for</span><span style="color: #008000;">&#40;</span>i<span style="color: #000080;">=</span><span style="color: #0000dd;">0</span><span style="color: #008080;">;</span>i<span style="color: #000080;">&lt;</span><span style="color: #0000dd;">strlen</span><span style="color: #008000;">&#40;</span>s<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span><span style="color: #000040;">++</span>i<span style="color: #008000;">&#41;</span>
        <span style="color: #008000;">&#123;</span>
            <span style="color: #0000ff;">if</span><span style="color: #008000;">&#40;</span><span style="color: #FF0000;">'a'</span><span style="color: #000080;">&lt;=</span>s<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span><span style="color: #000040;">&amp;&amp;</span>s<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span><span style="color: #000080;">&lt;=</span><span style="color: #FF0000;">'i'</span><span style="color: #008000;">&#41;</span>
            <span style="color: #008000;">&#123;</span>
                st1<span style="color: #008000;">&#91;</span>j1<span style="color: #008000;">&#93;</span><span style="color: #000080;">=</span>s<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span>
                temp1<span style="color: #008000;">&#91;</span>j1<span style="color: #008000;">&#93;</span><span style="color: #000080;">=</span>i<span style="color: #008080;">;</span>
                <span style="color: #000040;">++</span>j1<span style="color: #008080;">;</span>
            <span style="color: #008000;">&#125;</span>
            <span style="color: #0000ff;">else</span> <span style="color: #0000ff;">if</span><span style="color: #008000;">&#40;</span><span style="color: #FF0000;">'j'</span><span style="color: #000080;">&lt;=</span>s<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span><span style="color: #000040;">&amp;&amp;</span>s<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span><span style="color: #000080;">&lt;=</span><span style="color: #FF0000;">'r'</span><span style="color: #008000;">&#41;</span>
            <span style="color: #008000;">&#123;</span>
                st2<span style="color: #008000;">&#91;</span>j2<span style="color: #008000;">&#93;</span><span style="color: #000080;">=</span>s<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span>
                temp2<span style="color: #008000;">&#91;</span>j2<span style="color: #008000;">&#93;</span><span style="color: #000080;">=</span>i<span style="color: #008080;">;</span>
                <span style="color: #000040;">++</span>j2<span style="color: #008080;">;</span>
            <span style="color: #008000;">&#125;</span>
            <span style="color: #0000ff;">else</span> 
            <span style="color: #008000;">&#123;</span>
                st3<span style="color: #008000;">&#91;</span>j3<span style="color: #008000;">&#93;</span><span style="color: #000080;">=</span>s<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span>
                temp3<span style="color: #008000;">&#91;</span>j3<span style="color: #008000;">&#93;</span><span style="color: #000080;">=</span>i<span style="color: #008080;">;</span>
                <span style="color: #000040;">++</span>j3<span style="color: #008080;">;</span>
            <span style="color: #008000;">&#125;</span>
        <span style="color: #008000;">&#125;</span>
        <span style="color: #ff0000;">/*当每组字符串的长度大于0，进行翻转*/</span>
        <span style="color: #0000ff;">if</span><span style="color: #008000;">&#40;</span>j1<span style="color: #000080;">&gt;</span><span style="color: #0000dd;">0</span><span style="color: #008000;">&#41;</span>
        <span style="color: #008000;">&#123;</span>
            work<span style="color: #008000;">&#40;</span>j1<span style="color: #000040;">-</span>k1<span style="color: #000040;">%</span>j1,j1,st1,temp1<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
        <span style="color: #008000;">&#125;</span>
        <span style="color: #0000ff;">if</span><span style="color: #008000;">&#40;</span>j2<span style="color: #000080;">&gt;</span><span style="color: #0000dd;">0</span><span style="color: #008000;">&#41;</span>
        <span style="color: #008000;">&#123;</span>
            work<span style="color: #008000;">&#40;</span>j2<span style="color: #000040;">-</span>k2<span style="color: #000040;">%</span>j2,j2,st2,temp2<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
        <span style="color: #008000;">&#125;</span>
        <span style="color: #0000ff;">if</span><span style="color: #008000;">&#40;</span>j3<span style="color: #000080;">&gt;</span><span style="color: #0000dd;">0</span><span style="color: #008000;">&#41;</span>
        <span style="color: #008000;">&#123;</span>
            work<span style="color: #008000;">&#40;</span>j3<span style="color: #000040;">-</span>k3<span style="color: #000040;">%</span>j3,j3,st3,temp3<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
        <span style="color: #008000;">&#125;</span>
&nbsp;
        <span style="color: #0000dd;">printf</span><span style="color: #008000;">&#40;</span><span style="color: #FF0000;">&quot;%s<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span>,s<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
    <span style="color: #008000;">&#125;</span>
    <span style="color: #666666;">//system(&quot;pause&quot;);</span>
    <span style="color: #0000ff;">return</span> <span style="color: #0000dd;">0</span><span style="color: #008080;">;</span>
<span style="color: #008000;">&#125;</span></pre></td></tr></table></div>

]]></content:encoded>
			<wfw:commentRss>http://www.joansky.com/poj-1107-ws-cipher-c.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>POJ 1102 LC-Display C版本</title>
		<link>http://www.joansky.com/1102-lc-display-c.html</link>
		<comments>http://www.joansky.com/1102-lc-display-c.html#comments</comments>
		<pubDate>Sat, 21 Nov 2009 10:23:21 +0000</pubDate>
		<dc:creator>Joan</dc:creator>
				<category><![CDATA[解题报告]]></category>
		<category><![CDATA[C]]></category>
		<category><![CDATA[poj]]></category>

		<guid isPermaLink="false">http://www.joansky.com/?p=53</guid>
		<description><![CDATA[模拟 Description A friend of you has just bought a new computer. Until now, the most powerful computer he ever used has been a pocket calculator. Now, looking at his new computer, he is a bit disappointed, because he liked the LC-display of his calculator so much. So you decide to write a program that [...]]]></description>
			<content:encoded><![CDATA[<p>模拟</p>
<p><span id="more-53"></span></p>
<p>Description</p>
<p>A friend of you has just bought a new computer. Until now, the most powerful computer he ever used has been a pocket calculator. Now, looking at his new computer, he is a bit disappointed, because he liked the LC-display of his calculator so much. So you decide to write a program that displays numbers in an LC-display-like style on his computer.</p>
<p>Input</p>
<p>The input contains several lines, one for each number to be displayed. Each line contains two integers s, n (1 <= s <= 10, 0 <= n <= 99 999 999),  where n is the number to be displayed and s is the size in which it shall be displayed.</p>
<p>The input file will be terminated by a line containing two zeros. This line should not be processed.</p>
<p>Output</p>
<p>Output the numbers given in the input file in an LC-display-style using s "-" signs for the horizontal segments and s "|" signs for the vertical ones. Each digit occupies exactly s+2 columns and 2s+3 rows. (Be sure to fill all the white space occupied by the digits with blanks, also for the last digit.) There has to be exactly one column of blanks between two digits.</p>
<p>Output a blank line after each number. (You will find a sample of each digit in the sample output.)</p>
<p>Sample Input</p>
<p>2 12345<br />
3 67890<br />
0 0</p>
<p>Sample Output</p>
<pre>      --   --        --
   |    |    | |  | |
   |    |    | |  | |
      --   --   --   --
   | |       |    |    |
   | |       |    |    |
      --   --        -- 

 ---   ---   ---   ---   ---
|         | |   | |   | |   |
|         | |   | |   | |   |
|         | |   | |   | |   |
 ---         ---   ---
|   |     | |   |     | |   |
|   |     | |   |     | |   |
|   |     | |   |     | |   |
 ---         ---   ---   ---</pre>
<p><span style="color: #ff0000;">题目大意：用7断数管的形式打印给出的数字；</p>
<p>这里用了7个数组初始化为每个数字在这7断数管的出现的信息；</p>
<p>在每一组数据结束时要多加一空行，当输入s=0时，程序结束。</p>
<p>开始没注意到这两个细节，一直RA。</span></p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
</pre></td><td class="code"><pre class="cpp" style="font-family:Verdana,Courier New;"><span style="color: #339900;">#include&lt;stdio.h&gt;</span>
<span style="color: #339900;">#define MAX 1000</span>
<span style="color: #0000ff;">int</span> n<span style="color: #008080;">;</span>
&nbsp;
<span style="color: #ff0000;">/*打印行*/</span>
<span style="color: #0000ff;">void</span> horizon<span style="color: #008000;">&#40;</span><span style="color: #0000ff;">char</span> s<span style="color: #008000;">&#91;</span><span style="color: #008000;">&#93;</span>,<span style="color: #0000ff;">int</span> top<span style="color: #008000;">&#91;</span><span style="color: #008000;">&#93;</span>,<span style="color: #0000ff;">char</span> hor<span style="color: #008000;">&#91;</span><span style="color: #008000;">&#93;</span>,<span style="color: #0000ff;">char</span> ver<span style="color: #008000;">&#91;</span><span style="color: #008000;">&#93;</span><span style="color: #008000;">&#41;</span>
<span style="color: #008000;">&#123;</span>
    <span style="color: #0000ff;">int</span> i<span style="color: #008080;">;</span>
    hor<span style="color: #008000;">&#91;</span><span style="color: #0000dd;">0</span><span style="color: #008000;">&#93;</span><span style="color: #000080;">=</span><span style="color: #0000dd;">32</span><span style="color: #008080;">;</span>
    ver<span style="color: #008000;">&#91;</span><span style="color: #0000dd;">0</span><span style="color: #008000;">&#93;</span><span style="color: #000080;">=</span><span style="color: #0000dd;">32</span><span style="color: #008080;">;</span>
    <span style="color: #ff0000;">/*每个数字行的情况*/</span>
    <span style="color: #0000ff;">for</span><span style="color: #008000;">&#40;</span>i<span style="color: #000080;">=</span><span style="color: #0000dd;">1</span><span style="color: #008080;">;</span>i<span style="color: #000080;">&lt;=</span>n<span style="color: #008080;">;</span><span style="color: #000040;">++</span>i<span style="color: #008000;">&#41;</span>
    <span style="color: #008000;">&#123;</span>
        hor<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span><span style="color: #000080;">=</span><span style="color: #FF0000;">'-'</span><span style="color: #008080;">;</span>
        ver<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span><span style="color: #000080;">=</span><span style="color: #FF0000;">' '</span><span style="color: #008080;">;</span>
    <span style="color: #008000;">&#125;</span>
    hor<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span><span style="color: #000080;">=</span><span style="color: #0000dd;">32</span><span style="color: #008080;">;</span>
    ver<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span><span style="color: #000080;">=</span><span style="color: #0000dd;">32</span><span style="color: #008080;">;</span>
    <span style="color: #000040;">++</span>i<span style="color: #008080;">;</span>
    hor<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span><span style="color: #000080;">=</span><span style="color: #FF0000;">'<span style="color: #006699; font-weight: bold;">\0</span>'</span><span style="color: #008080;">;</span>
    ver<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span><span style="color: #000080;">=</span><span style="color: #FF0000;">'<span style="color: #006699; font-weight: bold;">\0</span>'</span><span style="color: #008080;">;</span>
    <span style="color: #0000ff;">for</span><span style="color: #008000;">&#40;</span>i<span style="color: #000080;">=</span><span style="color: #0000dd;">0</span><span style="color: #008080;">;</span>i<span style="color: #000080;">&lt;</span><span style="color: #0000dd;">strlen</span><span style="color: #008000;">&#40;</span>s<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span><span style="color: #000040;">++</span>i<span style="color: #008000;">&#41;</span>
    <span style="color: #008000;">&#123;</span>
        <span style="color: #0000ff;">if</span><span style="color: #008000;">&#40;</span>top<span style="color: #008000;">&#91;</span>s<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span><span style="color: #000040;">-</span><span style="color: #FF0000;">'0'</span><span style="color: #008000;">&#93;</span><span style="color: #008000;">&#41;</span>
        <span style="color: #008000;">&#123;</span>
            <span style="color: #0000dd;">printf</span><span style="color: #008000;">&#40;</span><span style="color: #FF0000;">&quot;%s &quot;</span>,hor<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
        <span style="color: #008000;">&#125;</span>
        <span style="color: #0000ff;">else</span>
        <span style="color: #008000;">&#123;</span>
            <span style="color: #0000dd;">printf</span><span style="color: #008000;">&#40;</span><span style="color: #FF0000;">&quot;%s &quot;</span>,ver<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
        <span style="color: #008000;">&#125;</span>
    <span style="color: #008000;">&#125;</span>
    <span style="color: #0000dd;">printf</span><span style="color: #008000;">&#40;</span><span style="color: #FF0000;">&quot;<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
<span style="color: #008000;">&#125;</span>
<span style="color: #ff0000;">/*打印列*/</span> 
<span style="color: #0000ff;">void</span> vertical<span style="color: #008000;">&#40;</span><span style="color: #0000ff;">char</span> s<span style="color: #008000;">&#91;</span><span style="color: #008000;">&#93;</span>,<span style="color: #0000ff;">int</span> lt<span style="color: #008000;">&#91;</span><span style="color: #008000;">&#93;</span>,<span style="color: #0000ff;">int</span> rt<span style="color: #008000;">&#91;</span><span style="color: #008000;">&#93;</span><span style="color: #008000;">&#41;</span>
<span style="color: #008000;">&#123;</span>
    <span style="color: #0000ff;">int</span> i,j,k<span style="color: #008080;">;</span>
    <span style="color: #0000ff;">char</span> str<span style="color: #008000;">&#91;</span>MAX<span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span>
    j<span style="color: #000080;">=</span><span style="color: #000040;">-</span><span style="color: #0000dd;">1</span><span style="color: #008080;">;</span>
    <span style="color: #0000ff;">for</span><span style="color: #008000;">&#40;</span>i<span style="color: #000080;">=</span><span style="color: #0000dd;">0</span><span style="color: #008080;">;</span>i<span style="color: #000080;">&lt;</span><span style="color: #0000dd;">strlen</span><span style="color: #008000;">&#40;</span>s<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span><span style="color: #000040;">++</span>i<span style="color: #008000;">&#41;</span>
    <span style="color: #008000;">&#123;</span>
        <span style="color: #000040;">++</span>j<span style="color: #008080;">;</span>
        <span style="color: #0000ff;">if</span><span style="color: #008000;">&#40;</span>lt<span style="color: #008000;">&#91;</span>s<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span><span style="color: #000040;">-</span><span style="color: #FF0000;">'0'</span><span style="color: #008000;">&#93;</span><span style="color: #008000;">&#41;</span>
        <span style="color: #008000;">&#123;</span>
            str<span style="color: #008000;">&#91;</span>j<span style="color: #008000;">&#93;</span><span style="color: #000080;">=</span><span style="color: #FF0000;">'|'</span><span style="color: #008080;">;</span>
        <span style="color: #008000;">&#125;</span>
        <span style="color: #0000ff;">else</span> str<span style="color: #008000;">&#91;</span>j<span style="color: #008000;">&#93;</span><span style="color: #000080;">=</span><span style="color: #FF0000;">' '</span><span style="color: #008080;">;</span>
        <span style="color: #0000ff;">for</span><span style="color: #008000;">&#40;</span>k<span style="color: #000080;">=</span><span style="color: #0000dd;">0</span><span style="color: #008080;">;</span>k<span style="color: #000080;">&lt;</span>n<span style="color: #008080;">;</span><span style="color: #000040;">++</span>k<span style="color: #008000;">&#41;</span>
        <span style="color: #008000;">&#123;</span>
            <span style="color: #000040;">++</span>j<span style="color: #008080;">;</span>
            str<span style="color: #008000;">&#91;</span>j<span style="color: #008000;">&#93;</span><span style="color: #000080;">=</span><span style="color: #FF0000;">' '</span><span style="color: #008080;">;</span>
        <span style="color: #008000;">&#125;</span>
        <span style="color: #000040;">++</span>j<span style="color: #008080;">;</span>
        <span style="color: #0000ff;">if</span><span style="color: #008000;">&#40;</span>rt<span style="color: #008000;">&#91;</span>s<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span><span style="color: #000040;">-</span><span style="color: #FF0000;">'0'</span><span style="color: #008000;">&#93;</span><span style="color: #008000;">&#41;</span>
        <span style="color: #008000;">&#123;</span>
            str<span style="color: #008000;">&#91;</span>j<span style="color: #008000;">&#93;</span><span style="color: #000080;">=</span><span style="color: #FF0000;">'|'</span><span style="color: #008080;">;</span>
        <span style="color: #008000;">&#125;</span>
        <span style="color: #0000ff;">else</span> str<span style="color: #008000;">&#91;</span>j<span style="color: #008000;">&#93;</span><span style="color: #000080;">=</span><span style="color: #FF0000;">' '</span><span style="color: #008080;">;</span>
        str<span style="color: #008000;">&#91;</span><span style="color: #000040;">++</span>j<span style="color: #008000;">&#93;</span><span style="color: #000080;">=</span><span style="color: #FF0000;">' '</span><span style="color: #008080;">;</span>
    <span style="color: #008000;">&#125;</span>
    str<span style="color: #008000;">&#91;</span><span style="color: #000040;">++</span>j<span style="color: #008000;">&#93;</span><span style="color: #000080;">=</span><span style="color: #FF0000;">'<span style="color: #006699; font-weight: bold;">\0</span>'</span><span style="color: #008080;">;</span>
    <span style="color: #0000ff;">for</span><span style="color: #008000;">&#40;</span>i<span style="color: #000080;">=</span><span style="color: #0000dd;">0</span><span style="color: #008080;">;</span>i<span style="color: #000080;">&lt;</span>n<span style="color: #008080;">;</span><span style="color: #000040;">++</span>i<span style="color: #008000;">&#41;</span>
    <span style="color: #008000;">&#123;</span>
        <span style="color: #0000dd;">printf</span><span style="color: #008000;">&#40;</span><span style="color: #FF0000;">&quot;%s<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span>,str<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
    <span style="color: #008000;">&#125;</span>
<span style="color: #008000;">&#125;</span>
<span style="color: #0000ff;">int</span> main<span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span>
<span style="color: #008000;">&#123;</span>
    <span style="color: #0000ff;">int</span> top<span style="color: #008000;">&#91;</span><span style="color: #0000dd;">10</span><span style="color: #008000;">&#93;</span><span style="color: #000080;">=</span><span style="color: #008000;">&#123;</span><span style="color: #0000dd;">1</span>,<span style="color: #0000dd;">0</span>,<span style="color: #0000dd;">1</span>,<span style="color: #0000dd;">1</span>,<span style="color: #0000dd;">0</span>,<span style="color: #0000dd;">1</span>,<span style="color: #0000dd;">1</span>,<span style="color: #0000dd;">1</span>,<span style="color: #0000dd;">1</span>,<span style="color: #0000dd;">1</span><span style="color: #008000;">&#125;</span><span style="color: #008080;">;</span>
    <span style="color: #0000ff;">int</span> lt<span style="color: #008000;">&#91;</span><span style="color: #0000dd;">10</span><span style="color: #008000;">&#93;</span><span style="color: #000080;">=</span><span style="color: #008000;">&#123;</span><span style="color: #0000dd;">1</span>,<span style="color: #0000dd;">0</span>,<span style="color: #0000dd;">0</span>,<span style="color: #0000dd;">0</span>,<span style="color: #0000dd;">1</span>,<span style="color: #0000dd;">1</span>,<span style="color: #0000dd;">1</span>,<span style="color: #0000dd;">0</span>,<span style="color: #0000dd;">1</span>,<span style="color: #0000dd;">1</span><span style="color: #008000;">&#125;</span><span style="color: #008080;">;</span>
    <span style="color: #0000ff;">int</span> rt<span style="color: #008000;">&#91;</span><span style="color: #0000dd;">10</span><span style="color: #008000;">&#93;</span><span style="color: #000080;">=</span><span style="color: #008000;">&#123;</span><span style="color: #0000dd;">1</span>,<span style="color: #0000dd;">1</span>,<span style="color: #0000dd;">1</span>,<span style="color: #0000dd;">1</span>,<span style="color: #0000dd;">1</span>,<span style="color: #0000dd;">0</span>,<span style="color: #0000dd;">0</span>,<span style="color: #0000dd;">1</span>,<span style="color: #0000dd;">1</span>,<span style="color: #0000dd;">1</span><span style="color: #008000;">&#125;</span><span style="color: #008080;">;</span>
    <span style="color: #0000ff;">int</span> cen<span style="color: #008000;">&#91;</span><span style="color: #0000dd;">10</span><span style="color: #008000;">&#93;</span><span style="color: #000080;">=</span><span style="color: #008000;">&#123;</span><span style="color: #0000dd;">0</span>,<span style="color: #0000dd;">0</span>,<span style="color: #0000dd;">1</span>,<span style="color: #0000dd;">1</span>,<span style="color: #0000dd;">1</span>,<span style="color: #0000dd;">1</span>,<span style="color: #0000dd;">1</span>,<span style="color: #0000dd;">0</span>,<span style="color: #0000dd;">1</span>,<span style="color: #0000dd;">1</span><span style="color: #008000;">&#125;</span><span style="color: #008080;">;</span>
    <span style="color: #0000ff;">int</span> lb<span style="color: #008000;">&#91;</span><span style="color: #0000dd;">10</span><span style="color: #008000;">&#93;</span><span style="color: #000080;">=</span><span style="color: #008000;">&#123;</span><span style="color: #0000dd;">1</span>,<span style="color: #0000dd;">0</span>,<span style="color: #0000dd;">1</span>,<span style="color: #0000dd;">0</span>,<span style="color: #0000dd;">0</span>,<span style="color: #0000dd;">0</span>,<span style="color: #0000dd;">1</span>,<span style="color: #0000dd;">0</span>,<span style="color: #0000dd;">1</span>,<span style="color: #0000dd;">0</span><span style="color: #008000;">&#125;</span><span style="color: #008080;">;</span>
    <span style="color: #0000ff;">int</span> rb<span style="color: #008000;">&#91;</span><span style="color: #0000dd;">10</span><span style="color: #008000;">&#93;</span><span style="color: #000080;">=</span><span style="color: #008000;">&#123;</span><span style="color: #0000dd;">1</span>,<span style="color: #0000dd;">1</span>,<span style="color: #0000dd;">0</span>,<span style="color: #0000dd;">1</span>,<span style="color: #0000dd;">1</span>,<span style="color: #0000dd;">1</span>,<span style="color: #0000dd;">1</span>,<span style="color: #0000dd;">1</span>,<span style="color: #0000dd;">1</span>,<span style="color: #0000dd;">1</span><span style="color: #008000;">&#125;</span><span style="color: #008080;">;</span>
    <span style="color: #0000ff;">int</span> bot<span style="color: #008000;">&#91;</span><span style="color: #0000dd;">10</span><span style="color: #008000;">&#93;</span><span style="color: #000080;">=</span><span style="color: #008000;">&#123;</span><span style="color: #0000dd;">1</span>,<span style="color: #0000dd;">0</span>,<span style="color: #0000dd;">1</span>,<span style="color: #0000dd;">1</span>,<span style="color: #0000dd;">0</span>,<span style="color: #0000dd;">1</span>,<span style="color: #0000dd;">1</span>,<span style="color: #0000dd;">0</span>,<span style="color: #0000dd;">1</span>,<span style="color: #0000dd;">1</span><span style="color: #008000;">&#125;</span><span style="color: #008080;">;</span>
    <span style="color: #0000ff;">char</span> s<span style="color: #008000;">&#91;</span>MAX<span style="color: #008000;">&#93;</span>,hor<span style="color: #008000;">&#91;</span>MAX<span style="color: #008000;">&#93;</span>,ver<span style="color: #008000;">&#91;</span>MAX<span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span>
    <span style="color: #0000ff;">int</span> i<span style="color: #008080;">;</span>
    <span style="color: #0000ff;">while</span><span style="color: #008000;">&#40;</span><span style="color: #0000dd;">1</span><span style="color: #008000;">&#41;</span>
    <span style="color: #008000;">&#123;</span>
        <span style="color: #0000dd;">scanf</span><span style="color: #008000;">&#40;</span><span style="color: #FF0000;">&quot;%d&quot;</span>,<span style="color: #000040;">&amp;</span>n<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
        <span style="color: #0000dd;">scanf</span><span style="color: #008000;">&#40;</span><span style="color: #FF0000;">&quot;%s&quot;</span>,<span style="color: #000040;">&amp;</span>s<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
        <span style="color: #0000ff;">if</span><span style="color: #008000;">&#40;</span>n<span style="color: #000080;">==</span><span style="color: #0000dd;">0</span><span style="color: #008000;">&#41;</span>
        <span style="color: #008000;">&#123;</span>
            <span style="color: #0000ff;">break</span><span style="color: #008080;">;</span>
        <span style="color: #008000;">&#125;</span>
        horizon<span style="color: #008000;">&#40;</span>s,top,hor,ver<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
        vertical<span style="color: #008000;">&#40;</span>s,lt,rt<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
        horizon<span style="color: #008000;">&#40;</span>s,cen,hor,ver<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
        vertical<span style="color: #008000;">&#40;</span>s,lb,rb<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
        horizon<span style="color: #008000;">&#40;</span>s,bot,hor,ver<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
        <span style="color: #0000dd;">printf</span><span style="color: #008000;">&#40;</span><span style="color: #FF0000;">&quot;<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
&nbsp;
    <span style="color: #008000;">&#125;</span>
    <span style="color: #666666;">//system(&quot;pause&quot;);</span>
    <span style="color: #0000ff;">return</span> <span style="color: #0000dd;">0</span><span style="color: #008080;">;</span>
<span style="color: #008000;">&#125;</span></pre></td></tr></table></div>

]]></content:encoded>
			<wfw:commentRss>http://www.joansky.com/1102-lc-display-c.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>POJ 1035 Spell checker C版本</title>
		<link>http://www.joansky.com/1035-spell-checker-c.html</link>
		<comments>http://www.joansky.com/1035-spell-checker-c.html#comments</comments>
		<pubDate>Sat, 21 Nov 2009 10:06:43 +0000</pubDate>
		<dc:creator>Joan</dc:creator>
				<category><![CDATA[解题报告]]></category>
		<category><![CDATA[C]]></category>
		<category><![CDATA[poj]]></category>

		<guid isPermaLink="false">http://www.joansky.com/?p=52</guid>
		<description><![CDATA[模拟 Description You, as a member of a development team for a new spell checking program, are to write a module that will check the correctness of given words using a known dictionary of all correct words in all their forms. If the word is absent in the dictionary then it can be replaced by [...]]]></description>
			<content:encoded><![CDATA[<p>模拟</p>
<p><span id="more-52"></span></p>
<p>Description</p>
<p>You, as a member of a development team for a new spell checking program, are to write a module that will check the correctness of given words using a known dictionary of all correct words in all their forms.<br />
If the word is absent in the dictionary then it can be replaced by correct words (from the dictionary) that can be obtained by one of the following operations:<br />
?deleting of one letter from the word;<br />
?replacing of one letter in the word with an arbitrary letter;<br />
?inserting of one arbitrary letter into the word.<br />
Your task is to write the program that will find all possible replacements from the dictionary for every given word.</p>
<p>Input</p>
<p>The first part of the input file contains all words from the dictionary. Each word occupies its own line. This part is finished by the single character '#' on a separate line. All words are different. There will be at most 10000 words in the dictionary.<br />
The next part of the file contains all words that are to be checked. Each word occupies its own line. This part is also finished by the single character '#' on a separate line. There will be at most 50 words that are to be checked.<br />
All words in the input file (words from the dictionary and words to be checked) consist only of small alphabetic characters and each one contains 15 characters at most.</p>
<p>Output</p>
<p>Write to the output file exactly one line for every checked word in the order of their appearance in the second part of the input file. If the word is correct (i.e. it exists in the dictionary) write the message: " is correct". If the word is not correct then write this word first, then write the character ':' (colon), and after a single space write all its possible replacements, separated by spaces. The replacements should be written in the order of their appearance in the dictionary (in the first part of the input file). If there are no replacements for this word then the line feed should immediately follow the colon.</p>
<p>Sample Input</p>
<p>i<br />
is<br />
has<br />
have<br />
be<br />
my<br />
more<br />
contest<br />
me<br />
too<br />
if<br />
award<br />
#<br />
me<br />
aware<br />
m<br />
contest<br />
hav<br />
oo<br />
or<br />
i<br />
fi<br />
mre<br />
#</p>
<p>Sample Output</p>
<p>me is correct<br />
aware: award<br />
m: i my me<br />
contest is correct<br />
hav: has have<br />
oo: too<br />
or:<br />
i is correct<br />
fi: i<br />
mre: more me</p>
<p><span style="color: #ff0000;">题目大意：在已给出的单词字典中，检查所给的单词拼写是否正确，如果不正确找出可能的单词是哪个，单词的可能性：</p>
<p>1：一个字母拼写错误；</p>
<p>2：多添加了 一个字母；</p>
<p>3：少了一个字母</p>
<p>只要找出单词不同的字母个数为1，即可得到答案。</span></p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
</pre></td><td class="code"><pre class="cpp" style="font-family:Verdana,Courier New;"><span style="color: #339900;">#include&lt;stdio.h&gt;</span>
<span style="color: #339900;">#include&lt;string.h&gt;</span>
&nbsp;
<span style="color: #ff0000;">/*判断是否多加了或少加了字母*/</span>
<span style="color: #0000ff;">int</span> work1<span style="color: #008000;">&#40;</span><span style="color: #0000ff;">char</span> s1<span style="color: #008000;">&#91;</span><span style="color: #008000;">&#93;</span>,<span style="color: #0000ff;">char</span> s2<span style="color: #008000;">&#91;</span><span style="color: #008000;">&#93;</span><span style="color: #008000;">&#41;</span>
<span style="color: #008000;">&#123;</span>
    <span style="color: #0000ff;">int</span> index,i,count<span style="color: #008080;">;</span>
    index<span style="color: #000080;">=</span><span style="color: #000040;">-</span><span style="color: #0000dd;">1</span><span style="color: #008080;">;</span>
    count<span style="color: #000080;">=</span><span style="color: #0000dd;">0</span><span style="color: #008080;">;</span>
    <span style="color: #0000ff;">for</span><span style="color: #008000;">&#40;</span>i<span style="color: #000080;">=</span><span style="color: #0000dd;">0</span><span style="color: #008080;">;</span>i<span style="color: #000080;">&lt;</span><span style="color: #0000dd;">strlen</span><span style="color: #008000;">&#40;</span>s1<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span><span style="color: #000040;">++</span>i<span style="color: #008000;">&#41;</span>
    <span style="color: #008000;">&#123;</span>
        <span style="color: #000040;">++</span>index<span style="color: #008080;">;</span>
        <span style="color: #0000ff;">if</span><span style="color: #008000;">&#40;</span>s1<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span><span style="color: #000040;">!</span><span style="color: #000080;">=</span>s2<span style="color: #008000;">&#91;</span>index<span style="color: #008000;">&#93;</span><span style="color: #008000;">&#41;</span>
        <span style="color: #008000;">&#123;</span>
            <span style="color: #000040;">++</span>count<span style="color: #008080;">;</span>
            <span style="color: #000040;">--</span>index<span style="color: #008080;">;</span>
            <span style="color: #0000ff;">if</span><span style="color: #008000;">&#40;</span>count<span style="color: #000080;">&gt;</span><span style="color: #0000dd;">1</span><span style="color: #008000;">&#41;</span> <span style="color: #0000ff;">return</span> <span style="color: #0000dd;">0</span><span style="color: #008080;">;</span>
        <span style="color: #008000;">&#125;</span>
    <span style="color: #008000;">&#125;</span>
    <span style="color: #0000ff;">return</span> <span style="color: #0000dd;">1</span><span style="color: #008080;">;</span>
<span style="color: #008000;">&#125;</span>
<span style="color: #ff0000;">/*判断是否拼写错误*/</span>
<span style="color: #0000ff;">int</span> work2<span style="color: #008000;">&#40;</span><span style="color: #0000ff;">char</span> s1<span style="color: #008000;">&#91;</span><span style="color: #008000;">&#93;</span>,<span style="color: #0000ff;">char</span> s2<span style="color: #008000;">&#91;</span><span style="color: #008000;">&#93;</span><span style="color: #008000;">&#41;</span>
<span style="color: #008000;">&#123;</span>
    <span style="color: #0000ff;">int</span> k,count<span style="color: #008080;">;</span>
    count<span style="color: #000080;">=</span><span style="color: #0000dd;">0</span><span style="color: #008080;">;</span>
    <span style="color: #0000ff;">for</span><span style="color: #008000;">&#40;</span>k<span style="color: #000080;">=</span><span style="color: #0000dd;">0</span><span style="color: #008080;">;</span>k<span style="color: #000080;">&lt;</span><span style="color: #0000dd;">strlen</span><span style="color: #008000;">&#40;</span>s1<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span><span style="color: #000040;">++</span>k<span style="color: #008000;">&#41;</span>
    <span style="color: #008000;">&#123;</span>
        <span style="color: #0000ff;">if</span><span style="color: #008000;">&#40;</span>s1<span style="color: #008000;">&#91;</span>k<span style="color: #008000;">&#93;</span><span style="color: #000040;">!</span><span style="color: #000080;">=</span>s2<span style="color: #008000;">&#91;</span>k<span style="color: #008000;">&#93;</span><span style="color: #008000;">&#41;</span>
        <span style="color: #008000;">&#123;</span>
            <span style="color: #000040;">++</span>count<span style="color: #008080;">;</span>
            <span style="color: #0000ff;">if</span><span style="color: #008000;">&#40;</span>count<span style="color: #000080;">&gt;</span><span style="color: #0000dd;">1</span><span style="color: #008000;">&#41;</span> <span style="color: #0000ff;">return</span> <span style="color: #0000dd;">0</span><span style="color: #008080;">;</span>
        <span style="color: #008000;">&#125;</span>
    <span style="color: #008000;">&#125;</span>
    <span style="color: #0000ff;">return</span> <span style="color: #0000dd;">1</span><span style="color: #008080;">;</span>
<span style="color: #008000;">&#125;</span>
<span style="color: #0000ff;">int</span> main<span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span>
<span style="color: #008000;">&#123;</span>
    <span style="color: #0000ff;">int</span> i,k,j,count,sign<span style="color: #008080;">;</span>
    <span style="color: #0000ff;">char</span> str<span style="color: #008000;">&#91;</span><span style="color: #0000dd;">10000</span><span style="color: #008000;">&#93;</span><span style="color: #008000;">&#91;</span><span style="color: #0000dd;">15</span><span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span>
    <span style="color: #0000ff;">char</span> s<span style="color: #008000;">&#91;</span><span style="color: #0000dd;">15</span><span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span>
    i<span style="color: #000080;">=</span><span style="color: #0000dd;">0</span><span style="color: #008080;">;</span>
    <span style="color: #0000ff;">while</span><span style="color: #008000;">&#40;</span><span style="color: #0000dd;">1</span><span style="color: #008000;">&#41;</span>
    <span style="color: #008000;">&#123;</span>
        <span style="color: #0000dd;">scanf</span><span style="color: #008000;">&#40;</span><span style="color: #FF0000;">&quot;%s&quot;</span>,<span style="color: #000040;">&amp;</span>str<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
        <span style="color: #0000ff;">if</span><span style="color: #008000;">&#40;</span><span style="color: #0000dd;">strcmp</span><span style="color: #008000;">&#40;</span>str<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span>,<span style="color: #FF0000;">&quot;#&quot;</span><span style="color: #008000;">&#41;</span><span style="color: #000080;">==</span><span style="color: #0000dd;">0</span><span style="color: #008000;">&#41;</span>
        <span style="color: #008000;">&#123;</span>
            <span style="color: #0000ff;">break</span><span style="color: #008080;">;</span>
        <span style="color: #008000;">&#125;</span>
        <span style="color: #000040;">++</span>i<span style="color: #008080;">;</span>
    <span style="color: #008000;">&#125;</span>
    <span style="color: #0000ff;">while</span><span style="color: #008000;">&#40;</span><span style="color: #0000dd;">1</span><span style="color: #008000;">&#41;</span>
    <span style="color: #008000;">&#123;</span>
        <span style="color: #0000dd;">scanf</span><span style="color: #008000;">&#40;</span><span style="color: #FF0000;">&quot;%s&quot;</span>,<span style="color: #000040;">&amp;</span>s<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
        <span style="color: #0000ff;">if</span><span style="color: #008000;">&#40;</span><span style="color: #0000dd;">strcmp</span><span style="color: #008000;">&#40;</span>s,<span style="color: #FF0000;">&quot;#&quot;</span><span style="color: #008000;">&#41;</span><span style="color: #000080;">==</span><span style="color: #0000dd;">0</span><span style="color: #008000;">&#41;</span>
        <span style="color: #008000;">&#123;</span>
            <span style="color: #0000ff;">break</span><span style="color: #008080;">;</span>
        <span style="color: #008000;">&#125;</span>
        sign<span style="color: #000080;">=</span><span style="color: #0000dd;">1</span><span style="color: #008080;">;</span>
        <span style="color: #0000ff;">for</span><span style="color: #008000;">&#40;</span>j<span style="color: #000080;">=</span><span style="color: #0000dd;">0</span><span style="color: #008080;">;</span>j<span style="color: #000080;">&lt;</span>i<span style="color: #008080;">;</span><span style="color: #000040;">++</span>j<span style="color: #008000;">&#41;</span>
        <span style="color: #008000;">&#123;</span>
            <span style="color: #0000ff;">if</span><span style="color: #008000;">&#40;</span><span style="color: #0000dd;">strcmp</span><span style="color: #008000;">&#40;</span>s,str<span style="color: #008000;">&#91;</span>j<span style="color: #008000;">&#93;</span><span style="color: #008000;">&#41;</span><span style="color: #000080;">==</span><span style="color: #0000dd;">0</span><span style="color: #008000;">&#41;</span>
            <span style="color: #008000;">&#123;</span>
                sign<span style="color: #000080;">=</span><span style="color: #0000dd;">0</span><span style="color: #008080;">;</span>
                <span style="color: #0000dd;">printf</span><span style="color: #008000;">&#40;</span><span style="color: #FF0000;">&quot;%s is correct<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span>,s<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
                <span style="color: #0000ff;">break</span><span style="color: #008080;">;</span>
            <span style="color: #008000;">&#125;</span>
        <span style="color: #008000;">&#125;</span>
        <span style="color: #0000ff;">if</span><span style="color: #008000;">&#40;</span>sign<span style="color: #008000;">&#41;</span>
        <span style="color: #008000;">&#123;</span>
            <span style="color: #0000dd;">printf</span><span style="color: #008000;">&#40;</span><span style="color: #FF0000;">&quot;%s:&quot;</span>,s<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
            <span style="color: #0000ff;">for</span><span style="color: #008000;">&#40;</span>j<span style="color: #000080;">=</span><span style="color: #0000dd;">0</span><span style="color: #008080;">;</span>j<span style="color: #000080;">&lt;</span>i<span style="color: #008080;">;</span><span style="color: #000040;">++</span>j<span style="color: #008000;">&#41;</span>
            <span style="color: #008000;">&#123;</span>
                <span style="color: #0000ff;">if</span><span style="color: #008000;">&#40;</span><span style="color: #0000dd;">strlen</span><span style="color: #008000;">&#40;</span>s<span style="color: #008000;">&#41;</span><span style="color: #000080;">==</span><span style="color: #0000dd;">strlen</span><span style="color: #008000;">&#40;</span>str<span style="color: #008000;">&#91;</span>j<span style="color: #008000;">&#93;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">&#41;</span>
                <span style="color: #008000;">&#123;</span>
                    <span style="color: #0000ff;">if</span><span style="color: #008000;">&#40;</span>work2<span style="color: #008000;">&#40;</span>s,str<span style="color: #008000;">&#91;</span>j<span style="color: #008000;">&#93;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">&#41;</span>
                    <span style="color: #008000;">&#123;</span>
                        <span style="color: #0000dd;">printf</span><span style="color: #008000;">&#40;</span><span style="color: #FF0000;">&quot; %s&quot;</span>,str<span style="color: #008000;">&#91;</span>j<span style="color: #008000;">&#93;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
                    <span style="color: #008000;">&#125;</span>
                <span style="color: #008000;">&#125;</span>
                <span style="color: #0000ff;">else</span> <span style="color: #0000ff;">if</span><span style="color: #008000;">&#40;</span><span style="color: #0000dd;">strlen</span><span style="color: #008000;">&#40;</span>s<span style="color: #008000;">&#41;</span><span style="color: #000040;">-</span><span style="color: #0000dd;">strlen</span><span style="color: #008000;">&#40;</span>str<span style="color: #008000;">&#91;</span>j<span style="color: #008000;">&#93;</span><span style="color: #008000;">&#41;</span><span style="color: #000080;">==</span><span style="color: #0000dd;">1</span><span style="color: #008000;">&#41;</span>
                <span style="color: #008000;">&#123;</span>
                    <span style="color: #0000ff;">if</span><span style="color: #008000;">&#40;</span>work1<span style="color: #008000;">&#40;</span>s,str<span style="color: #008000;">&#91;</span>j<span style="color: #008000;">&#93;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">&#41;</span>
                    <span style="color: #008000;">&#123;</span>
                        <span style="color: #0000dd;">printf</span><span style="color: #008000;">&#40;</span><span style="color: #FF0000;">&quot; %s&quot;</span>,str<span style="color: #008000;">&#91;</span>j<span style="color: #008000;">&#93;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
                    <span style="color: #008000;">&#125;</span>
                <span style="color: #008000;">&#125;</span>
                <span style="color: #0000ff;">else</span> <span style="color: #0000ff;">if</span><span style="color: #008000;">&#40;</span><span style="color: #0000dd;">strlen</span><span style="color: #008000;">&#40;</span>str<span style="color: #008000;">&#91;</span>j<span style="color: #008000;">&#93;</span><span style="color: #008000;">&#41;</span><span style="color: #000040;">-</span><span style="color: #0000dd;">strlen</span><span style="color: #008000;">&#40;</span>s<span style="color: #008000;">&#41;</span><span style="color: #000080;">==</span><span style="color: #0000dd;">1</span><span style="color: #008000;">&#41;</span>
                <span style="color: #008000;">&#123;</span>
                    <span style="color: #0000ff;">if</span><span style="color: #008000;">&#40;</span>work1<span style="color: #008000;">&#40;</span>str<span style="color: #008000;">&#91;</span>j<span style="color: #008000;">&#93;</span>,s<span style="color: #008000;">&#41;</span><span style="color: #008000;">&#41;</span>
                    <span style="color: #008000;">&#123;</span>
                        <span style="color: #0000dd;">printf</span><span style="color: #008000;">&#40;</span><span style="color: #FF0000;">&quot; %s&quot;</span>,str<span style="color: #008000;">&#91;</span>j<span style="color: #008000;">&#93;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
                    <span style="color: #008000;">&#125;</span>
                <span style="color: #008000;">&#125;</span>
            <span style="color: #008000;">&#125;</span>
            <span style="color: #0000dd;">printf</span><span style="color: #008000;">&#40;</span><span style="color: #FF0000;">&quot;<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
        <span style="color: #008000;">&#125;</span>
&nbsp;
    <span style="color: #008000;">&#125;</span>
    <span style="color: #666666;">//system(&quot;pause&quot;);</span>
    <span style="color: #0000ff;">return</span> <span style="color: #0000dd;">0</span><span style="color: #008080;">;</span>
<span style="color: #008000;">&#125;</span></pre></td></tr></table></div>

]]></content:encoded>
			<wfw:commentRss>http://www.joansky.com/1035-spell-checker-c.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>POJ 1028 Web Navigation C版本</title>
		<link>http://www.joansky.com/1028-web-navigation-c.html</link>
		<comments>http://www.joansky.com/1028-web-navigation-c.html#comments</comments>
		<pubDate>Wed, 18 Nov 2009 14:52:05 +0000</pubDate>
		<dc:creator>Joan</dc:creator>
				<category><![CDATA[解题报告]]></category>
		<category><![CDATA[C]]></category>
		<category><![CDATA[poj]]></category>

		<guid isPermaLink="false">http://www.joansky.com/?p=51</guid>
		<description><![CDATA[模拟 Description Standard web browsers contain features to move backward and forward among the pages recently visited. One way to implement these features is to use two stacks to keep track of the pages that can be reached by moving backward and forward. In this problem, you are asked to implement this. The following commands [...]]]></description>
			<content:encoded><![CDATA[<p>模拟</p>
<p><span id="more-51"></span></p>
<p>Description</p>
<p>Standard web browsers contain features to move backward and forward among the pages recently visited. One way to implement these features is to use two stacks to keep track of the pages that can be reached by moving backward and forward. In this problem, you are asked to implement this.<br />
The following commands need to be supported:<br />
BACK: Push the current page on the top of the forward stack. Pop the page from the top of the backward stack, making it the new current page. If the backward stack is empty, the command is ignored.<br />
FORWARD: Push the current page on the top of the backward stack. Pop the page from the top of the forward stack, making it the new current page. If the forward stack is empty, the command is ignored.<br />
VISIT : Push the current page on the top of the backward stack, and make the URL specified the new current page. The forward stack is emptied.<br />
QUIT: Quit the browser.<br />
Assume that the browser initially loads the web page at the URL http://www.acm.org/</p>
<p>Input</p>
<p>Input is a sequence of commands. The command keywords BACK, FORWARD, VISIT, and QUIT are all in uppercase. URLs have no whitespace and have at most 70 characters. You may assume that no problem instance requires more than 100 elements in each stack at any time. The end of input is indicated by the QUIT command.</p>
<p>Output</p>
<p>For each command other than QUIT, print the URL of the current page after the command is executed if the command is not ignored. Otherwise, print "Ignored". The output for each command should be printed on its own line. No output is produced for the QUIT command.</p>
<p>Sample Input</p>
<p>VISIT http://acm.ashland.edu/<br />
VISIT http://acm.baylor.edu/acmicpc/<br />
BACK<br />
BACK<br />
BACK<br />
FORWARD<br />
VISIT http://www.ibm.com/<br />
BACK<br />
BACK<br />
FORWARD<br />
FORWARD<br />
FORWARD<br />
QUIT</p>
<p>Sample Output</p>
<p>http://acm.ashland.edu/</p>
<p>http://acm.baylor.edu/acmicpc/</p>
<p>http://acm.ashland.edu/</p>
<p>http://www.acm.org/</p>
<p>Ignored</p>
<p>http://acm.ashland.edu/</p>
<p>http://www.ibm.com/</p>
<p>http://acm.ashland.edu/</p>
<p>http://www.acm.org/</p>
<p>http://acm.ashland.edu/</p>
<p>http://www.ibm.com/</p>
<p>Ignored</p>
<p><span style="color: #ff0000;">题目大意：<br />
模拟浏览器的地址操作。<br />
VISIT：浏览当前页<br />
FORWARD：转到当前前一次打开的网址<br />
BACK：转到当前后一次打开的网址</span></p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
</pre></td><td class="code"><pre class="cpp" style="font-family:Verdana,Courier New;"><span style="color: #339900;">#include&lt;stdio.h&gt;</span>
<span style="color: #339900;">#include&lt;string.h&gt;</span>
&nbsp;
<span style="color: #0000ff;">int</span> main<span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span>
<span style="color: #008000;">&#123;</span>
    <span style="color: #0000ff;">char</span> s<span style="color: #008000;">&#91;</span><span style="color: #0000dd;">200</span><span style="color: #008000;">&#93;</span><span style="color: #008000;">&#91;</span><span style="color: #0000dd;">71</span><span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span>
    <span style="color: #0000ff;">char</span> str<span style="color: #008000;">&#91;</span><span style="color: #0000dd;">71</span><span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span>
    <span style="color: #0000ff;">int</span> i,depth<span style="color: #008080;">;</span>
    <span style="color: #0000dd;">strcpy</span><span style="color: #008000;">&#40;</span>s<span style="color: #008000;">&#91;</span><span style="color: #0000dd;">0</span><span style="color: #008000;">&#93;</span>,<span style="color: #FF0000;">&quot;http://www.acm.org/&quot;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
    i<span style="color: #000080;">=</span><span style="color: #0000dd;">0</span><span style="color: #008080;">;</span>
    depth<span style="color: #000080;">=</span><span style="color: #0000dd;">0</span><span style="color: #008080;">;</span>
    <span style="color: #0000ff;">while</span><span style="color: #008000;">&#40;</span><span style="color: #0000dd;">1</span><span style="color: #008000;">&#41;</span>
    <span style="color: #008000;">&#123;</span>
        <span style="color: #0000dd;">scanf</span><span style="color: #008000;">&#40;</span><span style="color: #FF0000;">&quot;%s&quot;</span>,str<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
        <span style="color: #0000ff;">if</span><span style="color: #008000;">&#40;</span><span style="color: #0000dd;">strcmp</span><span style="color: #008000;">&#40;</span>str,<span style="color: #FF0000;">&quot;QUIT&quot;</span><span style="color: #008000;">&#41;</span><span style="color: #000080;">==</span><span style="color: #0000dd;">0</span><span style="color: #008000;">&#41;</span>
        <span style="color: #008000;">&#123;</span>
            <span style="color: #0000ff;">break</span><span style="color: #008080;">;</span>
        <span style="color: #008000;">&#125;</span>
        <span style="color: #0000ff;">if</span><span style="color: #008000;">&#40;</span><span style="color: #0000dd;">strcmp</span><span style="color: #008000;">&#40;</span>str,<span style="color: #FF0000;">&quot;VISIT&quot;</span><span style="color: #008000;">&#41;</span><span style="color: #000080;">==</span><span style="color: #0000dd;">0</span><span style="color: #008000;">&#41;</span>
        <span style="color: #008000;">&#123;</span>
            <span style="color: #0000dd;">scanf</span><span style="color: #008000;">&#40;</span><span style="color: #FF0000;">&quot;%s&quot;</span>,<span style="color: #000040;">&amp;</span>s<span style="color: #008000;">&#91;</span><span style="color: #000040;">++</span>i<span style="color: #008000;">&#93;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
            <span style="color: #0000dd;">printf</span><span style="color: #008000;">&#40;</span><span style="color: #FF0000;">&quot;%s<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span>,s<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
            depth<span style="color: #000080;">=</span>i<span style="color: #008080;">;</span>
        <span style="color: #008000;">&#125;</span>
        <span style="color: #0000ff;">else</span> <span style="color: #0000ff;">if</span><span style="color: #008000;">&#40;</span><span style="color: #0000dd;">strcmp</span><span style="color: #008000;">&#40;</span>str,<span style="color: #FF0000;">&quot;BACK&quot;</span><span style="color: #008000;">&#41;</span><span style="color: #000080;">==</span><span style="color: #0000dd;">0</span><span style="color: #008000;">&#41;</span>
        <span style="color: #008000;">&#123;</span>
            <span style="color: #0000ff;">if</span><span style="color: #008000;">&#40;</span>i<span style="color: #000080;">&gt;</span><span style="color: #0000dd;">0</span><span style="color: #008000;">&#41;</span>
            <span style="color: #008000;">&#123;</span>
                <span style="color: #000040;">--</span>i<span style="color: #008080;">;</span>
                <span style="color: #0000dd;">printf</span><span style="color: #008000;">&#40;</span><span style="color: #FF0000;">&quot;%s<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span>,s<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
            <span style="color: #008000;">&#125;</span>
            <span style="color: #0000ff;">else</span>
            <span style="color: #008000;">&#123;</span>
                <span style="color: #0000dd;">printf</span><span style="color: #008000;">&#40;</span><span style="color: #FF0000;">&quot;Ignored<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
            <span style="color: #008000;">&#125;</span>
        <span style="color: #008000;">&#125;</span>
        <span style="color: #0000ff;">else</span> <span style="color: #0000ff;">if</span><span style="color: #008000;">&#40;</span><span style="color: #0000dd;">strcmp</span><span style="color: #008000;">&#40;</span>str,<span style="color: #FF0000;">&quot;FORWARD&quot;</span><span style="color: #008000;">&#41;</span><span style="color: #000080;">==</span><span style="color: #0000dd;">0</span><span style="color: #008000;">&#41;</span>
        <span style="color: #008000;">&#123;</span>
            <span style="color: #0000ff;">if</span><span style="color: #008000;">&#40;</span>depth<span style="color: #000080;">&gt;</span>i<span style="color: #008000;">&#41;</span>
            <span style="color: #008000;">&#123;</span>
                <span style="color: #000040;">++</span>i<span style="color: #008080;">;</span>
                <span style="color: #0000dd;">printf</span><span style="color: #008000;">&#40;</span><span style="color: #FF0000;">&quot;%s<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span>,s<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
            <span style="color: #008000;">&#125;</span>
            <span style="color: #0000ff;">else</span>
            <span style="color: #008000;">&#123;</span>
                <span style="color: #0000dd;">printf</span><span style="color: #008000;">&#40;</span><span style="color: #FF0000;">&quot;Ignored<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
            <span style="color: #008000;">&#125;</span>
        <span style="color: #008000;">&#125;</span>
    <span style="color: #008000;">&#125;</span>
    <span style="color: #666666;">//system(&quot;pause&quot;);</span>
    <span style="color: #0000ff;">return</span> <span style="color: #0000dd;">0</span><span style="color: #008080;">;</span>
<span style="color: #008000;">&#125;</span></pre></td></tr></table></div>

]]></content:encoded>
			<wfw:commentRss>http://www.joansky.com/1028-web-navigation-c.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>POJ 2041 Unreliable Message C版本</title>
		<link>http://www.joansky.com/2041-unreliable-message-c.html</link>
		<comments>http://www.joansky.com/2041-unreliable-message-c.html#comments</comments>
		<pubDate>Wed, 18 Nov 2009 14:32:55 +0000</pubDate>
		<dc:creator>Joan</dc:creator>
				<category><![CDATA[解题报告]]></category>
		<category><![CDATA[C]]></category>
		<category><![CDATA[poj]]></category>

		<guid isPermaLink="false">http://www.joansky.com/?p=50</guid>
		<description><![CDATA[找规律 Description The King of a little Kingdom on a little island in the Pacific Ocean frequently has childish ideas. One day he said, "You shall make use of a message relaying game when you inform me of something." In response to the King's statement, six servants were selected as messengers whose names were Mr. [...]]]></description>
			<content:encoded><![CDATA[<p>找规律</p>
<p><span id="more-50"></span></p>
<p>Description</p>
<p>The King of a little Kingdom on a little island in the Pacific Ocean frequently has childish ideas. One day he said, "You shall make use of a message relaying game when you inform me of something." In response to the King's statement, six servants were selected as messengers whose names were Mr. J, Miss C, Mr. E, Mr. A, Dr. P, and Mr. M. They had to relay a message to the next messenger until the message got to the King.</p>
<p>Messages addressed to the King consist of digits ('0'-'9') and alphabet characters ('a'-'z', 'A'-'Z'). Capital and small letters are distinguished in messages. For example, "ke3E9Aa" is a message.</p>
<p>Contrary to King's expectations, he always received wrong messages, because each messenger changed messages a bit before passing them to the next messenger. Since it irritated the King, he told you who are the Minister of the Science and Technology Agency of the Kingdom, "We don't want such a wrong message any more. You shall develop software to correct it!" In response to the King's new statement, you analyzed the messengers' mistakes with all technologies in the Kingdom, and acquired the following features of mistakes of each messenger. A surprising point was that each messenger made the same mistake whenever relaying a message. The following facts were observed.</p>
<p>Mr. J rotates all characters of the message to the left by one. For example, he transforms "aB23d" to "B23da".</p>
<p>Miss C rotates all characters of the message to the right by one. For example, she transforms "aB23d" to "daB23".</p>
<p>Mr. E swaps the left half of the message with the right half. If the message has an odd number of characters, the middle one does not move. For example, he transforms "e3ac" to "ace3", and "aB23d" to "3d2aB".</p>
<p>Mr. A reverses the message. For example, he transforms "aB23d" to "d32Ba".</p>
<p>Dr. P increments by one all the digits in the message. If a digit is '9', it becomes '0'. The alphabet characters do not change. For example, he transforms "aB23d" to "aB34d", and "e9ac" to "e0ac".</p>
<p>Mr. M decrements by one all the digits in the message. If a digit is '0', it becomes '9'. The alphabet characters do not change. For example, he transforms "aB23d" to "aB12d", and "e0ac" to "e9ac".</p>
<p>The software you must develop is to infer the original message from the final message, given the order of the messengers. For example, if the order of the messengers is A->J->M->P and the message given to the King is "aB23d", what is the original message? According to the features of the messengers' mistakes, the sequence leading to the final message is "32Bad"->"daB23"->"aB23d"->"aB12d"->"aB23d": As a result, the original message should be "32Bad".</p>
<p>Input</p>
<p>The input format is as follows.</p>
<p>n<br />
The order of messengers<br />
The message given to the King<br />
...<br />
The order of messengers<br />
The message given to the King</p>
<p>The first line of the input contains a positive integer n, which denotes the number of data sets. Each data set is a pair of the order of messengers and the message given to the King. The number of messengers relaying a message is between 1 and 6 inclusive. The same person may not appear more than once in the order of messengers. The length of a message is between 1 and 25 inclusive.</p>
<p>Output</p>
<p>The inferred messages are printed each on a separate line.</p>
<p>Sample Input</p>
<p>5<br />
AJMP<br />
aB23d<br />
E<br />
86AE<br />
AM<br />
6<br />
JPEM<br />
WaEaETC302Q<br />
CP<br />
rTurnAGundam1isdefferentf</p>
<p>Sample Output</p>
<p>32Bad<br />
AE86<br />
7<br />
EC302QTWaEa<br />
TurnAGundam0isdefferentfr</p>
<p><span style="color: #ff0000;">题目大意：<br />
一串字符经过n位大臣的不同加密方式变为字符串str传给国王，把字符串str解密输出<br />
不同的加密的方式看题目叙述</span></p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
</pre></td><td class="code"><pre class="cpp" style="font-family:Verdana,Courier New;"><span style="color: #339900;">#include&lt;stdio.h&gt;</span>
<span style="color: #0000ff;">char</span> str<span style="color: #008000;">&#91;</span><span style="color: #0000dd;">30</span><span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span>
<span style="color: #0000ff;">char</span> s<span style="color: #008000;">&#91;</span><span style="color: #0000dd;">30</span><span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span>
<span style="color: #0000ff;">void</span> jmess<span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span>
<span style="color: #008000;">&#123;</span>
    <span style="color: #0000ff;">int</span> i,j<span style="color: #008080;">;</span>
    i<span style="color: #000080;">=</span><span style="color: #0000dd;">0</span><span style="color: #008080;">;</span>
    <span style="color: #0000ff;">for</span><span style="color: #008000;">&#40;</span>j<span style="color: #000080;">=</span><span style="color: #0000dd;">1</span><span style="color: #008080;">;</span>j<span style="color: #000080;">&lt;</span><span style="color: #0000dd;">strlen</span><span style="color: #008000;">&#40;</span>str<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span><span style="color: #000040;">++</span>j<span style="color: #008000;">&#41;</span>
    <span style="color: #008000;">&#123;</span>
        s<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span><span style="color: #000080;">=</span>str<span style="color: #008000;">&#91;</span>j<span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span>
        <span style="color: #000040;">++</span>i<span style="color: #008080;">;</span>
    <span style="color: #008000;">&#125;</span>
    s<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span><span style="color: #000080;">=</span>str<span style="color: #008000;">&#91;</span><span style="color: #0000dd;">0</span><span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span>
    s<span style="color: #008000;">&#91;</span><span style="color: #000040;">++</span>i<span style="color: #008000;">&#93;</span><span style="color: #000080;">=</span><span style="color: #FF0000;">'<span style="color: #006699; font-weight: bold;">\0</span>'</span><span style="color: #008080;">;</span>
    <span style="color: #0000dd;">strcpy</span><span style="color: #008000;">&#40;</span>str,s<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
<span style="color: #008000;">&#125;</span>
&nbsp;
<span style="color: #0000ff;">void</span> cmess<span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span>
<span style="color: #008000;">&#123;</span>
    <span style="color: #0000ff;">int</span> i,j<span style="color: #008080;">;</span>
    i<span style="color: #000080;">=</span><span style="color: #0000dd;">1</span><span style="color: #008080;">;</span>
    <span style="color: #0000ff;">for</span><span style="color: #008000;">&#40;</span>j<span style="color: #000080;">=</span><span style="color: #0000dd;">0</span><span style="color: #008080;">;</span>j<span style="color: #000080;">&lt;</span><span style="color: #0000dd;">strlen</span><span style="color: #008000;">&#40;</span>str<span style="color: #008000;">&#41;</span><span style="color: #000040;">-</span><span style="color: #0000dd;">1</span><span style="color: #008080;">;</span><span style="color: #000040;">++</span>j<span style="color: #008000;">&#41;</span>
    <span style="color: #008000;">&#123;</span>
        s<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span><span style="color: #000080;">=</span>str<span style="color: #008000;">&#91;</span>j<span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span>
        <span style="color: #000040;">++</span>i<span style="color: #008080;">;</span>
    <span style="color: #008000;">&#125;</span>
    s<span style="color: #008000;">&#91;</span><span style="color: #0000dd;">0</span><span style="color: #008000;">&#93;</span><span style="color: #000080;">=</span>str<span style="color: #008000;">&#91;</span>j<span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span>
    s<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span><span style="color: #000080;">=</span><span style="color: #FF0000;">'<span style="color: #006699; font-weight: bold;">\0</span>'</span><span style="color: #008080;">;</span>
    <span style="color: #0000dd;">strcpy</span><span style="color: #008000;">&#40;</span>str,s<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
<span style="color: #008000;">&#125;</span>
&nbsp;
<span style="color: #0000ff;">void</span> emess<span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span>
<span style="color: #008000;">&#123;</span>
    <span style="color: #0000ff;">int</span> num,left,right,i,j<span style="color: #008080;">;</span>
    num<span style="color: #000080;">=</span><span style="color: #0000dd;">strlen</span><span style="color: #008000;">&#40;</span>str<span style="color: #008000;">&#41;</span><span style="color: #000040;">/</span><span style="color: #0000dd;">2</span><span style="color: #008080;">;</span>
    <span style="color: #0000ff;">if</span><span style="color: #008000;">&#40;</span><span style="color: #0000dd;">strlen</span><span style="color: #008000;">&#40;</span>str<span style="color: #008000;">&#41;</span><span style="color: #000040;">%</span><span style="color:#800080;">2</span><span style="color: #000080;">==</span><span style="color: #0000dd;">1</span><span style="color: #008000;">&#41;</span>
    <span style="color: #008000;">&#123;</span>
        left<span style="color: #000080;">=</span>num<span style="color: #008080;">;</span>
        right<span style="color: #000080;">=</span>num<span style="color: #000040;">+</span><span style="color: #0000dd;">1</span><span style="color: #008080;">;</span>
    <span style="color: #008000;">&#125;</span>
    <span style="color: #0000ff;">else</span>
    <span style="color: #008000;">&#123;</span>
        right<span style="color: #000080;">=</span>num<span style="color: #008080;">;</span>
        left<span style="color: #000080;">=</span>num<span style="color: #008080;">;</span>
    <span style="color: #008000;">&#125;</span>
    j<span style="color: #000080;">=</span><span style="color: #0000dd;">0</span><span style="color: #008080;">;</span>
    <span style="color: #0000ff;">for</span><span style="color: #008000;">&#40;</span>i<span style="color: #000080;">=</span>right<span style="color: #008080;">;</span>i<span style="color: #000080;">&lt;</span><span style="color: #0000dd;">strlen</span><span style="color: #008000;">&#40;</span>str<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span><span style="color: #000040;">++</span>i<span style="color: #008000;">&#41;</span>
    <span style="color: #008000;">&#123;</span>
        s<span style="color: #008000;">&#91;</span>j<span style="color: #008000;">&#93;</span><span style="color: #000080;">=</span>str<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span>
        <span style="color: #000040;">++</span>j<span style="color: #008080;">;</span>
    <span style="color: #008000;">&#125;</span>
    <span style="color: #0000ff;">if</span><span style="color: #008000;">&#40;</span><span style="color: #0000dd;">strlen</span><span style="color: #008000;">&#40;</span>str<span style="color: #008000;">&#41;</span><span style="color: #000040;">%</span><span style="color:#800080;">2</span><span style="color: #008000;">&#41;</span>
    <span style="color: #008000;">&#123;</span>
        s<span style="color: #008000;">&#91;</span>j<span style="color: #008000;">&#93;</span><span style="color: #000080;">=</span>str<span style="color: #008000;">&#91;</span>num<span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span>
        <span style="color: #000040;">++</span>j<span style="color: #008080;">;</span>
    <span style="color: #008000;">&#125;</span>
    <span style="color: #0000ff;">for</span><span style="color: #008000;">&#40;</span>i<span style="color: #000080;">=</span><span style="color: #0000dd;">0</span><span style="color: #008080;">;</span>i<span style="color: #000080;">&lt;</span>left<span style="color: #008080;">;</span><span style="color: #000040;">++</span>i<span style="color: #008000;">&#41;</span>
    <span style="color: #008000;">&#123;</span>
        s<span style="color: #008000;">&#91;</span>j<span style="color: #008000;">&#93;</span><span style="color: #000080;">=</span>str<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span>
        <span style="color: #000040;">++</span>j<span style="color: #008080;">;</span>
    <span style="color: #008000;">&#125;</span>
    s<span style="color: #008000;">&#91;</span>j<span style="color: #008000;">&#93;</span><span style="color: #000080;">=</span><span style="color: #FF0000;">'<span style="color: #006699; font-weight: bold;">\0</span>'</span><span style="color: #008080;">;</span>
    <span style="color: #0000dd;">strcpy</span><span style="color: #008000;">&#40;</span>str,s<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
<span style="color: #008000;">&#125;</span>
&nbsp;
<span style="color: #0000ff;">void</span> amess<span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span>
<span style="color: #008000;">&#123;</span>
    <span style="color: #0000ff;">int</span> i,j<span style="color: #008080;">;</span>
    j<span style="color: #000080;">=</span><span style="color: #0000dd;">0</span><span style="color: #008080;">;</span>
    <span style="color: #0000ff;">for</span><span style="color: #008000;">&#40;</span>i<span style="color: #000080;">=</span><span style="color: #0000dd;">strlen</span><span style="color: #008000;">&#40;</span>str<span style="color: #008000;">&#41;</span><span style="color: #000040;">-</span><span style="color: #0000dd;">1</span><span style="color: #008080;">;</span>i<span style="color: #000080;">&gt;=</span><span style="color: #0000dd;">0</span><span style="color: #008080;">;</span><span style="color: #000040;">--</span>i<span style="color: #008000;">&#41;</span>
    <span style="color: #008000;">&#123;</span>
        s<span style="color: #008000;">&#91;</span>j<span style="color: #008000;">&#93;</span><span style="color: #000080;">=</span>str<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span>
        <span style="color: #000040;">++</span>j<span style="color: #008080;">;</span>
    <span style="color: #008000;">&#125;</span>
    s<span style="color: #008000;">&#91;</span>j<span style="color: #008000;">&#93;</span><span style="color: #000080;">=</span><span style="color: #FF0000;">'<span style="color: #006699; font-weight: bold;">\0</span>'</span><span style="color: #008080;">;</span>
    <span style="color: #0000dd;">strcpy</span><span style="color: #008000;">&#40;</span>str,s<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
<span style="color: #008000;">&#125;</span>
&nbsp;
<span style="color: #0000ff;">void</span> pmess<span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span>
<span style="color: #008000;">&#123;</span>
    <span style="color: #0000ff;">int</span> i,j<span style="color: #008080;">;</span>
    j<span style="color: #000080;">=</span><span style="color: #0000dd;">0</span><span style="color: #008080;">;</span>
    <span style="color: #0000ff;">for</span><span style="color: #008000;">&#40;</span>i<span style="color: #000080;">=</span><span style="color: #0000dd;">0</span><span style="color: #008080;">;</span>i<span style="color: #000080;">&lt;</span><span style="color: #0000dd;">strlen</span><span style="color: #008000;">&#40;</span>str<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span><span style="color: #000040;">++</span>i<span style="color: #008000;">&#41;</span>
    <span style="color: #008000;">&#123;</span>
        <span style="color: #0000ff;">if</span><span style="color: #008000;">&#40;</span>str<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span><span style="color: #000080;">&gt;=</span><span style="color: #FF0000;">'0'</span><span style="color: #000040;">&amp;&amp;</span>str<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span><span style="color: #000080;">&lt;=</span><span style="color: #FF0000;">'9'</span><span style="color: #008000;">&#41;</span>
        <span style="color: #008000;">&#123;</span>
            s<span style="color: #008000;">&#91;</span>j<span style="color: #008000;">&#93;</span><span style="color: #000080;">=</span><span style="color: #008000;">&#40;</span>str<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span><span style="color: #000040;">-</span><span style="color: #FF0000;">'0'</span><span style="color: #000040;">+</span><span style="color: #0000dd;">1</span><span style="color: #008000;">&#41;</span><span style="color: #000040;">%</span><span style="color:#800080;">10</span><span style="color: #000040;">+</span><span style="color: #FF0000;">'0'</span><span style="color: #008080;">;</span>
        <span style="color: #008000;">&#125;</span>
        <span style="color: #0000ff;">else</span>
        <span style="color: #008000;">&#123;</span>
            s<span style="color: #008000;">&#91;</span>j<span style="color: #008000;">&#93;</span><span style="color: #000080;">=</span>str<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span>
        <span style="color: #008000;">&#125;</span>
        <span style="color: #000040;">++</span>j<span style="color: #008080;">;</span>
    <span style="color: #008000;">&#125;</span>
    s<span style="color: #008000;">&#91;</span>j<span style="color: #008000;">&#93;</span><span style="color: #000080;">=</span><span style="color: #FF0000;">'<span style="color: #006699; font-weight: bold;">\0</span>'</span><span style="color: #008080;">;</span>
    <span style="color: #0000dd;">strcpy</span><span style="color: #008000;">&#40;</span>str,s<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
<span style="color: #008000;">&#125;</span>
&nbsp;
<span style="color: #0000ff;">void</span> mmess<span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span>
<span style="color: #008000;">&#123;</span>
    <span style="color: #0000ff;">int</span> i,j<span style="color: #008080;">;</span>
    j<span style="color: #000080;">=</span><span style="color: #0000dd;">0</span><span style="color: #008080;">;</span>
    <span style="color: #0000ff;">for</span><span style="color: #008000;">&#40;</span>i<span style="color: #000080;">=</span><span style="color: #0000dd;">0</span><span style="color: #008080;">;</span>i<span style="color: #000080;">&lt;</span><span style="color: #0000dd;">strlen</span><span style="color: #008000;">&#40;</span>str<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span><span style="color: #000040;">++</span>i<span style="color: #008000;">&#41;</span>
    <span style="color: #008000;">&#123;</span>
        <span style="color: #0000ff;">if</span><span style="color: #008000;">&#40;</span>str<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span><span style="color: #000080;">&gt;=</span><span style="color: #FF0000;">'0'</span><span style="color: #000040;">&amp;&amp;</span>str<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span><span style="color: #000080;">&lt;=</span><span style="color: #FF0000;">'9'</span><span style="color: #008000;">&#41;</span>
        <span style="color: #008000;">&#123;</span>
            s<span style="color: #008000;">&#91;</span>j<span style="color: #008000;">&#93;</span><span style="color: #000080;">=</span><span style="color: #008000;">&#40;</span>str<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span><span style="color: #000040;">-</span><span style="color: #FF0000;">'0'</span><span style="color: #000040;">+</span><span style="color: #0000dd;">9</span><span style="color: #008000;">&#41;</span><span style="color: #000040;">%</span><span style="color:#800080;">10</span><span style="color: #000040;">+</span><span style="color: #FF0000;">'0'</span><span style="color: #008080;">;</span>
        <span style="color: #008000;">&#125;</span>
        <span style="color: #0000ff;">else</span>
        <span style="color: #008000;">&#123;</span>
            s<span style="color: #008000;">&#91;</span>j<span style="color: #008000;">&#93;</span><span style="color: #000080;">=</span>str<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span>
        <span style="color: #008000;">&#125;</span>
        <span style="color: #000040;">++</span>j<span style="color: #008080;">;</span>
    <span style="color: #008000;">&#125;</span>
    s<span style="color: #008000;">&#91;</span>j<span style="color: #008000;">&#93;</span><span style="color: #000080;">=</span><span style="color: #FF0000;">'<span style="color: #006699; font-weight: bold;">\0</span>'</span><span style="color: #008080;">;</span>
    <span style="color: #0000dd;">strcpy</span><span style="color: #008000;">&#40;</span>str,s<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
<span style="color: #008000;">&#125;</span>
&nbsp;
<span style="color: #0000ff;">int</span> main<span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span>
<span style="color: #008000;">&#123;</span>
    <span style="color: #0000ff;">char</span> order<span style="color: #008000;">&#91;</span><span style="color: #0000dd;">7</span><span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span>
    <span style="color: #0000ff;">int</span> n,i<span style="color: #008080;">;</span>
    <span style="color: #0000dd;">scanf</span><span style="color: #008000;">&#40;</span><span style="color: #FF0000;">&quot;%d&quot;</span>,<span style="color: #000040;">&amp;</span>n<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
    <span style="color: #0000ff;">while</span><span style="color: #008000;">&#40;</span>n<span style="color: #000040;">--</span><span style="color: #008000;">&#41;</span>
    <span style="color: #008000;">&#123;</span>
        <span style="color: #0000dd;">scanf</span><span style="color: #008000;">&#40;</span><span style="color: #FF0000;">&quot;%s&quot;</span>,<span style="color: #000040;">&amp;</span>order<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
        <span style="color: #0000dd;">scanf</span><span style="color: #008000;">&#40;</span><span style="color: #FF0000;">&quot;%s&quot;</span>,<span style="color: #000040;">&amp;</span>str<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
        <span style="color: #0000ff;">for</span><span style="color: #008000;">&#40;</span>i<span style="color: #000080;">=</span><span style="color: #0000dd;">strlen</span><span style="color: #008000;">&#40;</span>order<span style="color: #008000;">&#41;</span><span style="color: #000040;">-</span><span style="color: #0000dd;">1</span><span style="color: #008080;">;</span>i<span style="color: #000080;">&gt;=</span><span style="color: #0000dd;">0</span><span style="color: #008080;">;</span><span style="color: #000040;">--</span>i<span style="color: #008000;">&#41;</span>
        <span style="color: #008000;">&#123;</span>
            <span style="color: #0000ff;">switch</span><span style="color: #008000;">&#40;</span>order<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span><span style="color: #008000;">&#41;</span>
            <span style="color: #008000;">&#123;</span>
                <span style="color: #0000ff;">case</span> <span style="color: #FF0000;">'J'</span><span style="color: #008080;">:</span>
                    cmess<span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
                    <span style="color: #0000ff;">break</span><span style="color: #008080;">;</span>
                <span style="color: #0000ff;">case</span> <span style="color: #FF0000;">'C'</span><span style="color: #008080;">:</span>
                    jmess<span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
                    <span style="color: #0000ff;">break</span><span style="color: #008080;">;</span>
                <span style="color: #0000ff;">case</span> <span style="color: #FF0000;">'E'</span><span style="color: #008080;">:</span>
                    emess<span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
                    <span style="color: #0000ff;">break</span><span style="color: #008080;">;</span>
                <span style="color: #0000ff;">case</span> <span style="color: #FF0000;">'A'</span><span style="color: #008080;">:</span>
                    amess<span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
                    <span style="color: #0000ff;">break</span><span style="color: #008080;">;</span>
                <span style="color: #0000ff;">case</span> <span style="color: #FF0000;">'P'</span> <span style="color: #008080;">:</span>
                    mmess<span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
                    <span style="color: #0000ff;">break</span><span style="color: #008080;">;</span>
                <span style="color: #0000ff;">case</span> <span style="color: #FF0000;">'M'</span> <span style="color: #008080;">:</span>
                    pmess<span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
                    <span style="color: #0000ff;">break</span><span style="color: #008080;">;</span>
            <span style="color: #008000;">&#125;</span>
        <span style="color: #008000;">&#125;</span>
        <span style="color: #0000dd;">printf</span><span style="color: #008000;">&#40;</span><span style="color: #FF0000;">&quot;%s<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span>,str<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
    <span style="color: #008000;">&#125;</span>
    <span style="color: #0000dd;">system</span><span style="color: #008000;">&#40;</span><span style="color: #FF0000;">&quot;pause&quot;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
    <span style="color: #0000ff;">return</span> <span style="color: #0000dd;">0</span><span style="color: #008080;">;</span>
<span style="color: #008000;">&#125;</span></pre></td></tr></table></div>

]]></content:encoded>
			<wfw:commentRss>http://www.joansky.com/2041-unreliable-message-c.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>POJ 1026 Cipher C版本</title>
		<link>http://www.joansky.com/1026-cipher-c.html</link>
		<comments>http://www.joansky.com/1026-cipher-c.html#comments</comments>
		<pubDate>Wed, 18 Nov 2009 09:06:16 +0000</pubDate>
		<dc:creator>Joan</dc:creator>
				<category><![CDATA[解题报告]]></category>
		<category><![CDATA[C]]></category>
		<category><![CDATA[poj]]></category>

		<guid isPermaLink="false">http://www.joansky.com/?p=49</guid>
		<description><![CDATA[数学题+置换群 Description Bob and Alice started to use a brand-new encoding scheme. Surprisingly it is not a Public Key Cryptosystem, but their encoding and decoding is based on secret keys. They chose the secret key at their last meeting in Philadelphia on February 16th, 1996. They chose as a secret key a sequence of n [...]]]></description>
			<content:encoded><![CDATA[<p>数学题+置换群</p>
<p><span id="more-49"></span><br />
Description</p>
<p>Bob and Alice started to use a brand-new encoding scheme. Surprisingly it is not a Public Key Cryptosystem, but their encoding and decoding is based on secret keys. They chose the secret key at their last meeting in Philadelphia on February 16th, 1996. They chose as a secret key a sequence of n distinct integers, a1 ; . . .; an, greater than zero and less or equal to n. The encoding is based on the following principle. The message is written down below the key, so that characters in the message and numbers in the key are correspondingly aligned. Character in the message at the position i is written in the encoded message at the position ai, where ai is the corresponding number in the key. And then the encoded message is encoded in the same way. This process is repeated k times. After kth encoding they exchange their message.</p>
<p>The length of the message is always less or equal than n. If the message is shorter than n, then spaces are added to the end of the message to get the message with the length n.</p>
<p>Help Alice and Bob and write program which reads the key and then a sequence of pairs consisting of k and message to be encoded k times and produces a list of encoded messages.</p>
<p>Input</p>
<p>The input file consists of several blocks. Each block has a number 0 &amp;lt; n &amp;lt;= 200 in the first line. The next line contains a sequence of n numbers pairwise distinct and each greater than zero and less or equal than n. Next lines contain integer number k and one message of ascii characters separated by one space. The lines are ended with eol, this eol does not belong to the message. The block ends with the separate line with the number 0. After the last block there is in separate line the number 0.</p>
<p>Output</p>
<p>Output is divided into blocks corresponding to the input blocks. Each block contains the encoded input messages in the same order as in input file. Each encoded message in the output file has the lenght n. After each block there is one empty line.</p>
<p>Sample Input</p>
<p>10<br />
4 5 3 7 2 8 1 6 10 9<br />
1 Hello Bob<br />
1995 CERC<br />
0<br />
0</p>
<p>Sample Output</p>
<p>BolHeol  b<br />
C RCE</p>
<p><span style="color: #ff0000;">题目的大概意思是这样的：</p>
<p>给出n个数字出现的顺序，给出一个字符串加密的次数，再给一串字符串，长度少于n，用空格补全，按着每个字符所处位置的数字进行排序加密，我们可以发现每个数字经过k次加密就能构成一个循环，这样我们只要找到这个循环周期k，问题就解决了，加密的次数用得到得循环次数k进行求余,这样才不会超时</p>
<p>例子给出的第一个字符加密情况：<br />
</span></p>
<p><span style="color: #ff0000;">1-4-7-1</p>
<p>第二个字符</p>
<p>2-5-2</p>
<p>这里每个字符循环周期是不一样的</span></p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
</pre></td><td class="code"><pre class="cpp" style="font-family:Verdana,Courier New;"><span style="color: #339900;">#include&lt;stdio.h&gt;</span>
<span style="color: #339900;">#define MAX 205</span>
<span style="color: #0000ff;">int</span> t<span style="color: #008000;">&#91;</span>MAX<span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span>
&nbsp;
<span style="color: #ff0000;">/*计算每个数字循环的次数*/</span>
<span style="color: #0000ff;">void</span> work<span style="color: #008000;">&#40;</span><span style="color: #0000ff;">int</span> a<span style="color: #008000;">&#91;</span><span style="color: #008000;">&#93;</span>,<span style="color: #0000ff;">int</span> n<span style="color: #008000;">&#41;</span>
<span style="color: #008000;">&#123;</span>
    <span style="color: #0000ff;">int</span> i,j,k<span style="color: #008080;">;</span>
    <span style="color: #0000ff;">int</span> num<span style="color: #008080;">;</span>
    <span style="color: #0000ff;">int</span> max<span style="color: #000080;">=</span><span style="color: #0000dd;">0</span>,count<span style="color: #008080;">;</span>
    <span style="color: #0000ff;">for</span><span style="color: #008000;">&#40;</span>i<span style="color: #000080;">=</span><span style="color: #0000dd;">1</span><span style="color: #008080;">;</span>i<span style="color: #000080;">&lt;=</span>n<span style="color: #008080;">;</span><span style="color: #000040;">++</span>i<span style="color: #008000;">&#41;</span>
    <span style="color: #008000;">&#123;</span>
        j<span style="color: #000080;">=</span>a<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span>
        count<span style="color: #000080;">=</span><span style="color: #0000dd;">1</span><span style="color: #008080;">;</span>
        <span style="color: #0000ff;">while</span><span style="color: #008000;">&#40;</span>i<span style="color: #000040;">!</span><span style="color: #000080;">=</span>j<span style="color: #008000;">&#41;</span>
        <span style="color: #008000;">&#123;</span>
            count<span style="color: #000040;">++</span><span style="color: #008080;">;</span>
            j<span style="color: #000080;">=</span>a<span style="color: #008000;">&#91;</span>j<span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span>
        <span style="color: #008000;">&#125;</span>
        t<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span><span style="color: #000080;">=</span>count<span style="color: #008080;">;</span>
    <span style="color: #008000;">&#125;</span>
<span style="color: #008000;">&#125;</span>
&nbsp;
<span style="color: #0000ff;">int</span> main<span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span>
<span style="color: #008000;">&#123;</span>
    <span style="color: #0000ff;">int</span> n,m,i,j<span style="color: #008080;">;</span>
    <span style="color: #0000ff;">int</span> a<span style="color: #008000;">&#91;</span>MAX<span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span>
    <span style="color: #0000ff;">char</span> s<span style="color: #008000;">&#91;</span>MAX<span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span>
    <span style="color: #0000ff;">int</span> num<span style="color: #008080;">;</span>
    <span style="color: #0000ff;">char</span> str<span style="color: #008000;">&#91;</span>MAX<span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span>
    <span style="color: #0000ff;">while</span><span style="color: #008000;">&#40;</span><span style="color: #0000dd;">scanf</span><span style="color: #008000;">&#40;</span><span style="color: #FF0000;">&quot;%d&quot;</span>,<span style="color: #000040;">&amp;</span>n<span style="color: #008000;">&#41;</span>,n<span style="color: #008000;">&#41;</span>
    <span style="color: #008000;">&#123;</span>
        <span style="color: #0000ff;">for</span><span style="color: #008000;">&#40;</span>i<span style="color: #000080;">=</span><span style="color: #0000dd;">1</span><span style="color: #008080;">;</span>i<span style="color: #000080;">&lt;=</span>n<span style="color: #008080;">;</span><span style="color: #000040;">++</span>i<span style="color: #008000;">&#41;</span>
        <span style="color: #008000;">&#123;</span>
            <span style="color: #0000dd;">scanf</span><span style="color: #008000;">&#40;</span><span style="color: #FF0000;">&quot;%d&quot;</span>,<span style="color: #000040;">&amp;</span>a<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
        <span style="color: #008000;">&#125;</span>
        work<span style="color: #008000;">&#40;</span>a,n<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
        <span style="color: #0000ff;">while</span><span style="color: #008000;">&#40;</span><span style="color: #0000dd;">scanf</span><span style="color: #008000;">&#40;</span><span style="color: #FF0000;">&quot;%d&quot;</span>,<span style="color: #000040;">&amp;</span>m<span style="color: #008000;">&#41;</span>,m<span style="color: #008000;">&#41;</span>
        <span style="color: #008000;">&#123;</span>
            <span style="color: #0000dd;">getchar</span><span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
            <span style="color: #0000dd;">gets</span><span style="color: #008000;">&#40;</span>s<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
            <span style="color: #ff0000;">/*补全空格*/</span> 
            <span style="color: #0000ff;">for</span><span style="color: #008000;">&#40;</span>i<span style="color: #000080;">=</span><span style="color: #0000dd;">strlen</span><span style="color: #008000;">&#40;</span>s<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>i<span style="color: #000080;">&lt;</span>n<span style="color: #008080;">;</span><span style="color: #000040;">++</span>i<span style="color: #008000;">&#41;</span>
            <span style="color: #008000;">&#123;</span>
                s<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span><span style="color: #000080;">=</span><span style="color: #0000dd;">32</span><span style="color: #008080;">;</span>
            <span style="color: #008000;">&#125;</span>
            s<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span><span style="color: #000080;">=</span><span style="color: #FF0000;">'<span style="color: #006699; font-weight: bold;">\0</span>'</span><span style="color: #008080;">;</span>
            <span style="color: #0000ff;">for</span><span style="color: #008000;">&#40;</span>j<span style="color: #000080;">=</span><span style="color: #0000dd;">1</span><span style="color: #008080;">;</span>j<span style="color: #000080;">&lt;=</span>n<span style="color: #008080;">;</span><span style="color: #000040;">++</span>j<span style="color: #008000;">&#41;</span>
            <span style="color: #008000;">&#123;</span>
                num<span style="color: #000080;">=</span>j<span style="color: #008080;">;</span>
                <span style="color: #0000ff;">for</span><span style="color: #008000;">&#40;</span>i<span style="color: #000080;">=</span><span style="color: #0000dd;">0</span><span style="color: #008080;">;</span>i<span style="color: #000080;">&lt;</span>m<span style="color: #000040;">%</span>t<span style="color: #008000;">&#91;</span>j<span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span><span style="color: #000040;">++</span>i<span style="color: #008000;">&#41;</span>
                <span style="color: #008000;">&#123;</span>
                    num<span style="color: #000080;">=</span>a<span style="color: #008000;">&#91;</span>num<span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span>
                <span style="color: #008000;">&#125;</span>
                str<span style="color: #008000;">&#91;</span>num<span style="color: #000040;">-</span><span style="color: #0000dd;">1</span><span style="color: #008000;">&#93;</span><span style="color: #000080;">=</span>s<span style="color: #008000;">&#91;</span>j<span style="color: #000040;">-</span><span style="color: #0000dd;">1</span><span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span>
            <span style="color: #008000;">&#125;</span>
            str<span style="color: #008000;">&#91;</span>j<span style="color: #000040;">-</span><span style="color: #0000dd;">1</span><span style="color: #008000;">&#93;</span><span style="color: #000080;">=</span><span style="color: #FF0000;">'<span style="color: #006699; font-weight: bold;">\0</span>'</span><span style="color: #008080;">;</span>
            <span style="color: #0000dd;">puts</span><span style="color: #008000;">&#40;</span>str<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
        <span style="color: #008000;">&#125;</span>
        <span style="color: #0000dd;">printf</span><span style="color: #008000;">&#40;</span><span style="color: #FF0000;">&quot;<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
    <span style="color: #008000;">&#125;</span>
    <span style="color: #666666;">//system(&quot;pause&quot;);</span>
    <span style="color: #0000ff;">return</span> <span style="color: #0000dd;">0</span><span style="color: #008080;">;</span>
<span style="color: #008000;">&#125;</span></pre></td></tr></table></div>

]]></content:encoded>
			<wfw:commentRss>http://www.joansky.com/1026-cipher-c.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>POJ 1016 Numbers That Count C版本</title>
		<link>http://www.joansky.com/1016-numbers-that-count-c.html</link>
		<comments>http://www.joansky.com/1016-numbers-that-count-c.html#comments</comments>
		<pubDate>Wed, 18 Nov 2009 08:39:52 +0000</pubDate>
		<dc:creator>Joan</dc:creator>
				<category><![CDATA[解题报告]]></category>
		<category><![CDATA[C]]></category>
		<category><![CDATA[poj]]></category>

		<guid isPermaLink="false">http://www.joansky.com/?p=48</guid>
		<description><![CDATA[简单数学题+模拟 Description "Kronecker's Knumbers" is a little company that manufactures plastic digits for use in signs (theater marquees, gas station price displays, and so on). The owner and sole employee, Klyde Kronecker, keeps track of how many digits of each type he has used by maintaining an inventory book. For instance, if he has just [...]]]></description>
			<content:encoded><![CDATA[<p>简单数学题+模拟</p>
<p><span id="more-48"></span><br />
Description</p>
<p>"Kronecker's Knumbers" is a little company that manufactures plastic digits for use in signs (theater marquees, gas station price displays, and so on). The owner and sole employee, Klyde Kronecker, keeps track of how many digits of each type he has used by maintaining an inventory book. For instance, if he has just made a sign containing the telephone number "5553141", he'll write down the number "5553141" in one column of his book, and in the next column he'll list how many of each digit he used: two 1s, one 3, one 4, and three 5s. (Digits that don't get used don't appear in the inventory.) He writes the inventory in condensed form, like this: "21131435".</p>
<p>The other day, Klyde filled an order for the number 31123314 and was amazed to discover that the inventory of this number is the same as the number---it has three 1s, one 2, three 3s, and one 4! He calls this an example of a "self-inventorying number", and now he wants to find out which numbers are self-inventorying, or lead to a self-inventorying number through iterated application of the inventorying operation described below. You have been hired to help him in his investigations.</p>
<p>Given any non-negative integer n, its inventory is another integer consisting of a concatenation of integers c1 d1 c2 d2 ... ck dk , where each ci and di is an unsigned integer, every ci is positive, the di satisfy 0&lt;=d1&lt;...&lt;=9, and, for each digit d that appears anywhere in n, d equals di for some i and d occurs exactly ci times in the decimal representation of n. For instance, to compute the inventory of 5553141 we set c1 = 2, d1 = 1, c2 = 1, d2 = 3, etc., giving 21131435. The number 1000000000000 has inventory 12011 ("twelve 0s, one 1").</p>
<p>An integer n is called self-inventorying if n equals its inventory. It is called self-inventorying after j steps (j&gt;=1) if j is the smallest number such that the value of the j-th iterative application of the inventory function is self-inventorying. For instance, 21221314 is self-inventorying after 2 steps, since the inventory of 21221314 is 31321314, the inventory of 31321314 is 31123314, and 31123314 is self-inventorying.</p>
<p>Finally, n enters an inventory loop of length k (k&gt;=2) if k is the smallest number such that for some integer j (j&gt;=0), the value of the j-th iterative application of the inventory function is the same as the value of the (j + k)-th iterative application. For instance, 314213241519 enters an inventory loop of length 2, since the inventory of 314213241519 is 412223241519 and the inventory of 412223241519 is 314213241519, the original number (we have j = 0 in this case).</p>
<p>Write a program that will read a sequence of non-negative integers and, for each input value, state whether it is self-inventorying, self-inventorying after j steps, enters an inventory loop of length k, or has none of these properties after 15 iterative applications of the inventory function.</p>
<p>Input</p>
<p>A sequence of non-negative integers, each having at most 80 digits, followed by the terminating value -1. There are no extra leading zeros.</p>
<p>Output</p>
<p>For each non-negative input value n, output the appropriate choice from among the following messages (where n is the input value, j is a positive integer, and k is a positive integer greater than 1):<br />
n is self-inventorying<br />
n is self-inventorying after j steps<br />
n enters an inventory loop of length k<br />
n can not be classified after 15 iterations</p>
<p>Sample Input</p>
<p>22<br />
31123314<br />
314213241519<br />
21221314<br />
111222234459<br />
-1</p>
<p>Sample Output</p>
<p>22 is self-inventorying<br />
31123314 is self-inventorying<br />
314213241519 enters an inventory loop of length 2<br />
21221314 is self-inventorying after 2 steps<br />
111222234459 enters an inventory loop of length 2</p>
<p><span style="color: #ff0000;">这道题的大概意思是这样的：<br />
给你一串数字，统计0-9每个数字出现的个数，21221314 -&gt;31321314；<br />
如果经过一次转化后数字与原来数字一样就是self-inventorying<br />
如果经过k（k&gt;1）次转化后数字与原来数字一样就是enters an inventory loop of length k<br />
如果k次转化后的数字与前一个数字相同就是is self-inventorying after k steps<br />
重复15次后依旧不是self-inventorying ，则这串数字can not be classified after 15 iterations</p>
<p>给出的数字的长度是at most 80 ，之前定义个数组长度是80，一直过不了~~</span></p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
</pre></td><td class="code"><pre class="cpp" style="font-family:Verdana,Courier New;"><span style="color: #339900;">#include&lt;stdio.h&gt;</span>
<span style="color: #339900;">#include&lt;math.h&gt;</span>
<span style="color: #339900;">#include&lt;string.h&gt;</span>
<span style="color: #339900;">#define MAX 81</span>
&nbsp;
<span style="color: #0000ff;">char</span> str<span style="color: #008000;">&#91;</span>MAX<span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span>
&nbsp;
<span style="color: #0000ff;">void</span> work<span style="color: #008000;">&#40;</span><span style="color: #0000ff;">char</span> s1<span style="color: #008000;">&#91;</span><span style="color: #008000;">&#93;</span>,<span style="color: #0000ff;">char</span> s2<span style="color: #008000;">&#91;</span><span style="color: #008000;">&#93;</span><span style="color: #008000;">&#41;</span>
<span style="color: #008000;">&#123;</span>
    <span style="color: #0000ff;">int</span> i,num,j<span style="color: #008080;">;</span>
    <span style="color: #0000ff;">for</span><span style="color: #008000;">&#40;</span>i<span style="color: #000080;">=</span><span style="color: #FF0000;">'0'</span><span style="color: #008080;">;</span>i<span style="color: #000080;">&lt;=</span><span style="color: #FF0000;">'9'</span><span style="color: #008080;">;</span><span style="color: #000040;">++</span>i<span style="color: #008000;">&#41;</span>
    <span style="color: #008000;">&#123;</span>
        s2<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span><span style="color: #000080;">=</span><span style="color: #0000dd;">0</span><span style="color: #008080;">;</span>
    <span style="color: #008000;">&#125;</span>
    <span style="color: #0000ff;">for</span><span style="color: #008000;">&#40;</span>i<span style="color: #000080;">=</span><span style="color: #0000dd;">0</span><span style="color: #008080;">;</span>i<span style="color: #000080;">&lt;</span><span style="color: #0000dd;">strlen</span><span style="color: #008000;">&#40;</span>s1<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span><span style="color: #000040;">++</span>i<span style="color: #008000;">&#41;</span>
    <span style="color: #008000;">&#123;</span>
        <span style="color: #000040;">++</span>s2<span style="color: #008000;">&#91;</span>s1<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span><span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span>
    <span style="color: #008000;">&#125;</span>
    j<span style="color: #000080;">=</span><span style="color: #000040;">-</span><span style="color: #0000dd;">1</span><span style="color: #008080;">;</span>
    <span style="color: #0000ff;">for</span><span style="color: #008000;">&#40;</span>i<span style="color: #000080;">=</span><span style="color: #FF0000;">'0'</span><span style="color: #008080;">;</span>i<span style="color: #000080;">&lt;=</span><span style="color: #FF0000;">'9'</span><span style="color: #008080;">;</span><span style="color: #000040;">++</span>i<span style="color: #008000;">&#41;</span>
    <span style="color: #008000;">&#123;</span>
        <span style="color: #0000ff;">if</span><span style="color: #008000;">&#40;</span>s2<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span><span style="color: #000080;">&gt;</span><span style="color: #0000dd;">0</span><span style="color: #000040;">&amp;&amp;</span>s2<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span><span style="color: #000080;">&lt;</span><span style="color: #0000dd;">10</span><span style="color: #008000;">&#41;</span>
        <span style="color: #008000;">&#123;</span>
            str<span style="color: #008000;">&#91;</span><span style="color: #000040;">++</span>j<span style="color: #008000;">&#93;</span><span style="color: #000080;">=</span>s2<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span><span style="color: #000040;">+</span><span style="color: #FF0000;">'0'</span><span style="color: #008080;">;</span>
            str<span style="color: #008000;">&#91;</span><span style="color: #000040;">++</span>j<span style="color: #008000;">&#93;</span><span style="color: #000080;">=</span>i<span style="color: #008080;">;</span>
        <span style="color: #008000;">&#125;</span>
        <span style="color: #0000ff;">else</span> <span style="color: #0000ff;">if</span><span style="color: #008000;">&#40;</span>s2<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span><span style="color: #000080;">&gt;=</span><span style="color: #0000dd;">10</span><span style="color: #008000;">&#41;</span>
        <span style="color: #008000;">&#123;</span>
            str<span style="color: #008000;">&#91;</span><span style="color: #000040;">++</span>j<span style="color: #008000;">&#93;</span><span style="color: #000080;">=</span>s2<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span><span style="color: #000040;">/</span><span style="color: #0000dd;">10</span><span style="color: #000040;">+</span><span style="color: #FF0000;">'0'</span><span style="color: #008080;">;</span>
            str<span style="color: #008000;">&#91;</span><span style="color: #000040;">++</span>j<span style="color: #008000;">&#93;</span><span style="color: #000080;">=</span>s2<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span><span style="color: #000040;">%</span><span style="color:#800080;">10</span><span style="color: #000040;">+</span><span style="color: #FF0000;">'0'</span><span style="color: #008080;">;</span>
            str<span style="color: #008000;">&#91;</span><span style="color: #000040;">++</span>j<span style="color: #008000;">&#93;</span><span style="color: #000080;">=</span>i<span style="color: #008080;">;</span>
        <span style="color: #008000;">&#125;</span>
&nbsp;
&nbsp;
    <span style="color: #008000;">&#125;</span>
    str<span style="color: #008000;">&#91;</span><span style="color: #000040;">++</span>j<span style="color: #008000;">&#93;</span><span style="color: #000080;">=</span><span style="color: #FF0000;">'<span style="color: #006699; font-weight: bold;">\0</span>'</span><span style="color: #008080;">;</span>
<span style="color: #008000;">&#125;</span>
&nbsp;
<span style="color: #0000ff;">int</span> main<span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span>
<span style="color: #008000;">&#123;</span>
    <span style="color: #0000ff;">char</span> s<span style="color: #008000;">&#91;</span><span style="color: #0000dd;">16</span><span style="color: #008000;">&#93;</span><span style="color: #008000;">&#91;</span>MAX<span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span>
    <span style="color: #0000ff;">int</span> i,j,sign<span style="color: #008080;">;</span>
    <span style="color: #0000ff;">while</span><span style="color: #008000;">&#40;</span><span style="color: #0000dd;">1</span><span style="color: #008000;">&#41;</span>
    <span style="color: #008000;">&#123;</span>
        <span style="color: #0000dd;">scanf</span><span style="color: #008000;">&#40;</span><span style="color: #FF0000;">&quot;%s&quot;</span>,<span style="color: #000040;">&amp;</span>s<span style="color: #008000;">&#91;</span><span style="color: #0000dd;">0</span><span style="color: #008000;">&#93;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
        <span style="color: #0000ff;">if</span><span style="color: #008000;">&#40;</span><span style="color: #0000dd;">strcmp</span><span style="color: #008000;">&#40;</span>s<span style="color: #008000;">&#91;</span><span style="color: #0000dd;">0</span><span style="color: #008000;">&#93;</span>,<span style="color: #FF0000;">&quot;-1&quot;</span><span style="color: #008000;">&#41;</span><span style="color: #000080;">==</span><span style="color: #0000dd;">0</span><span style="color: #008000;">&#41;</span>
        <span style="color: #008000;">&#123;</span>
            <span style="color: #0000ff;">break</span><span style="color: #008080;">;</span>
        <span style="color: #008000;">&#125;</span>
        sign<span style="color: #000080;">=</span><span style="color: #0000dd;">0</span><span style="color: #008080;">;</span>
        <span style="color: #0000ff;">for</span><span style="color: #008000;">&#40;</span>i<span style="color: #000080;">=</span><span style="color: #0000dd;">1</span><span style="color: #008080;">;</span>i<span style="color: #000080;">&lt;</span><span style="color: #0000dd;">16</span><span style="color: #008080;">;</span><span style="color: #000040;">++</span>i<span style="color: #008000;">&#41;</span>
        <span style="color: #008000;">&#123;</span>
            work<span style="color: #008000;">&#40;</span>s<span style="color: #008000;">&#91;</span>i<span style="color: #000040;">-</span><span style="color: #0000dd;">1</span><span style="color: #008000;">&#93;</span>,s<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
            <span style="color: #0000dd;">strcpy</span><span style="color: #008000;">&#40;</span>s<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span>,str<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
            <span style="color: #0000ff;">for</span><span style="color: #008000;">&#40;</span>j<span style="color: #000080;">=</span><span style="color: #0000dd;">0</span><span style="color: #008080;">;</span>j<span style="color: #000080;">&lt;</span>i<span style="color: #008080;">;</span><span style="color: #000040;">++</span>j<span style="color: #008000;">&#41;</span>
            <span style="color: #008000;">&#123;</span>
                <span style="color: #0000ff;">if</span><span style="color: #008000;">&#40;</span><span style="color: #0000dd;">strcmp</span><span style="color: #008000;">&#40;</span>s<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span>,s<span style="color: #008000;">&#91;</span>j<span style="color: #008000;">&#93;</span><span style="color: #008000;">&#41;</span><span style="color: #000080;">==</span><span style="color: #0000dd;">0</span><span style="color: #008000;">&#41;</span>
                <span style="color: #008000;">&#123;</span>
                    sign<span style="color: #000080;">=</span><span style="color: #0000dd;">1</span><span style="color: #008080;">;</span>
                    <span style="color: #0000ff;">break</span><span style="color: #008080;">;</span>
                <span style="color: #008000;">&#125;</span>
            <span style="color: #008000;">&#125;</span>
            <span style="color: #0000ff;">if</span><span style="color: #008000;">&#40;</span>sign<span style="color: #008000;">&#41;</span>
            <span style="color: #008000;">&#123;</span>
&nbsp;
                <span style="color: #0000ff;">if</span><span style="color: #008000;">&#40;</span>j<span style="color: #000080;">==</span><span style="color: #0000dd;">0</span><span style="color: #000040;">&amp;&amp;</span>i<span style="color: #000080;">==</span><span style="color: #0000dd;">1</span><span style="color: #008000;">&#41;</span>
                <span style="color: #008000;">&#123;</span>
                    <span style="color: #0000dd;">printf</span><span style="color: #008000;">&#40;</span><span style="color: #FF0000;">&quot;%s is self-inventorying<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span>,s<span style="color: #008000;">&#91;</span><span style="color: #0000dd;">0</span><span style="color: #008000;">&#93;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
                <span style="color: #008000;">&#125;</span>
                <span style="color: #0000ff;">else</span> <span style="color: #0000ff;">if</span><span style="color: #008000;">&#40;</span>j<span style="color: #000080;">==</span>i<span style="color: #000040;">-</span><span style="color: #0000dd;">1</span><span style="color: #008000;">&#41;</span>
                <span style="color: #008000;">&#123;</span>
                    <span style="color: #0000dd;">printf</span><span style="color: #008000;">&#40;</span><span style="color: #FF0000;">&quot;%s is self-inventorying after %d steps<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span>,s<span style="color: #008000;">&#91;</span><span style="color: #0000dd;">0</span><span style="color: #008000;">&#93;</span>,i<span style="color: #000040;">-</span><span style="color: #0000dd;">1</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
                <span style="color: #008000;">&#125;</span>
                <span style="color: #0000ff;">else</span>
                <span style="color: #008000;">&#123;</span>
                    <span style="color: #0000dd;">printf</span><span style="color: #008000;">&#40;</span><span style="color: #FF0000;">&quot;%s enters an inventory loop of length %d<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span>,s<span style="color: #008000;">&#91;</span><span style="color: #0000dd;">0</span><span style="color: #008000;">&#93;</span>,i<span style="color: #000040;">-</span>j<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
                <span style="color: #008000;">&#125;</span>
                <span style="color: #0000ff;">break</span><span style="color: #008080;">;</span>
            <span style="color: #008000;">&#125;</span>
        <span style="color: #008000;">&#125;</span>
        <span style="color: #0000ff;">if</span><span style="color: #008000;">&#40;</span>sign<span style="color: #000080;">==</span><span style="color: #0000dd;">0</span><span style="color: #008000;">&#41;</span>
        <span style="color: #008000;">&#123;</span>
            <span style="color: #0000dd;">printf</span><span style="color: #008000;">&#40;</span><span style="color: #FF0000;">&quot;%s can not be classified after 15 iterations<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span>,s<span style="color: #008000;">&#91;</span><span style="color: #0000dd;">0</span><span style="color: #008000;">&#93;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
        <span style="color: #008000;">&#125;</span>
    <span style="color: #008000;">&#125;</span>
    <span style="color: #666666;">//system(&quot;pause&quot;);</span>
    <span style="color: #0000ff;">return</span> <span style="color: #0000dd;">0</span><span style="color: #008080;">;</span>
<span style="color: #008000;">&#125;</span></pre></td></tr></table></div>

]]></content:encoded>
			<wfw:commentRss>http://www.joansky.com/1016-numbers-that-count-c.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>POJ 1012 Joseph C版本</title>
		<link>http://www.joansky.com/poj-1012-joseph-c.html</link>
		<comments>http://www.joansky.com/poj-1012-joseph-c.html#comments</comments>
		<pubDate>Sun, 15 Nov 2009 09:32:27 +0000</pubDate>
		<dc:creator>Joan</dc:creator>
				<category><![CDATA[解题报告]]></category>
		<category><![CDATA[C]]></category>
		<category><![CDATA[poj]]></category>

		<guid isPermaLink="false">http://www.joansky.com/?p=47</guid>
		<description><![CDATA[数学算法+找规律 Description The Joseph's problem is notoriously known. For those who are not familiar with the original problem: from among n people, numbered 1, 2, . . ., n, standing in circle every mth is going to be executed and only the life of the last remaining person will be saved. Joseph was smart enough [...]]]></description>
			<content:encoded><![CDATA[<p>数学算法+找规律</p>
<p><span id="more-47"></span></p>
<p>Description<br />
The Joseph's problem is notoriously known. For those who are not familiar with the original problem: from among n people, numbered 1, 2, . . ., n, standing in circle every mth is going to be executed and only the life of the last remaining person will be saved. Joseph was smart enough to choose the position of the last remaining person, thus saving his life to give us the message about the incident. For example when n = 6 and m = 5 then the people will be executed in the order 5, 4, 6, 2, 3 and 1 will be saved.</p>
<p>Suppose that there are k good guys and k bad guys. In the circle the first k are good guys and the last k bad guys. You have to determine such minimal m that all the bad guys will be executed before the first good guy.</p>
<p>Input<br />
The input file consists of separate lines containing k. The last line in the input file contains 0. You can suppose that 0 < k < 14. </p>
<p>Output<br />
The output file will consist of separate lines containing m corresponding to k in the input file.</p>
<p>Sample Input</p>
<p>3<br />
4<br />
0</p>
<p>Sample Output</p>
<p>5<br />
30</p>
<p><span style="color: #ff0000;">下面用到 a(i)=(a(i-1)+m-1)%len 这个公式，a(i)是踢掉第a(i-1)位后剩下的人中应踢的位置，m为踢掉的间隔数，len为踢掉a(i-1)个人后剩下的人数-1，这里人数从0开始到2*n-1</p>
<p>因为好人n在前面，所以踢掉的位置应该从n后的位置开始，且踢掉的位置a(i)必须大于n</p>
<p>数据最大是14，定义一个数组，把m存在数组里，这样才不会超时</span></p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
</pre></td><td class="code"><pre class="cpp" style="font-family:Verdana,Courier New;"><span style="color: #339900;">#include&lt;stdio.h&gt;</span>
&nbsp;
<span style="color: #0000ff;">int</span> main<span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span>
<span style="color: #008000;">&#123;</span>
    <span style="color: #0000ff;">int</span> i,r,k,m,sign,n<span style="color: #008080;">;</span>
    <span style="color: #0000ff;">int</span> queue<span style="color: #008000;">&#91;</span><span style="color: #0000dd;">14</span><span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span>
    <span style="color: #0000ff;">for</span><span style="color: #008000;">&#40;</span>i<span style="color: #000080;">=</span><span style="color: #0000dd;">1</span><span style="color: #008080;">;</span>i<span style="color: #000080;">&lt;</span><span style="color: #0000dd;">14</span><span style="color: #008080;">;</span><span style="color: #000040;">++</span>i<span style="color: #008000;">&#41;</span>
    <span style="color: #008000;">&#123;</span>
        sign<span style="color: #000080;">=</span><span style="color: #0000dd;">0</span><span style="color: #008080;">;</span>
        <span style="color: #0000ff;">for</span><span style="color: #008000;">&#40;</span>r<span style="color: #000080;">=</span><span style="color: #0000dd;">0</span><span style="color: #008080;">;;</span><span style="color: #000040;">++</span>r<span style="color: #008000;">&#41;</span>
        <span style="color: #008000;">&#123;</span>
            <span style="color: #0000ff;">if</span><span style="color: #008000;">&#40;</span>sign<span style="color: #008000;">&#41;</span>
            <span style="color: #008000;">&#123;</span>
                <span style="color: #0000ff;">break</span><span style="color: #008080;">;</span>
            <span style="color: #008000;">&#125;</span>
            <span style="color: #0000ff;">for</span><span style="color: #008000;">&#40;</span>k<span style="color: #000080;">=</span>i<span style="color: #000040;">+</span><span style="color: #0000dd;">1</span><span style="color: #008080;">;</span>k<span style="color: #000080;">&lt;=</span><span style="color: #0000dd;">2</span><span style="color: #000040;">*</span>i<span style="color: #008080;">;</span>k<span style="color: #000040;">++</span><span style="color: #008000;">&#41;</span>
            <span style="color: #008000;">&#123;</span>
                m<span style="color: #000080;">=</span><span style="color: #0000dd;">2</span><span style="color: #000040;">*</span>i<span style="color: #000040;">*</span>r<span style="color: #000040;">+</span>k<span style="color: #008080;">;</span>
                <span style="color: #0000ff;">if</span><span style="color: #008000;">&#40;</span>work<span style="color: #008000;">&#40;</span>i,m<span style="color: #008000;">&#41;</span><span style="color: #008000;">&#41;</span>
                <span style="color: #008000;">&#123;</span>
                    sign<span style="color: #000080;">=</span><span style="color: #0000dd;">1</span><span style="color: #008080;">;</span>
                    queue<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span><span style="color: #000080;">=</span>m<span style="color: #008080;">;</span>
                    <span style="color: #0000ff;">break</span><span style="color: #008080;">;</span>
                <span style="color: #008000;">&#125;</span>
            <span style="color: #008000;">&#125;</span>
        <span style="color: #008000;">&#125;</span>
    <span style="color: #008000;">&#125;</span>
    <span style="color: #0000ff;">while</span><span style="color: #008000;">&#40;</span><span style="color: #0000dd;">scanf</span><span style="color: #008000;">&#40;</span><span style="color: #FF0000;">&quot;%d&quot;</span>,<span style="color: #000040;">&amp;</span>n<span style="color: #008000;">&#41;</span>,n<span style="color: #008000;">&#41;</span>
    <span style="color: #008000;">&#123;</span>
        <span style="color: #0000dd;">printf</span><span style="color: #008000;">&#40;</span><span style="color: #FF0000;">&quot;%d<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span>,queue<span style="color: #008000;">&#91;</span>n<span style="color: #008000;">&#93;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
    <span style="color: #008000;">&#125;</span>
    <span style="color: #0000dd;">system</span><span style="color: #008000;">&#40;</span><span style="color: #FF0000;">&quot;pause&quot;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
    <span style="color: #0000ff;">return</span> <span style="color: #0000dd;">0</span><span style="color: #008080;">;</span>
<span style="color: #008000;">&#125;</span>
&nbsp;
<span style="color: #0000ff;">int</span> work<span style="color: #008000;">&#40;</span><span style="color: #0000ff;">int</span> k, <span style="color: #0000ff;">int</span> m<span style="color: #008000;">&#41;</span>
<span style="color: #008000;">&#123;</span>
    <span style="color: #0000ff;">int</span> i <span style="color: #000080;">=</span> <span style="color: #0000dd;">0</span>, len <span style="color: #000080;">=</span> <span style="color: #0000dd;">2</span> <span style="color: #000040;">*</span> k<span style="color: #008080;">;</span>
&nbsp;
    <span style="color: #0000ff;">while</span> <span style="color: #008000;">&#40;</span>len <span style="color: #000080;">&gt;</span> k<span style="color: #008000;">&#41;</span>
    <span style="color: #008000;">&#123;</span>
        i <span style="color: #000080;">=</span> <span style="color: #008000;">&#40;</span>i <span style="color: #000040;">+</span> m <span style="color: #000040;">-</span> <span style="color: #0000dd;">1</span><span style="color: #008000;">&#41;</span> <span style="color: #000040;">%</span> len<span style="color: #008080;">;</span>
        <span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span>i <span style="color: #000080;">&lt;</span> k<span style="color: #008000;">&#41;</span> <span style="color: #0000ff;">return</span> <span style="color: #0000dd;">0</span><span style="color: #008080;">;</span>
        len<span style="color: #000040;">--</span><span style="color: #008080;">;</span>
    <span style="color: #008000;">&#125;</span>
&nbsp;
    <span style="color: #0000ff;">return</span> <span style="color: #0000dd;">1</span><span style="color: #008080;">;</span>
<span style="color: #008000;">&#125;</span></pre></td></tr></table></div>

]]></content:encoded>
			<wfw:commentRss>http://www.joansky.com/poj-1012-joseph-c.html/feed</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>各类型的最小与最大值 C语言</title>
		<link>http://www.joansky.com/min-max-c.html</link>
		<comments>http://www.joansky.com/min-max-c.html#comments</comments>
		<pubDate>Sat, 14 Nov 2009 08:26:15 +0000</pubDate>
		<dc:creator>Joan</dc:creator>
				<category><![CDATA[编程相关]]></category>
		<category><![CDATA[C]]></category>
		<category><![CDATA[类型]]></category>

		<guid isPermaLink="false">http://www.joansky.com/?p=46</guid>
		<description><![CDATA[在poj上做题时需要考虑定义变量的类型，当范围小于测试范围时，很随意的就Runtime Error or Wrong Answer 所以特地写个小程序输出C语言中各类型的最小最大值，C中类型的最小最大值定义在limits.h,float.h中，运行下面的程序就能看到结果 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 #include&#60;stdio.h&#62; #include&#60;limits.h&#62; #include&#60;float.h&#62; &#160; int main&#40;&#41; &#123; &#160; printf&#40;&#34;有符号小整型的最小值和最大值\n %d %d\n&#34;,CHAR_MIN,CHAR_MAX&#41;; &#160; printf&#40;&#34;符号小整型的最大值\n %u\n&#34;,UCHAR_MAX&#41;; &#160; printf&#40;&#34;符号短整型的最小值和最大值\n %d %d\n&#34;,SHRT_MIN,SHRT_MAX&#41;; &#160; printf&#40;&#34;无符号短整型的最大值\n [...]]]></description>
			<content:encoded><![CDATA[<p>在poj上做题时需要考虑定义变量的类型，当范围小于测试范围时，很随意的就Runtime Error or Wrong Answer</p>
<p>所以特地写个小程序输出C语言中各类型的最小最大值，C中类型的最小最大值定义在limits.h,float.h中，运行下面的程序就能看到结果</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
</pre></td><td class="code"><pre class="cpp" style="font-family:Verdana,Courier New;"><span style="color: #339900;">#include&lt;stdio.h&gt;</span>
<span style="color: #339900;">#include&lt;limits.h&gt;</span>
<span style="color: #339900;">#include&lt;float.h&gt;</span>
&nbsp;
<span style="color: #0000ff;">int</span> main<span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span>
<span style="color: #008000;">&#123;</span>
&nbsp;
 	<span style="color: #0000dd;">printf</span><span style="color: #008000;">&#40;</span><span style="color: #FF0000;">&quot;有符号小整型的最小值和最大值<span style="color: #000099; font-weight: bold;">\n</span> %d %d<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span>,<span style="color: #0000ff;">CHAR_MIN</span>,<span style="color: #0000ff;">CHAR_MAX</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
&nbsp;
 	<span style="color: #0000dd;">printf</span><span style="color: #008000;">&#40;</span><span style="color: #FF0000;">&quot;符号小整型的最大值<span style="color: #000099; font-weight: bold;">\n</span> %u<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span>,<span style="color: #0000ff;">UCHAR_MAX</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
&nbsp;
 	<span style="color: #0000dd;">printf</span><span style="color: #008000;">&#40;</span><span style="color: #FF0000;">&quot;符号短整型的最小值和最大值<span style="color: #000099; font-weight: bold;">\n</span> %d %d<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span>,<span style="color: #0000ff;">SHRT_MIN</span>,<span style="color: #0000ff;">SHRT_MAX</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
&nbsp;
 	<span style="color: #0000dd;">printf</span><span style="color: #008000;">&#40;</span><span style="color: #FF0000;">&quot;无符号短整型的最大值<span style="color: #000099; font-weight: bold;">\n</span> %u<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span>,<span style="color: #0000ff;">USHRT_MAX</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
&nbsp;
 	<span style="color: #0000dd;">printf</span><span style="color: #008000;">&#40;</span><span style="color: #FF0000;">&quot;有符号基本整型的最小值和最大值<span style="color: #000099; font-weight: bold;">\n</span> %d %d<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span>,<span style="color: #0000ff;">INT_MIN</span>,<span style="color: #0000ff;">INT_MAX</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
&nbsp;
 	<span style="color: #0000dd;">printf</span><span style="color: #008000;">&#40;</span><span style="color: #FF0000;">&quot;符号基本整型的最大值<span style="color: #000099; font-weight: bold;">\n</span> %u<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span>,<span style="color: #0000ff;">UINT_MAX</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
&nbsp;
 	<span style="color: #0000dd;">printf</span><span style="color: #008000;">&#40;</span><span style="color: #FF0000;">&quot;符号长整型的最小值和最大值<span style="color: #000099; font-weight: bold;">\n</span> %d %d<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span>,<span style="color: #0000ff;">LONG_MIN</span>,<span style="color: #0000ff;">LONG_MAX</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
&nbsp;
	<span style="color: #0000dd;">printf</span><span style="color: #008000;">&#40;</span><span style="color: #FF0000;">&quot;符号长整型的最大值<span style="color: #000099; font-weight: bold;">\n</span> %u<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span>,<span style="color: #0000ff;">ULONG_MAX</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
&nbsp;
	<span style="color: #0000dd;">printf</span><span style="color: #008000;">&#40;</span><span style="color: #FF0000;">&quot;单精度实数的最小绝对值和最大绝对值<span style="color: #000099; font-weight: bold;">\n</span> %lf %lf<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span>,<span style="color: #0000ff;">FLT_MIN</span>,<span style="color: #0000ff;">FLT_MAX</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
&nbsp;
	<span style="color: #0000dd;">printf</span><span style="color: #008000;">&#40;</span><span style="color: #FF0000;">&quot;双精度实数的最小绝对值和最大绝对值<span style="color: #000099; font-weight: bold;">\n</span> %lf %lf<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span>,<span style="color: #0000ff;">DBL_MIN</span>,<span style="color: #0000ff;">DBL_MAX</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
	<span style="color: #666666;">//system(&quot;pause&quot;);</span>
	<span style="color: #0000ff;">return</span> <span style="color: #0000dd;">0</span><span style="color: #008080;">;</span>
<span style="color: #008000;">&#125;</span></pre></td></tr></table></div>

]]></content:encoded>
			<wfw:commentRss>http://www.joansky.com/min-max-c.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>大二第二月生活记录</title>
		<link>http://www.joansky.com/college-life6.html</link>
		<comments>http://www.joansky.com/college-life6.html#comments</comments>
		<pubDate>Sun, 01 Nov 2009 13:36:42 +0000</pubDate>
		<dc:creator>Joan</dc:creator>
				<category><![CDATA[生活琐事]]></category>
		<category><![CDATA[生活]]></category>

		<guid isPermaLink="false">http://www.joansky.com/?p=45</guid>
		<description><![CDATA[一个月出去两次，剩下的时间不是上课就是宅宿舍了。 和朋友吃了必胜客，剩下的时间就在海滨公园度过了，在里面看见卖风筝，小时候没有成功放飞风筝的我，突然很想再试下，遂买个燕子形风筝。可惜天不时地不利人不和，风筝没放飞，囧 再一次出去就是去湾仔吃海鲜。来珠海前听说珠海海鲜很便宜，一直没逮着机会去偿下直到上上星期。湾仔海鲜街至少50米长，种类超级多，很多不知道名字的，这里的海鲜是以前见到过的加长版，个头很大。海鲜街的对面是一排饭店，专门给海鲜加工。 这个月学院也开始评奖学金，综合测评比较低，也只是拿个二等奖了。大三争取拿个特等吧。 BNUEP发生了一起女生坠落事件，原因还在调查中，当天晚上学校断网，据说是网络故障.....第二天这事件成为各大新闻网站头版头条，供稿人获得100RMB，信息时代这也难怪了 生活很平淡，没找到什么可写的，一个月也就更新两次，这篇也就凑个文章数吧！]]></description>
			<content:encoded><![CDATA[<p>一个月出去两次，剩下的时间不是上课就是宅宿舍了。</p>
<p>和朋友吃了必胜客，剩下的时间就在海滨公园度过了，在里面看见卖风筝，小时候没有成功放飞风筝的我，突然很想再试下，遂买个燕子形风筝。可惜天不时地不利人不和，风筝没放飞，囧</p>
<p>再一次出去就是去湾仔吃海鲜。来珠海前听说珠海海鲜很便宜，一直没逮着机会去偿下直到上上星期。湾仔海鲜街至少50米长，种类超级多，很多不知道名字的，这里的海鲜是以前见到过的加长版，个头很大。海鲜街的对面是一排饭店，专门给海鲜加工。</p>
<p>这个月学院也开始评奖学金，综合测评比较低，也只是拿个二等奖了。大三争取拿个特等吧。</p>
<p>BNUEP发生了一起女生坠落事件，原因还在调查中，当天晚上学校断网，据说是网络故障.....第二天这事件成为各大新闻网站头版头条，供稿人获得100RMB，信息时代这也难怪了</p>
<p>生活很平淡，没找到什么可写的，一个月也就更新两次，这篇也就凑个文章数吧！</p>
]]></content:encoded>
			<wfw:commentRss>http://www.joansky.com/college-life6.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>POJ 2676 Sudoku C版本</title>
		<link>http://www.joansky.com/pku-2676-c.html</link>
		<comments>http://www.joansky.com/pku-2676-c.html#comments</comments>
		<pubDate>Fri, 30 Oct 2009 03:34:25 +0000</pubDate>
		<dc:creator>Joan</dc:creator>
				<category><![CDATA[解题报告]]></category>
		<category><![CDATA[poj]]></category>
		<category><![CDATA[递归]]></category>

		<guid isPermaLink="false">http://www.joansky.com/?p=44</guid>
		<description><![CDATA[递归 Description Sudoku is a very simple task. A square table with 9 rows and 9 columns is divided to 9 smaller squares 3x3 as shown on the Figure. In some of the cells are written decimal digits from 1 to 9. The other cells are empty. The goal is to fill the empty cells [...]]]></description>
			<content:encoded><![CDATA[<p>递归</p>
<p><span id="more-44"></span></p>
<p>Description<br />
Sudoku is a very simple task. A square table with 9 rows and 9 columns is divided to 9 smaller squares 3x3 as shown on the Figure. In some of the cells are written decimal digits from 1 to 9. The other cells are empty. The goal is to fill the empty cells with decimal digits from 1 to 9, one digit per cell, in such way that in each row, in each column and in each marked 3x3 subsquare, all the digits from 1 to 9 to appear. Write a program to solve a given Sudoku-task.</p>
<p>Input<br />
The input data will start with the number of the test cases. For each test case, 9 lines follow, corresponding to the rows of the table. On each line a string of exactly 9 decimal digits is given, corresponding to the cells in this line. If a cell is empty it is represented by 0.</p>
<p>Output<br />
For each test case your program should print the solution in the same format as the input data. The empty cells have to be filled according to the rules. If solutions is not unique, then the program may print any one of them.</p>
<p>Sample Input</p>
<p>1<br />
103000509<br />
002109400<br />
000704000<br />
300502006<br />
060000050<br />
700803004<br />
000401000<br />
009205800<br />
804000107</p>
<p>Sample Output</p>
<p>143628579<br />
572139468<br />
986754231<br />
391542786<br />
468917352<br />
725863914<br />
237481695<br />
619275843<br />
854396127</p>
<p><span style="color: #ff0000;">一道数独题，可以从前往后，或从后往前搜，但在PKU中从前往后的效率比较低，会超时，所以从后往前搜。开始学递归。</span></p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
</pre></td><td class="code"><pre class="cpp" style="font-family:Verdana,Courier New;"><span style="color: #339900;">#include&lt;stdio.h&gt;</span>
<span style="color: #339900;">#include&lt;string.h&gt;</span>
&nbsp;
<span style="color: #339900;">#define MAX 81</span>
&nbsp;
<span style="color: #ff0000;">/*按行对数独进行存储*/</span>
<span style="color: #0000ff;">int</span> shudu<span style="color: #008000;">&#91;</span>MAX<span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span>
&nbsp;
<span style="color: #0000ff;">void</span> Printfshudu<span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
<span style="color: #0000ff;">int</span> succes<span style="color: #008000;">&#40;</span><span style="color: #0000ff;">int</span> x,<span style="color: #0000ff;">int</span> y,<span style="color: #0000ff;">int</span> key<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
<span style="color: #0000ff;">int</span> DFS<span style="color: #008000;">&#40;</span><span style="color: #0000ff;">int</span> count<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
&nbsp;
<span style="color: #0000ff;">int</span> main<span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span>
<span style="color: #008000;">&#123;</span>
    <span style="color: #0000ff;">int</span> i,j<span style="color: #008080;">;</span>
    <span style="color: #0000ff;">char</span> str<span style="color: #008000;">&#91;</span><span style="color: #0000dd;">10</span><span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span>
    <span style="color: #0000ff;">int</span> n<span style="color: #008080;">;</span>
    <span style="color: #0000dd;">scanf</span><span style="color: #008000;">&#40;</span><span style="color: #FF0000;">&quot;%d&quot;</span>,<span style="color: #000040;">&amp;</span>n<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
    <span style="color: #0000dd;">getchar</span><span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
    <span style="color: #0000ff;">while</span><span style="color: #008000;">&#40;</span>n<span style="color: #000040;">--</span><span style="color: #008000;">&#41;</span>
    <span style="color: #008000;">&#123;</span>
        <span style="color: #0000ff;">for</span><span style="color: #008000;">&#40;</span>i<span style="color: #000080;">=</span><span style="color: #0000dd;">0</span><span style="color: #008080;">;</span>i<span style="color: #000080;">&lt;</span><span style="color: #0000dd;">9</span><span style="color: #008080;">;</span><span style="color: #000040;">++</span>i<span style="color: #008000;">&#41;</span>
        <span style="color: #008000;">&#123;</span>
            <span style="color: #0000dd;">gets</span><span style="color: #008000;">&#40;</span>str<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
            <span style="color: #0000ff;">for</span><span style="color: #008000;">&#40;</span>j<span style="color: #000080;">=</span><span style="color: #0000dd;">0</span><span style="color: #008080;">;</span>j<span style="color: #000080;">&lt;</span><span style="color: #0000dd;">9</span><span style="color: #008080;">;</span><span style="color: #000040;">++</span>j<span style="color: #008000;">&#41;</span>
            <span style="color: #008000;">&#123;</span>
                <span style="color: #ff0000;">/*将字符转化为整型*/</span> 
                shudu<span style="color: #008000;">&#91;</span>i<span style="color: #000040;">*</span><span style="color: #0000dd;">9</span><span style="color: #000040;">+</span>j<span style="color: #008000;">&#93;</span><span style="color: #000080;">=</span>str<span style="color: #008000;">&#91;</span>j<span style="color: #008000;">&#93;</span><span style="color: #000040;">-</span><span style="color: #FF0000;">'0'</span><span style="color: #008080;">;</span>
            <span style="color: #008000;">&#125;</span>
        <span style="color: #008000;">&#125;</span>
        DFS<span style="color: #008000;">&#40;</span>MAX<span style="color: #000040;">-</span><span style="color: #0000dd;">1</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
        Printfshudu<span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
    <span style="color: #008000;">&#125;</span>
    <span style="color: #666666;">//system(&quot;pause&quot;);</span>
    <span style="color: #0000ff;">return</span> <span style="color: #0000dd;">0</span><span style="color: #008080;">;</span>
<span style="color: #008000;">&#125;</span>
&nbsp;
<span style="color: #ff0000;">/*打印数独*/</span>
<span style="color: #0000ff;">void</span> Printfshudu<span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span>
<span style="color: #008000;">&#123;</span>
    <span style="color: #0000ff;">int</span> i<span style="color: #008080;">;</span>
    <span style="color: #0000ff;">for</span><span style="color: #008000;">&#40;</span>i<span style="color: #000080;">=</span><span style="color: #0000dd;">0</span><span style="color: #008080;">;</span>i<span style="color: #000080;">&lt;</span>MAX<span style="color: #008080;">;</span><span style="color: #000040;">++</span>i<span style="color: #008000;">&#41;</span>
    <span style="color: #008000;">&#123;</span>
        <span style="color: #0000ff;">if</span><span style="color: #008000;">&#40;</span>i<span style="color: #000040;">%</span><span style="color:#800080;">9</span><span style="color: #000080;">==</span><span style="color: #0000dd;">8</span><span style="color: #008000;">&#41;</span>
            <span style="color: #0000dd;">printf</span><span style="color: #008000;">&#40;</span><span style="color: #FF0000;">&quot;%d<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span>,shudu<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
        <span style="color: #0000ff;">else</span> 
            <span style="color: #0000dd;">printf</span><span style="color: #008000;">&#40;</span><span style="color: #FF0000;">&quot;%d&quot;</span>,shudu<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
    <span style="color: #008000;">&#125;</span>
<span style="color: #008000;">&#125;</span>
&nbsp;
<span style="color: #ff0000;">/*从后往前递归构造数组*/</span>
<span style="color: #0000ff;">int</span> DFS<span style="color: #008000;">&#40;</span><span style="color: #0000ff;">int</span> count<span style="color: #008000;">&#41;</span>
<span style="color: #008000;">&#123;</span>
    <span style="color: #0000ff;">int</span> i<span style="color: #008080;">;</span>
    <span style="color: #ff0000;">/*如果构造成功，返回1*/</span>
    <span style="color: #0000ff;">if</span><span style="color: #008000;">&#40;</span>count<span style="color: #000080;">&lt;</span><span style="color: #0000dd;">0</span><span style="color: #008000;">&#41;</span>
    <span style="color: #008000;">&#123;</span>
        <span style="color: #0000ff;">return</span> <span style="color: #0000dd;">1</span><span style="color: #008080;">;</span>
    <span style="color: #008000;">&#125;</span>
    <span style="color: #ff0000;">/*当前位置不为空时，跳过*/</span>
    <span style="color: #0000ff;">if</span><span style="color: #008000;">&#40;</span>shudu<span style="color: #008000;">&#91;</span>count<span style="color: #008000;">&#93;</span><span style="color: #000040;">!</span><span style="color: #000080;">=</span><span style="color: #0000dd;">0</span><span style="color: #008000;">&#41;</span>
    <span style="color: #008000;">&#123;</span>
        <span style="color: #0000ff;">return</span> DFS<span style="color: #008000;">&#40;</span>count<span style="color: #000040;">-</span><span style="color: #0000dd;">1</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
    <span style="color: #008000;">&#125;</span>
    <span style="color: #0000ff;">else</span>
    <span style="color: #ff0000;">/*否则对当前位置进行枚举测试*/</span>
    <span style="color: #0000ff;">for</span><span style="color: #008000;">&#40;</span>i<span style="color: #000080;">=</span><span style="color: #0000dd;">1</span><span style="color: #008080;">;</span>i<span style="color: #000080;">&lt;</span><span style="color: #0000dd;">10</span><span style="color: #008080;">;</span><span style="color: #000040;">++</span>i<span style="color: #008000;">&#41;</span>
    <span style="color: #008000;">&#123;</span>
        <span style="color: #ff0000;">/*满足条件时填入数字*/</span>
        <span style="color: #0000ff;">if</span><span style="color: #008000;">&#40;</span>succes<span style="color: #008000;">&#40;</span>count<span style="color: #000040;">/</span><span style="color: #0000dd;">9</span>,count<span style="color: #000040;">%</span><span style="color:#800080;">9</span>,i<span style="color: #008000;">&#41;</span><span style="color: #008000;">&#41;</span>
        <span style="color: #008000;">&#123;</span>
            shudu<span style="color: #008000;">&#91;</span>count<span style="color: #008000;">&#93;</span><span style="color: #000080;">=</span>i<span style="color: #008080;">;</span>
            <span style="color: #ff0000;">/*继续搜索，如果构造成功，返回1*/</span>
            <span style="color: #0000ff;">if</span><span style="color: #008000;">&#40;</span>DFS<span style="color: #008000;">&#40;</span>count<span style="color: #000040;">-</span><span style="color: #0000dd;">1</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">&#41;</span>
                <span style="color: #0000ff;">return</span> <span style="color: #0000dd;">1</span><span style="color: #008080;">;</span>
            <span style="color: #ff0000;">/*构造不成功，还原当前位置*/</span>
            shudu<span style="color: #008000;">&#91;</span>count<span style="color: #008000;">&#93;</span><span style="color: #000080;">=</span><span style="color: #0000dd;">0</span><span style="color: #008080;">;</span>
        <span style="color: #008000;">&#125;</span>
    <span style="color: #008000;">&#125;</span>
    <span style="color: #ff0000;">/*构造不成功，返回0*/</span>
    <span style="color: #0000ff;">return</span> <span style="color: #0000dd;">0</span><span style="color: #008080;">;</span>
<span style="color: #008000;">&#125;</span>
&nbsp;
<span style="color: #ff0000;">/*判断key填入x行，y是否满足条件*/</span>
<span style="color: #0000ff;">int</span> succes<span style="color: #008000;">&#40;</span><span style="color: #0000ff;">int</span> x,<span style="color: #0000ff;">int</span> y,<span style="color: #0000ff;">int</span> key<span style="color: #008000;">&#41;</span>
<span style="color: #008000;">&#123;</span>
    <span style="color: #0000ff;">int</span> i,j<span style="color: #008080;">;</span>
    <span style="color: #0000ff;">for</span><span style="color: #008000;">&#40;</span>i<span style="color: #000080;">=</span><span style="color: #0000dd;">0</span><span style="color: #008080;">;</span>i<span style="color: #000080;">&lt;</span><span style="color: #0000dd;">9</span><span style="color: #008080;">;</span><span style="color: #000040;">++</span>i<span style="color: #008000;">&#41;</span>
    <span style="color: #008000;">&#123;</span>
        <span style="color: #ff0000;">/*判断y所在列是否合法*/</span>
        <span style="color: #0000ff;">if</span><span style="color: #008000;">&#40;</span>shudu<span style="color: #008000;">&#91;</span>i<span style="color: #000040;">*</span><span style="color: #0000dd;">9</span><span style="color: #000040;">+</span>y<span style="color: #008000;">&#93;</span><span style="color: #000080;">==</span>key<span style="color: #008000;">&#41;</span>
            <span style="color: #0000ff;">return</span> <span style="color: #0000dd;">0</span><span style="color: #008080;">;</span>
        <span style="color: #ff0000;">/*判断x所在行是否合法*/</span>
        <span style="color: #0000ff;">if</span><span style="color: #008000;">&#40;</span>shudu<span style="color: #008000;">&#91;</span>x<span style="color: #000040;">*</span><span style="color: #0000dd;">9</span><span style="color: #000040;">+</span>i<span style="color: #008000;">&#93;</span><span style="color: #000080;">==</span>key<span style="color: #008000;">&#41;</span>
            <span style="color: #0000ff;">return</span> <span style="color: #0000dd;">0</span><span style="color: #008080;">;</span>
    <span style="color: #008000;">&#125;</span>
    <span style="color: #ff0000;">/*m为（x，y）所在的小九宫格左顶点行坐标*/</span>
    <span style="color: #0000ff;">int</span> m<span style="color: #000080;">=</span>x<span style="color: #000040;">-</span>x<span style="color: #000040;">%</span><span style="color:#800080;">3</span><span style="color: #008080;">;</span>
    <span style="color: #ff0000;">/*n为(x，y)所在的小九宫格左顶点列坐标*/</span>
    <span style="color: #0000ff;">int</span> n<span style="color: #000080;">=</span>y<span style="color: #000040;">-</span>y<span style="color: #000040;">%</span><span style="color:#800080;">3</span><span style="color: #008080;">;</span>
    <span style="color: #ff0000;">/*判断（x，y）所在的小九宫格是否合法*/</span>
    <span style="color: #0000ff;">for</span><span style="color: #008000;">&#40;</span>i<span style="color: #000080;">=</span>m<span style="color: #008080;">;</span>i<span style="color: #000080;">&lt;</span>m<span style="color: #000040;">+</span><span style="color: #0000dd;">3</span><span style="color: #008080;">;</span><span style="color: #000040;">++</span>i<span style="color: #008000;">&#41;</span>
    <span style="color: #008000;">&#123;</span>
        <span style="color: #0000ff;">for</span><span style="color: #008000;">&#40;</span>j<span style="color: #000080;">=</span>n<span style="color: #008080;">;</span>j<span style="color: #000080;">&lt;</span>n<span style="color: #000040;">+</span><span style="color: #0000dd;">3</span><span style="color: #008080;">;</span><span style="color: #000040;">++</span>j<span style="color: #008000;">&#41;</span>
        <span style="color: #008000;">&#123;</span>
            <span style="color: #0000ff;">if</span><span style="color: #008000;">&#40;</span>shudu<span style="color: #008000;">&#91;</span>i<span style="color: #000040;">*</span><span style="color: #0000dd;">9</span><span style="color: #000040;">+</span>j<span style="color: #008000;">&#93;</span><span style="color: #000080;">==</span>key<span style="color: #008000;">&#41;</span>
                <span style="color: #0000ff;">return</span> <span style="color: #0000dd;">0</span><span style="color: #008080;">;</span>
        <span style="color: #008000;">&#125;</span>
    <span style="color: #008000;">&#125;</span>
    <span style="color: #0000ff;">return</span> <span style="color: #0000dd;">1</span><span style="color: #008080;">;</span>
<span style="color: #008000;">&#125;</span></pre></td></tr></table></div>

]]></content:encoded>
			<wfw:commentRss>http://www.joansky.com/pku-2676-c.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>不同方向查找单词 C版本</title>
		<link>http://www.joansky.com/find-words-c.html</link>
		<comments>http://www.joansky.com/find-words-c.html#comments</comments>
		<pubDate>Sat, 17 Oct 2009 05:26:02 +0000</pubDate>
		<dc:creator>Joan</dc:creator>
				<category><![CDATA[编程相关]]></category>
		<category><![CDATA[C语言]]></category>
		<category><![CDATA[查找]]></category>

		<guid isPermaLink="false">http://www.joansky.com/?p=43</guid>
		<description><![CDATA[上外教课时，老师让我们在一张纸条上找单词，这张纸条上面有一个矩阵字母，下面有多个英语单词，让你在矩阵上找出单词所在位置，所找单词方向是任意的（八个方向）。写个程序玩下这个游戏，递归学得不好，就先写个挨个遍历的吧。 下面是测试数据 11 11 r e h t o r b b r y g y r e h t o m e a r z l e l n n o h t a w r i t c b i t z n w e g m s n y a s d [...]]]></description>
			<content:encoded><![CDATA[<p>上外教课时，老师让我们在一张纸条上找单词，这张纸条上面有一个矩阵字母，下面有多个英语单词，让你在矩阵上找出单词所在位置，所找单词方向是任意的（八个方向）。写个程序玩下这个游戏，递归学得不好，就先写个挨个遍历的吧。</p>
<p>下面是测试数据</p>
<p>11 11<br />
r e h t o r b b r y g<br />
y r e h t o m e a r z<br />
l e l n n o h t a w r<br />
i t c b i t z n w e g<br />
m s n y a s d a u n t<br />
a i u f n p u w e f e<br />
f s w n a m t o r o w<br />
u i c r t p r l c x p<br />
t g e n d c e b s x u<br />
u n c l r m z f e m a<br />
t w q r v t o h c y t</p>
<p>9<br />
aunt<br />
brother<br />
cousin<br />
family<br />
father<br />
grandparent<br />
mother<br />
sister<br />
uncle</p>
<p><span id="more-43"></span></p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
</pre></td><td class="code"><pre class="cpp" style="font-family:Verdana,Courier New;"><span style="color: #339900;">#include&lt;stdio.h&gt;</span>
<span style="color: #339900;">#define MAX 100</span>
&nbsp;
<span style="color: #0000ff;">void</span> search<span style="color: #008000;">&#40;</span><span style="color: #0000ff;">int</span> row,<span style="color: #0000ff;">int</span> column,<span style="color: #0000ff;">char</span> word<span style="color: #008000;">&#91;</span><span style="color: #008000;">&#93;</span>,<span style="color: #0000ff;">int</span> num<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
<span style="color: #0000ff;">void</span> DFS<span style="color: #008000;">&#40;</span><span style="color: #0000ff;">int</span> row,<span style="color: #0000ff;">int</span> column,<span style="color: #0000ff;">char</span> word<span style="color: #008000;">&#91;</span><span style="color: #008000;">&#93;</span>,<span style="color: #0000ff;">int</span> num,<span style="color: #0000ff;">int</span> length,<span style="color: #0000ff;">int</span> mark1,<span style="color: #0000ff;">int</span> mark2<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
<span style="color: #0000ff;">void</span> printword<span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
&nbsp;
<span style="color: #ff0000;">/*定义矩阵的长和宽*/</span>
<span style="color: #0000ff;">int</span> n,m<span style="color: #008080;">;</span>
&nbsp;
<span style="color: #ff0000;">/*定义矩阵*/</span> 
<span style="color: #0000ff;">char</span> a<span style="color: #008000;">&#91;</span>MAX<span style="color: #008000;">&#93;</span><span style="color: #008000;">&#91;</span>MAX<span style="color: #008000;">&#93;</span>,b<span style="color: #008000;">&#91;</span>MAX<span style="color: #008000;">&#93;</span><span style="color: #008000;">&#91;</span>MAX<span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span>
&nbsp;
<span style="color: #ff0000;">/*定义查找矩阵的方向*/</span> 
<span style="color: #0000ff;">int</span> temp<span style="color: #008000;">&#91;</span><span style="color: #0000dd;">3</span><span style="color: #008000;">&#93;</span><span style="color: #000080;">=</span><span style="color: #008000;">&#123;</span><span style="color: #0000dd;">1</span>,<span style="color: #0000dd;">0</span>,<span style="color: #000040;">-</span><span style="color: #0000dd;">1</span><span style="color: #008000;">&#125;</span><span style="color: #008080;">;</span>
&nbsp;
<span style="color: #0000ff;">int</span> main<span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span>
<span style="color: #008000;">&#123;</span>
	<span style="color: #0000ff;">char</span> word<span style="color: #008000;">&#91;</span>MAX<span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span>
	<span style="color: #0000ff;">int</span> i,j,totle<span style="color: #008080;">;</span>
	<span style="color: #0000dd;">scanf</span><span style="color: #008000;">&#40;</span><span style="color: #FF0000;">&quot;%d%d&quot;</span>,<span style="color: #000040;">&amp;</span>n,<span style="color: #000040;">&amp;</span>m<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
	<span style="color: #0000dd;">getchar</span><span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
	<span style="color: #0000ff;">for</span><span style="color: #008000;">&#40;</span>i<span style="color: #000080;">=</span><span style="color: #0000dd;">0</span><span style="color: #008080;">;</span>i<span style="color: #000080;">&lt;</span>n<span style="color: #008080;">;</span><span style="color: #000040;">++</span>i<span style="color: #008000;">&#41;</span>
	<span style="color: #008000;">&#123;</span>
		<span style="color: #0000ff;">for</span><span style="color: #008000;">&#40;</span>j<span style="color: #000080;">=</span><span style="color: #0000dd;">0</span><span style="color: #008080;">;</span>j<span style="color: #000080;">&lt;</span>m<span style="color: #008080;">;</span><span style="color: #000040;">++</span>j<span style="color: #008000;">&#41;</span>
		<span style="color: #008000;">&#123;</span>
			<span style="color: #0000dd;">scanf</span><span style="color: #008000;">&#40;</span><span style="color: #FF0000;">&quot;%c&quot;</span>,<span style="color: #000040;">&amp;</span>a<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span><span style="color: #008000;">&#91;</span>j<span style="color: #008000;">&#93;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
			<span style="color: #0000dd;">getchar</span><span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
		<span style="color: #008000;">&#125;</span>
	<span style="color: #008000;">&#125;</span>
	<span style="color: #0000dd;">scanf</span><span style="color: #008000;">&#40;</span><span style="color: #FF0000;">&quot;%d&quot;</span>,<span style="color: #000040;">&amp;</span>totle<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
	<span style="color: #0000dd;">getchar</span><span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
	<span style="color: #0000ff;">while</span><span style="color: #008000;">&#40;</span>totle<span style="color: #000040;">--</span><span style="color: #008000;">&#41;</span>
	<span style="color: #008000;">&#123;</span>
		<span style="color: #0000dd;">scanf</span><span style="color: #008000;">&#40;</span><span style="color: #FF0000;">&quot;%s&quot;</span>,<span style="color: #000040;">&amp;</span>word<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
		<span style="color: #0000dd;">getchar</span><span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
		<span style="color: #0000ff;">for</span><span style="color: #008000;">&#40;</span>i<span style="color: #000080;">=</span><span style="color: #0000dd;">0</span><span style="color: #008080;">;</span>i<span style="color: #000080;">&lt;</span>n<span style="color: #008080;">;</span><span style="color: #000040;">++</span>i<span style="color: #008000;">&#41;</span>
		<span style="color: #008000;">&#123;</span>
			<span style="color: #0000ff;">for</span><span style="color: #008000;">&#40;</span>j<span style="color: #000080;">=</span><span style="color: #0000dd;">0</span><span style="color: #008080;">;</span>j<span style="color: #000080;">&lt;</span>m<span style="color: #008080;">;</span><span style="color: #000040;">++</span>j<span style="color: #008000;">&#41;</span>
			<span style="color: #008000;">&#123;</span>
				<span style="color: #ff0000;">/*查找与单词相同的第一个字母*/</span>
				<span style="color: #0000ff;">if</span><span style="color: #008000;">&#40;</span>a<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span><span style="color: #008000;">&#91;</span>j<span style="color: #008000;">&#93;</span><span style="color: #000080;">==</span>word<span style="color: #008000;">&#91;</span><span style="color: #0000dd;">0</span><span style="color: #008000;">&#93;</span><span style="color: #008000;">&#41;</span>
				<span style="color: #008000;">&#123;</span>
					search<span style="color: #008000;">&#40;</span>i,j,word,<span style="color: #0000dd;">1</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
				<span style="color: #008000;">&#125;</span>
			<span style="color: #008000;">&#125;</span>
		<span style="color: #008000;">&#125;</span>
	<span style="color: #008000;">&#125;</span>
	printword<span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
	<span style="color: #0000dd;">system</span><span style="color: #008000;">&#40;</span><span style="color: #FF0000;">&quot;pause&quot;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
	<span style="color: #0000ff;">return</span> <span style="color: #0000dd;">0</span><span style="color: #008080;">;</span>
&nbsp;
<span style="color: #008000;">&#125;</span>
&nbsp;
<span style="color: #ff0000;">/*按不同方向查找单词*/</span>
<span style="color: #0000ff;">void</span> search<span style="color: #008000;">&#40;</span><span style="color: #0000ff;">int</span> row,<span style="color: #0000ff;">int</span> column,<span style="color: #0000ff;">char</span> word<span style="color: #008000;">&#91;</span><span style="color: #008000;">&#93;</span>,<span style="color: #0000ff;">int</span> num<span style="color: #008000;">&#41;</span>
<span style="color: #008000;">&#123;</span>
	<span style="color: #0000ff;">int</span> i,j<span style="color: #008080;">;</span>
	<span style="color: #ff0000;">/*八个不同的方向对单词第二个字母进行匹配*/</span>
	<span style="color: #0000ff;">for</span><span style="color: #008000;">&#40;</span>i<span style="color: #000080;">=</span><span style="color: #0000dd;">0</span><span style="color: #008080;">;</span>i<span style="color: #000080;">&lt;</span><span style="color: #0000dd;">3</span><span style="color: #008080;">;</span><span style="color: #000040;">++</span>i<span style="color: #008000;">&#41;</span>
	<span style="color: #008000;">&#123;</span>
		<span style="color: #0000ff;">for</span><span style="color: #008000;">&#40;</span>j<span style="color: #000080;">=</span><span style="color: #0000dd;">0</span><span style="color: #008080;">;</span>j<span style="color: #000080;">&lt;</span><span style="color: #0000dd;">3</span><span style="color: #008080;">;</span><span style="color: #000040;">++</span>j<span style="color: #008000;">&#41;</span>
		<span style="color: #008000;">&#123;</span>
			<span style="color: #0000ff;">if</span><span style="color: #008000;">&#40;</span>a<span style="color: #008000;">&#91;</span>row<span style="color: #000040;">+</span>temp<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span><span style="color: #008000;">&#93;</span><span style="color: #008000;">&#91;</span>column<span style="color: #000040;">+</span>temp<span style="color: #008000;">&#91;</span>j<span style="color: #008000;">&#93;</span><span style="color: #008000;">&#93;</span><span style="color: #000080;">==</span>word<span style="color: #008000;">&#91;</span>num<span style="color: #008000;">&#93;</span><span style="color: #008000;">&#41;</span>
			<span style="color: #008000;">&#123;</span>
				DFS<span style="color: #008000;">&#40;</span>row,column,word,num,<span style="color: #0000dd;">strlen</span><span style="color: #008000;">&#40;</span>word<span style="color: #008000;">&#41;</span>,temp<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span>,temp<span style="color: #008000;">&#91;</span>j<span style="color: #008000;">&#93;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
			<span style="color: #008000;">&#125;</span>
		<span style="color: #008000;">&#125;</span>
	<span style="color: #008000;">&#125;</span>
<span style="color: #008000;">&#125;</span>
&nbsp;
<span style="color: #ff0000;">/*按单一方面对单词进行匹配*/</span>
<span style="color: #0000ff;">void</span> DFS<span style="color: #008000;">&#40;</span><span style="color: #0000ff;">int</span> row,<span style="color: #0000ff;">int</span> column,<span style="color: #0000ff;">char</span> word<span style="color: #008000;">&#91;</span><span style="color: #008000;">&#93;</span>,<span style="color: #0000ff;">int</span> num,<span style="color: #0000ff;">int</span> length,<span style="color: #0000ff;">int</span> mark1,<span style="color: #0000ff;">int</span> mark2<span style="color: #008000;">&#41;</span>
<span style="color: #008000;">&#123;</span>
	<span style="color: #0000ff;">int</span> r<span style="color: #000080;">=</span>row,c<span style="color: #000080;">=</span>column<span style="color: #008080;">;</span>
	<span style="color: #0000ff;">int</span> temp<span style="color: #000080;">=</span><span style="color: #0000dd;">1</span>,i<span style="color: #008080;">;</span>
	<span style="color: #0000ff;">for</span><span style="color: #008000;">&#40;</span>i<span style="color: #000080;">=</span>num<span style="color: #008080;">;</span>i<span style="color: #000080;">&lt;</span>length<span style="color: #008080;">;</span><span style="color: #000040;">++</span>i<span style="color: #008000;">&#41;</span>
	<span style="color: #008000;">&#123;</span>
		<span style="color: #ff0000;">/*保证矩阵下标不越界*/</span>
		<span style="color: #0000ff;">if</span><span style="color: #008000;">&#40;</span>r<span style="color: #000080;">&gt;=</span><span style="color: #0000dd;">0</span><span style="color: #000040;">&amp;&amp;</span>r<span style="color: #000080;">&lt;</span>n<span style="color: #000040;">&amp;&amp;</span>c<span style="color: #000080;">&gt;=</span><span style="color: #0000dd;">0</span><span style="color: #000040;">&amp;&amp;</span>c<span style="color: #000080;">&lt;</span>m<span style="color: #008000;">&#41;</span>
		<span style="color: #008000;">&#123;</span>
			<span style="color: #ff0000;">/*确定是往哪个方向进行匹配*/</span>
			mark1<span style="color: #000080;">==</span><span style="color: #0000dd;">1</span><span style="color: #008080;">?</span> <span style="color: #000040;">++</span>r<span style="color: #008080;">:</span> mark1<span style="color: #000080;">==</span><span style="color: #000040;">-</span><span style="color: #0000dd;">1</span><span style="color: #008080;">?</span> <span style="color: #000040;">--</span>r<span style="color: #008080;">:</span>r<span style="color: #008080;">;</span>
			mark2<span style="color: #000080;">==</span><span style="color: #0000dd;">1</span><span style="color: #008080;">?</span> <span style="color: #000040;">++</span>c<span style="color: #008080;">:</span> mark2<span style="color: #000080;">==</span><span style="color: #000040;">-</span><span style="color: #0000dd;">1</span><span style="color: #008080;">?</span> <span style="color: #000040;">--</span>c<span style="color: #008080;">:</span>c<span style="color: #008080;">;</span>
			<span style="color: #ff0000;">/*当有一个字母匹配不成功，退出*/</span>
			<span style="color: #0000ff;">if</span><span style="color: #008000;">&#40;</span>a<span style="color: #008000;">&#91;</span>r<span style="color: #008000;">&#93;</span><span style="color: #008000;">&#91;</span>c<span style="color: #008000;">&#93;</span><span style="color: #000040;">!</span><span style="color: #000080;">=</span>word<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span><span style="color: #008000;">&#41;</span>
			<span style="color: #008000;">&#123;</span>
				temp<span style="color: #000080;">=</span><span style="color: #0000dd;">0</span><span style="color: #008080;">;</span>
				<span style="color: #0000ff;">break</span><span style="color: #008080;">;</span>
			<span style="color: #008000;">&#125;</span>
		<span style="color: #008000;">&#125;</span>
	<span style="color: #008000;">&#125;</span>
	<span style="color: #ff0000;">/*如果找到这个单词，按原位置存到b矩阵*/</span>
	<span style="color: #0000ff;">if</span><span style="color: #008000;">&#40;</span>temp<span style="color: #008000;">&#41;</span>
	<span style="color: #008000;">&#123;</span>
		<span style="color: #0000ff;">for</span><span style="color: #008000;">&#40;</span>i<span style="color: #000080;">=</span><span style="color: #0000dd;">0</span><span style="color: #008080;">;</span>i<span style="color: #000080;">&lt;</span>length<span style="color: #008080;">;</span><span style="color: #000040;">++</span>i<span style="color: #008000;">&#41;</span>
		<span style="color: #008000;">&#123;</span>
			b<span style="color: #008000;">&#91;</span>row<span style="color: #008000;">&#93;</span><span style="color: #008000;">&#91;</span>column<span style="color: #008000;">&#93;</span><span style="color: #000080;">=</span>word<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span>
			mark1<span style="color: #000080;">==</span><span style="color: #0000dd;">1</span><span style="color: #008080;">?</span> <span style="color: #000040;">++</span>row<span style="color: #008080;">:</span> mark1<span style="color: #000080;">==</span><span style="color: #000040;">-</span><span style="color: #0000dd;">1</span><span style="color: #008080;">?</span> <span style="color: #000040;">--</span>row<span style="color: #008080;">:</span>row<span style="color: #008080;">;</span>
			mark2<span style="color: #000080;">==</span><span style="color: #0000dd;">1</span><span style="color: #008080;">?</span> <span style="color: #000040;">++</span>column<span style="color: #008080;">:</span> mark2<span style="color: #000080;">==</span><span style="color: #000040;">-</span><span style="color: #0000dd;">1</span><span style="color: #008080;">?</span> <span style="color: #000040;">--</span>column<span style="color: #008080;">:</span>column<span style="color: #008080;">;</span>
		<span style="color: #008000;">&#125;</span>
	<span style="color: #008000;">&#125;</span>
&nbsp;
<span style="color: #008000;">&#125;</span> 
&nbsp;
<span style="color: #ff0000;">/*打印矩阵*/</span>
<span style="color: #0000ff;">void</span> printword<span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span>
<span style="color: #008000;">&#123;</span>
	<span style="color: #0000ff;">int</span> i,j<span style="color: #008080;">;</span>
	<span style="color: #0000ff;">for</span><span style="color: #008000;">&#40;</span>i<span style="color: #000080;">=</span><span style="color: #0000dd;">0</span><span style="color: #008080;">;</span>i<span style="color: #000080;">&lt;</span>n<span style="color: #008080;">;</span><span style="color: #000040;">++</span>i<span style="color: #008000;">&#41;</span>
	<span style="color: #008000;">&#123;</span>
		<span style="color: #0000ff;">for</span><span style="color: #008000;">&#40;</span>j<span style="color: #000080;">=</span><span style="color: #0000dd;">0</span><span style="color: #008080;">;</span>j<span style="color: #000080;">&lt;</span>m<span style="color: #008080;">;</span><span style="color: #000040;">++</span>j<span style="color: #008000;">&#41;</span>
		<span style="color: #008000;">&#123;</span>
			<span style="color: #0000dd;">printf</span><span style="color: #008000;">&#40;</span><span style="color: #FF0000;">&quot;%c&quot;</span>,b<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span><span style="color: #008000;">&#91;</span>j<span style="color: #008000;">&#93;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
		<span style="color: #008000;">&#125;</span>
		<span style="color: #0000dd;">printf</span><span style="color: #008000;">&#40;</span><span style="color: #FF0000;">&quot;<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
	<span style="color: #008000;">&#125;</span>
<span style="color: #008000;">&#125;</span></pre></td></tr></table></div>

]]></content:encoded>
			<wfw:commentRss>http://www.joansky.com/find-words-c.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>大二第一个月生活记录</title>
		<link>http://www.joansky.com/college-life7.html</link>
		<comments>http://www.joansky.com/college-life7.html#comments</comments>
		<pubDate>Sat, 10 Oct 2009 15:18:52 +0000</pubDate>
		<dc:creator>Joan</dc:creator>
				<category><![CDATA[生活琐事]]></category>
		<category><![CDATA[国庆]]></category>
		<category><![CDATA[生活]]></category>

		<guid isPermaLink="false">http://www.joansky.com/?p=42</guid>
		<description><![CDATA[从家里带来的仙人掌，养了几天，发现根部有点腐烂，估计活不长了，国庆节回来仙人掌完全腐烂，散出异味。算了一下，我养了23天，准确说是摆了23天的仙人掌。那位卖花的姑娘说仙人掌一个月浇一次就行了，所以我到它死去都没浇过水。仙人掌是种最容易养的植物，居然还这么快翘，存心跟我过不去嘛。恩，我还会继续买花养。 今年12月份的CET4没能报上名。要知道报四级跟期末考试有关，期末考就好好准备了。等着明年的6月份再考咯。英语水平比较差，的确需要加把劲，起码让四级的分数能拿得 出手才行。 考NCRE（二级C）的当天早上，起来就发现被病毒入侵，全身温度都比较高，头很晕。不过这还好，没严重到影响考试，不看医生，不吃药，就等着自然好。对二级C的考试没感觉，应该能过，给个高分吧，Bless me！ 从开学到现在也没怎么出去，不上课的时候天气不好要不就是比较懒，出去也不知道干嘛，所以周末基本都宅着，比较无聊。 学生会退了，活动基本啥也不参加，就当个班委。干自己想干的事，看自己想看的书，比起大一的生活，轻松多了，也懒散多了。 某同学考到Bnuep，高中同校同级，同学的同学，免不了要多加照顾下。为人比较豪爽，大方，没有90的特征，很好相处。 十一最终还是回家了，其实很想去旅游。30号坐的夜车，早上6点多到家，路上严重塞车，那个颠簸，累，回家直接倒头就睡。十一，我就这样在颠簸和睡觉中度过了，伟大的阅兵典礼我也直接无视了。十一又刚好遇上了中秋，几位好朋友都回家，大家小聚了几次。把本带回家，在家上网很麻烦，干脆不给本接网，无聊就看朋友给的电影。 回家依旧免不了走访下亲戚，去姥姥家才知道，舅舅家添了一个儿子，已经几个月的事了。回校依旧是夜车，票价130RMB，估计这是最便宜的车票了。]]></description>
			<content:encoded><![CDATA[<p>从家里带来的仙人掌，养了几天，发现根部有点腐烂，估计活不长了，国庆节回来仙人掌完全腐烂，散出异味。算了一下，我养了23天，准确说是摆了23天的仙人掌。那位卖花的姑娘说仙人掌一个月浇一次就行了，所以我到它死去都没浇过水。仙人掌是种最容易养的植物，居然还这么快翘，存心跟我过不去嘛。恩，我还会继续买花养。</p>
<p>今年12月份的CET4没能报上名。要知道报四级跟期末考试有关，期末考就好好准备了。等着明年的6月份再考咯。英语水平比较差，的确需要加把劲，起码让四级的分数能拿得 出手才行。</p>
<p>考NCRE（二级C）的当天早上，起来就发现被病毒入侵，全身温度都比较高，头很晕。不过这还好，没严重到影响考试，不看医生，不吃药，就等着自然好。对二级C的考试没感觉，应该能过，给个高分吧，Bless me！</p>
<p>从开学到现在也没怎么出去，不上课的时候天气不好要不就是比较懒，出去也不知道干嘛，所以周末基本都宅着，比较无聊。<br />
学生会退了，活动基本啥也不参加，就当个班委。干自己想干的事，看自己想看的书，比起大一的生活，轻松多了，也懒散多了。</p>
<p>某同学考到Bnuep，高中同校同级，同学的同学，免不了要多加照顾下。为人比较豪爽，大方，没有90的特征，很好相处。</p>
<p>十一最终还是回家了，其实很想去旅游。30号坐的夜车，早上6点多到家，路上严重塞车，那个颠簸，累，回家直接倒头就睡。十一，我就这样在颠簸和睡觉中度过了，伟大的阅兵典礼我也直接无视了。十一又刚好遇上了中秋，几位好朋友都回家，大家小聚了几次。把本带回家，在家上网很麻烦，干脆不给本接网，无聊就看朋友给的电影。</p>
<p>回家依旧免不了走访下亲戚，去姥姥家才知道，舅舅家添了一个儿子，已经几个月的事了。回校依旧是夜车，票价130RMB，估计这是最便宜的车票了。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.joansky.com/college-life7.html/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>编辑器与编译器</title>
		<link>http://www.joansky.com/editor-compiler.html</link>
		<comments>http://www.joansky.com/editor-compiler.html#comments</comments>
		<pubDate>Fri, 25 Sep 2009 16:07:17 +0000</pubDate>
		<dc:creator>Joan</dc:creator>
				<category><![CDATA[电脑技巧]]></category>
		<category><![CDATA[编译器]]></category>
		<category><![CDATA[编辑器]]></category>

		<guid isPermaLink="false">http://www.joansky.com/?p=41</guid>
		<description><![CDATA[编辑器（Editor）用来修改电脑文档的编写软件。常见的编辑器有文本编辑器、网页编辑器、源程序编辑器、图像编辑器等。从编辑器中也可调用编译器以及与它共用的程序，这样程序员无需离开编辑器就可执行程序。 编译器（Compiler）是一种计算机程序，把高级计算机语言翻译成较低级语言（如汇编语言或机器码）。如C++,GCC,Java等编译器。 EditPlus、Eclipse、Dev-C++等都是编辑器，这些编辑器是可快速开发语言程序即IDE（Integrated Development Environment）集成开发环境的软件。它们都各自内置了一些编译器，以及连接程序和执行程序。]]></description>
			<content:encoded><![CDATA[<p>编辑器（Editor）用来修改电脑文档的编写软件。常见的编辑器有文本编辑器、网页编辑器、源程序编辑器、图像编辑器等。从编辑器中也可调用编译器以及与它共用的程序，这样程序员无需离开编辑器就可执行程序。</p>
<p>编译器（Compiler）是一种计算机程序，把高级计算机语言翻译成较低级语言（如汇编语言或机器码）。如C++,GCC,Java等编译器。</p>
<p>EditPlus、Eclipse、Dev-C++等都是编辑器，这些编辑器是可快速开发语言程序即IDE（Integrated Development Environment）集成开发环境的软件。它们都各自内置了一些编译器，以及连接程序和执行程序。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.joansky.com/editor-compiler.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>对Java编译的理解</title>
		<link>http://www.joansky.com/java-translator-editor.html</link>
		<comments>http://www.joansky.com/java-translator-editor.html#comments</comments>
		<pubDate>Fri, 25 Sep 2009 15:18:13 +0000</pubDate>
		<dc:creator>Joan</dc:creator>
				<category><![CDATA[Java天地]]></category>
		<category><![CDATA[JAVA]]></category>
		<category><![CDATA[编译]]></category>

		<guid isPermaLink="false">http://www.joansky.com/?p=40</guid>
		<description><![CDATA[JDK (Java Development Kit) Java开发工具箱。JDK 是整个Java的核心，包括了Java运行环境（Java Runtime Envirnment），以及各种工具和类。 JRE（Java Runtime Environment）Java 运行环境，JRE可以让电脑系统执行JAVA应用程式（Java Application）。JRE的内部有一个Java虚拟机器（Java Virtual Machine）简称JVM，以及一些标准的类别函式库（Class Library）。 JVM（Java Virtual Machine）Java虚拟器，在JRE文件下，\bin\client里的jvm.dll就是Java虚拟机，是一个虚构出来的计算机，通过在实际的计算机上仿真模拟各种计算机功能来实现的。Java虚拟机有自己完善的硬体架构，如处理器、堆栈、寄存器等，还具有相应的指令系统。JVM屏蔽了与具体操作系统平台相关的信息，使得Java程序只需生成在Java虚拟机上运行的目标代码（字节码），就可以在多种平台上不加修改地运行。 安装JDK时，JDK、JRE放在同一目录下，JDK包里也内置了JRE。不明白为什么要有两个JRE。 一个java源代码的编译过程。（自己的理解，有错请指正） javac joan.java 把源代码（自己写出来，人可以看得懂的代码）翻译为 joan.class 字节码文件（后缀名为 .class的文件，只有JVM能读懂的语言）。java  joan 把字节码文件翻译为机器码（能让计算机读懂的文件）并执行该机器码，这里需要JVM。]]></description>
			<content:encoded><![CDATA[<p><span style="color: #0000ff;">JDK </span>(Java Development Kit) Java开发工具箱。JDK 是整个Java的核心，包括了Java运行环境（Java Runtime Envirnment），以及各种工具和类。</p>
<p><span style="color: #0000ff;">JRE</span>（Java Runtime Environment）Java 运行环境，JRE可以让电脑系统执行JAVA应用程式（Java Application）。JRE的内部有一个Java虚拟机器（Java Virtual Machine）简称JVM，以及一些标准的类别函式库（Class Library）。</p>
<p><span style="color: #0000ff;">JVM</span>（Java Virtual Machine）Java虚拟器，在JRE文件下，\bin\client里的jvm.dll就是Java虚拟机，是一个虚构出来的计算机，通过在实际的计算机上仿真模拟各种计算机功能来实现的。Java虚拟机有自己完善的硬体架构，如处理器、堆栈、寄存器等，还具有相应的指令系统。JVM屏蔽了与具体操作系统平台相关的信息，使得Java程序只需生成在Java虚拟机上运行的目标代码（字节码），就可以在多种平台上不加修改地运行。</p>
<p><span style="color: #0000ff;">安装JDK时，JDK、JRE放在同一目录下，JDK包里也内置了JRE。不明白为什么要有两个JRE。</span></p>
<p>一个java源代码的编译过程。（自己的理解，有错请指正）</p>
<p><span style="color: #0000ff;">javac joan.java</span> 把源代码（自己写出来，人可以看得懂的代码）翻译为 joan.class 字节码文件（后缀名为 .class的文件，只有JVM能读懂的语言）。<span style="color: #0000ff;">java  joan </span>把字节码文件翻译为机器码（能让计算机读懂的文件）并执行该机器码，这里需要JVM。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.joansky.com/java-translator-editor.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>批处理设置Java环境变量</title>
		<link>http://www.joansky.com/java-environment-variables.html</link>
		<comments>http://www.joansky.com/java-environment-variables.html#comments</comments>
		<pubDate>Fri, 18 Sep 2009 03:02:14 +0000</pubDate>
		<dc:creator>Joan</dc:creator>
				<category><![CDATA[Java天地]]></category>
		<category><![CDATA[编程相关]]></category>
		<category><![CDATA[JAVA]]></category>
		<category><![CDATA[批处理]]></category>

		<guid isPermaLink="false">http://www.joansky.com/?p=36</guid>
		<description><![CDATA[这学期学习Java，写程序运行之前，需要先设置环境变量。 右击我的电脑-&#62;属性-&#62;高级-&#62;环境变量，可选用户变量或系统变量。然后手动一个一个新建变量名，再往里填值。 变量：Java_Home 值：E:\jdk1.5.21 变量：Path 值：%Java_Home%\bin 变量：ClassPath 值：.;%Java_Home%\lib\dt.jar;%Java_Home%\lib\tools.jar;%Java_Home%\lib\htmlconverter.jar 有的童鞋们比较粗心，总填错。这里提供一个另一个方法：批处理。 @echo off title Set Java environment variables @reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment" /v Java_Home /t reg_sz /d "%cd%" /f @reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment" /v path /t reg_expand_sz /d ".;%path%;%Java_Home%\bin" /f @reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment" /v ClassPath /t reg_expand_sz /d ".;%Java_Home%\lib\dt.jar;%Java_Home%\lib\tools.jar;%Java_Home%\lib\htmlconverter.jar" /f set /p tmp=Successfully, esc...... pause&#62;nul 1、复制上面整个程序。 [...]]]></description>
			<content:encoded><![CDATA[<p>这学期学习Java，写程序运行之前，需要先设置环境变量。<br />
右击我的电脑-&gt;属性-&gt;高级-&gt;环境变量，可选用户变量或系统变量。然后手动一个一个新建变量名，再往里填值。</p>
<p>变量：<span style="color: #0000ff;">Java_Home</span><br />
值：E:\jdk1.5.21</p>
<p>变量：<span style="color: #0000ff;">Path</span><br />
值：%Java_Home%\bin</p>
<p>变量：<span style="color: #0000ff;">ClassPath</span><br />
值：.;%Java_Home%\lib\dt.jar;%Java_Home%\lib\tools.jar;%Java_Home%\lib\htmlconverter.jar</p>
<p>有的童鞋们比较粗心，总填错。这里提供一个另一个方法：批处理。</p>
<pre lang="Courier New">@echo off
title Set  Java environment variables
@reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment" /v Java_Home /t reg_sz /d "%cd%" /f
@reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment" /v path /t reg_expand_sz /d ".;%path%;%Java_Home%\bin" /f
@reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment" /v ClassPath /t reg_expand_sz /d ".;%Java_Home%\lib\dt.jar;%Java_Home%\lib\tools.jar;%Java_Home%\lib\htmlconverter.jar" /f
set /p tmp=Successfully, esc......
pause&gt;nul</pre>
<p>1、复制上面整个程序。</p>
<p>2、打开记事本。开始-&gt;程序-&gt;附件-&gt;记事本</p>
<p>3、保存为*.bat。记事本-&gt;文件-&gt;保存，文件名joan.bat，并保存在JDK安装目录下。</p>
<p><span style="color: #0000ff;">切记一定要放在JDK安装目录下，因为%cd%是读取当前路径的命令。</span></p>
<p>4、打开刚保存的文件。即双击joan.bat，等待，出现操作成功提示就行了。</p>
<p>6:检查环境变量是否设置成功。右击我的电脑-&gt;属性-&gt;高级-&gt;环境变量-&gt;变量，查看有没Java_Home；Path；ClassPath；有的话再打开cmd，输入java 回车。出现一大推的英语，没有提示错误，那么恭喜你，你已经成功设置了。</p>
<p><span style="color: #0000ff;">@reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment" /v Java_Home /t reg_sz /d "%cd%" /f</span></p>
<p>简单解释下这条命令 reg命令操作注册表可以添加、更改和显示注册表项中的注册表子项信息和值。</p>
<p>HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment，是系统环境变量空间的注册表项保存位置。在当前机器的系统环境变量增添Java_Home值名，选择reg_sz类型，添加%cd%数据，并强行改写。</p>
<p><span style="color: #0000ff;">%path%</span>：读取之前的Path变量。</p>
<p>想要了解关于reg命令更详细的内容，在cmd中输入 reg /? 回车，即可。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.joansky.com/java-environment-variables.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>盒模型四个方向属性的缩写</title>
		<link>http://www.joansky.com/css-box.html</link>
		<comments>http://www.joansky.com/css-box.html#comments</comments>
		<pubDate>Wed, 16 Sep 2009 12:28:12 +0000</pubDate>
		<dc:creator>Joan</dc:creator>
				<category><![CDATA[CSS天地]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[盒模型]]></category>

		<guid isPermaLink="false">http://www.joansky.com/?p=35</guid>
		<description><![CDATA[补白（padding），边框（border）,边界（margin）四个方向属性省略的数值写法，基本原则如下： 1.如果没有left值，则使用right代替； 2.如果没有bottom值，则使用top代替； 3.如果没有right值，则使用top值代替。 根据这些基本原则，可以有三种省略方式，但不管怎样省略margin的数值都会大于等于一个，而margin的默认数值按顺时针排列：top->right->bottom->left。那么对于省略的具体情况，我们可以从left反推理回去。 a.如果margin只有三个值，按照值的顺序为margin：top right bottom; 缺少了left，根据原则，则left的值有right来代替。 margin:10px 20px 30px;就等于margin:10px 20px 30px 20px; b.如果margin只有两个值，按照值的顺序为margin：top right; 缺少了bottom和left，根据原则left的值由right来代替，bottm的值由top来代替。 margin:10px 20px;就等于margin:10px 20px 10px 20px; c.如果margin只有一个值，按照值的顺序为margin:top; 缺少了bottom、left和right，根据原则left的值由right来代替，bottom的值由top来代替，right的值右top来代替，也就是说left的值也由top来代替。 margin:10px;就等于margin:10px 10px 10px 10px;]]></description>
			<content:encoded><![CDATA[<p>补白（padding），边框（border）,边界（margin）四个方向属性省略的数值写法，基本原则如下：</p>
<p>1.如果没有left值，则使用right代替；</p>
<p>2.如果没有bottom值，则使用top代替；</p>
<p>3.如果没有right值，则使用top值代替。</p>
<p>根据这些基本原则，可以有三种省略方式，但不管怎样省略margin的数值都会大于等于一个，而margin的默认数值按顺时针排列：top->right->bottom->left。那么对于省略的具体情况，我们可以从left反推理回去。</p>
<p>a.如果margin只有三个值，按照值的顺序为margin：top right bottom; 缺少了left，根据原则，则left的值有right来代替。</p>
<p>margin:10px 20px 30px;就等于margin:10px 20px 30px 20px;</p>
<p>b.如果margin只有两个值，按照值的顺序为margin：top right; 缺少了bottom和left，根据原则left的值由right来代替，bottm的值由top来代替。</p>
<p>margin:10px 20px;就等于margin:10px 20px 10px 20px;</p>
<p>c.如果margin只有一个值，按照值的顺序为margin:top; 缺少了bottom、left和right，根据原则left的值由right来代替，bottom的值由top来代替，right的值右top来代替，也就是说left的值也由top来代替。</p>
<p>margin:10px;就等于margin:10px 10px 10px 10px;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.joansky.com/css-box.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>边界margin参数值解析</title>
		<link>http://www.joansky.com/css-margin.html</link>
		<comments>http://www.joansky.com/css-margin.html#comments</comments>
		<pubDate>Tue, 15 Sep 2009 11:38:40 +0000</pubDate>
		<dc:creator>Joan</dc:creator>
				<category><![CDATA[CSS天地]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[margin]]></category>

		<guid isPermaLink="false">http://www.joansky.com/?p=34</guid>
		<description><![CDATA[margin参数值包括margin-top,margin-right,margin-bottom,margin-left margin: 50px -50px -50px 50px;  /*上右下左边界分别为50px、-50px、-50px、50px*/ 这是怎么移动的呢，这跟参考线有关。 何谓参考线？参考线就是margin移动的基准点，此基准点相对于box盒（这里的box指与div-margin相邻或周边的盒）是静止的。而margin的数值，就是box盒相对于参考线的位移量。在margin中top、right、bottom 、left的参考线分为两类。top、left为一类参考线，right、bottom为另一类参考线。 top以box的内线为参考线垂直向下位移；bottem以box的外线为参考线垂直向下位移； left以box的内线为参考线水平向右位移；right以box的外线为参考线垂直向下位移； 上面的位移方向是指margin数值为正值时候的情形，如果是负值则位移方向相反。 一大推文字看着累，看示例吧。 &#60;!DOCTYPE HTML PUBLIC &#34;-//W3C//DTD HTML 4.0 Transitional//EN&#34;&#62; &#60;HTML&#62; &#60;HEAD&#62; &#60;TITLE&#62; margin 解析 &#60;/TITLE&#62; &#60;style type=&#34;text/css&#34;&#62; &#60;!-- * { margin: 0px; padding: 0px; } &#160; #box { background-color: #ff0; height: 300px; width: 300px; margin: 20 auto; border-style: dashed; border-width: 5px; border-color: #f00 [...]]]></description>
			<content:encoded><![CDATA[<p>margin参数值包括margin-top,margin-right,margin-bottom,margin-left</p>
<p>margin: 50px -50px -50px 50px;  /*上右下左边界分别为50px、-50px、-50px、50px*/</p>
<p>这是怎么移动的呢，这跟参考线有关。</p>
<p>何谓参考线？参考线就是margin移动的基准点，此基准点相对于box盒（这里的box指与div-margin相邻或周边的盒）是静止的。而margin的数值，就是box盒相对于参考线的位移量。在margin中top、right、bottom 、left的参考线分为两类。top、left为一类参考线，right、bottom为另一类参考线。</p>
<p>top以box的内线为参考线垂直向下位移；bottem以box的外线为参考线垂直向下位移；</p>
<p>left以box的内线为参考线水平向右位移；right以box的外线为参考线垂直向下位移；</p>
<p>上面的位移方向是指margin数值为正值时候的情形，如果是负值则位移方向相反。</p>
<p>一大推文字看着累，看示例吧。</p>

<div class="wp_syntax"><div class="code"><pre class="georgia" style="font-family:Verdana,Courier New;">&lt;!DOCTYPE HTML PUBLIC &quot;-//W3C//DTD HTML 4.0 Transitional//EN&quot;&gt;
&lt;HTML&gt;
  &lt;HEAD&gt;
  &lt;TITLE&gt; margin 解析 &lt;/TITLE&gt;
  &lt;style type=&quot;text/css&quot;&gt;
 &lt;!--
 * {
     margin: 0px;
     padding: 0px;
    }
&nbsp;
 #box {
     background-color: #ff0;
     height: 300px;
     width: 300px;
     margin: 20 auto;
     border-style: dashed;
     border-width: 5px;
     border-color: #f00 #30c #30c #f00;
    }
&nbsp;
#kuang {
     background-color: #eee;
     height: 200px;
     width: 200px;
    margin: 50px -50px -50px 50px;
     }
--&gt;
    &lt;/style&gt;
     &lt;/head&gt;
    &lt;body&gt;
       &lt;div id=&quot;box&quot;&gt;
       &lt;div id=&quot;kuang&quot;&gt;&lt;/div&gt;
       &lt;/div&gt;
   &lt;/body&gt;
&lt;/html&gt;</pre></div></div>

<div id="attachment_33" class="wp-caption alignnone" style="width: 488px"><img src="http://www.joansky.com/wp-content/uploads/2009/09/margin.jpg" alt="margin 属性解析" title="margin" width="478" height="348" class="size-full wp-image-33" /><p class="wp-caption-text">margin 属性解析</p></div>
<p>margin: 50px -50px -50px 50px;</p>
<p>根据上面解释的margin解析，kuang的上边界以box的内线为参考线垂直下移50px;下边界以box的外线为参考线垂直上移50px；右边界以box的外线为参考线水平向左移50px；左边界以box的内线为参考线水平向右移50px；</p>
]]></content:encoded>
			<wfw:commentRss>http://www.joansky.com/css-margin.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Windows下的cd命令</title>
		<link>http://www.joansky.com/windows-cd.html</link>
		<comments>http://www.joansky.com/windows-cd.html#comments</comments>
		<pubDate>Thu, 10 Sep 2009 14:40:41 +0000</pubDate>
		<dc:creator>Joan</dc:creator>
				<category><![CDATA[电脑技巧]]></category>
		<category><![CDATA[cd]]></category>
		<category><![CDATA[命令]]></category>

		<guid isPermaLink="false">http://www.joansky.com/?p=31</guid>
		<description><![CDATA[这学期学习JAVA，需要使用cmd控制平台，在控制平台上常常需要改变当前目录，所以小研究下cd命令。 首先先了解下什么是驱动器，什么是盘符。 驱动器是指通过系统格式化并带有一个驱动器号的存储区域，这些存储区域可以使硬盘、软盘、光盘、优盘。 盘符是硬盘、软盘、光盘、优盘在电脑上显示的磁盘符号，如在我的电脑里有C:D:等盘符，这根据你电脑分区情况命令。 cd也可写成chdir（change directory，改变目录）显示当前目录名和改变当前目录名 假如E盘下有joan这个文件，joan文件下还有joansky文件。打开cmd时，默认当前驱动器目录是系统当前用户主目录，我的目录是C:\Documents and Settings\joan&#62; 每个驱动器默认当前目录为根目录，驱动器的目录一经改变，都会把改变后的目录默认当做是驱动器当前目录。驱动器目录的改变只对这次cmd操作起作用，关掉cmd后，驱动器默认当前目录依旧是根目录。 cd [drive:] [path]  改变驱动器的当前目录 cd e:\joan\joansky 这使得E盘的当前目录是joan\joansky，但当前驱动器仍然是C盘。 [drive:] 改变当前驱动器 e:  这时当前驱动盘是E盘，当前目录视驱动器默认目录而定。 如  cd e:\joan\joansky[回车] e: 这两条命令使当前目录为 e:\joan\joansky&#62; cd [/d] [drive:] [path]  改变当前驱动器 cd /d e:\joan\joansky  这时当前驱动器是E盘，且E盘的当前目录是joan\joansky 这条命令的功能相当于 cd e:\joan\joansky   [回车]  e: cd [\]  回到当前驱动器的根目录 cd \   当前目录是 c:\&#62; cd [..]  返回上一级命令 cd.. 这时当前目录为C:\Documents and Settings&#62;,这也已经把\Documents [...]]]></description>
			<content:encoded><![CDATA[<p>这学期学习JAVA，需要使用cmd控制平台，在控制平台上常常需要改变当前目录，所以小研究下cd命令。</p>
<p>首先先了解下什么是驱动器，什么是盘符。</p>
<p>驱动器是指通过系统格式化并带有一个驱动器号的存储区域，这些存储区域可以使硬盘、软盘、光盘、优盘。</p>
<p>盘符是硬盘、软盘、光盘、优盘在电脑上显示的磁盘符号，如在我的电脑里有C:D:等盘符，这根据你电脑分区情况命令。</p>
<p><span style="color: #0000ff;">cd也可写成chdir（change directory，改变目录）显示当前目录名和改变当前目录名</span></p>
<p>假如E盘下有joan这个文件，joan文件下还有joansky文件。打开cmd时，默认当前驱动器目录是系统当前用户主目录，我的目录是C:\Documents and Settings\joan&gt;</p>
<p><span style="color: #0000ff;">每个驱动器默认当前目录为根目录，驱动器的目录一经改变，都会把改变后的目录默认当做是驱动器当前目录。</span>驱动器目录的改变只对这次cmd操作起作用，关掉cmd后，驱动器默认当前目录依旧是根目录。</p>
<p><span style="color: #0000ff;">cd [drive:] [path]  改变驱动器的当前目录</span></p>
<p>cd e:\joan\joansky 这使得E盘的当前目录是joan\joansky，但当前驱动器仍然是C盘。</p>
<p><span style="color: #0000ff;">[drive:] 改变当前驱动器</span></p>
<p>e:  这时当前驱动盘是E盘，当前目录视驱动器默认目录而定。</p>
<p>如  cd e:\joan\joansky[回车] e: 这两条命令使当前目录为 e:\joan\joansky&gt;</p>
<p><span style="color: #0000ff;">cd [/d] [drive:] [path]  改变当前驱动器</span></p>
<p>cd /d e:\joan\joansky  这时当前驱动器是E盘，且E盘的当前目录是joan\joansky</p>
<p>这条命令的功能相当于 cd e:\joan\joansky   [回车]  e:</p>
<p><span style="color: #0000ff;">cd [\]  回到当前驱动器的根目录</span></p>
<p>cd \   当前目录是 c:\&gt;</p>
<p><span style="color: #0000ff;">cd [..]  返回上一级命令</span></p>
<p>cd.. 这时当前目录为C:\Documents and Settings&gt;,这也已经把\Documents and Settings\默认为C盘的当前目录</p>
<p><span style="color: #0000ff;">当前驱动器是其根目录，当你要进入其驱动器的目录下时，可以使用相对路径</span></p>
<p>假如当前目录为E:\&gt;，那么可以直接输入 cd \joan\joansky 进入到 E:\joan\joansky&gt;</p>
<p><span style="color: #ff0000;">PS:</span> 当前驱动器不是其根目录下，这样的命令是错误的。这时你需要使用绝对路径即 cd e:\joan\joansky</p>
]]></content:encoded>
			<wfw:commentRss>http://www.joansky.com/windows-cd.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>回校记</title>
		<link>http://www.joansky.com/college-life.html</link>
		<comments>http://www.joansky.com/college-life.html#comments</comments>
		<pubDate>Fri, 04 Sep 2009 06:22:16 +0000</pubDate>
		<dc:creator>Joan</dc:creator>
				<category><![CDATA[生活琐事]]></category>
		<category><![CDATA[大学]]></category>
		<category><![CDATA[生活]]></category>

		<guid isPermaLink="false">http://www.joansky.com/?p=30</guid>
		<description><![CDATA[开学了，坐上11点的大巴回校，还好跟朋友一起回来，要不一路肯定无聊死。前天晚上一直睡不着，在车上前后睡了两次，大概睡了一个多小时。 六点半在香洲车站下的车，搭了回学校的公车，车上人很多，拎着行李箱，还带着盆花，那个惨！嘿，RP再次爆发，遇到个临校的同学给我让个位，下车的时候发现他自己也拎着行李箱，恩，好人会有好报的哈！ 回校后，宿舍的昕同学来接我，路上听说她丢钱包的事，卡跟身份证都丢了，这两天忙着办证，比较同情她，破财消灾吧，哎，比我丢手机还惨..... 今天忙着领班里的书，去帮忙搬书的同学们辛苦了，多亏有你们了，要不今天我肯定挂了~ 还得去收书费，估计这个星期有得忙了。 说到书，想起暑假回家的时候带了几本书，书一直放箱里，直到回校整理东西的时候才碰了下，很囧，以后再也不带书回家了。 回校这两天，一个字，累！]]></description>
			<content:encoded><![CDATA[<p>开学了，坐上11点的大巴回校，还好跟朋友一起回来，要不一路肯定无聊死。前天晚上一直睡不着，在车上前后睡了两次，大概睡了一个多小时。</p>
<p>六点半在香洲车站下的车，搭了回学校的公车，车上人很多，拎着行李箱，还带着盆花，那个惨！嘿，RP再次爆发，遇到个临校的同学给我让个位，下车的时候发现他自己也拎着行李箱，恩，好人会有好报的哈！</p>
<p>回校后，宿舍的昕同学来接我，路上听说她丢钱包的事，卡跟身份证都丢了，这两天忙着办证，比较同情她，破财消灾吧，哎，比我丢手机还惨.....</p>
<p>今天忙着领班里的书，去帮忙搬书的同学们辛苦了，多亏有你们了，要不今天我肯定挂了~ 还得去收书费，估计这个星期有得忙了。</p>
<p>说到书，想起暑假回家的时候带了几本书，书一直放箱里，直到回校整理东西的时候才碰了下，很囧，以后再也不带书回家了。</p>
<p>回校这两天，一个字，累！</p>
]]></content:encoded>
			<wfw:commentRss>http://www.joansky.com/college-life.html/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>暑假小小事</title>
		<link>http://www.joansky.com/holiday.html</link>
		<comments>http://www.joansky.com/holiday.html#comments</comments>
		<pubDate>Fri, 21 Aug 2009 13:23:10 +0000</pubDate>
		<dc:creator>Joan</dc:creator>
				<category><![CDATA[生活琐事]]></category>
		<category><![CDATA[手机]]></category>
		<category><![CDATA[电脑]]></category>

		<guid isPermaLink="false">http://www.joansky.com/?p=29</guid>
		<description><![CDATA[上学期在学校丢了手机，忍到暑假回家重买了部，还是n82的。整整比去年少了1000RMB，还是很贵。肉疼... 学了一年，很早就有拆电脑的念头了。家里的电脑用了两年，感觉是时候除下尘了。于是乎，拿着工具，看着我哥拆电脑，技术不够，只能是一旁当助手了。 用小8排了几张照片，顺便晾下...]]></description>
			<content:encoded><![CDATA[<p>上学期在学校丢了手机，忍到暑假回家重买了部，还是n82的。整整比去年少了1000RMB，还是很贵。肉疼...</p>
<p>学了一年，很早就有拆电脑的念头了。家里的电脑用了两年，感觉是时候除下尘了。于是乎，拿着工具，看着我哥拆电脑，技术不够，只能是一旁当助手了。</p>
<p>用小8排了几张照片，顺便晾下...</p>
<p><img class="alignnone size-full wp-image-26" title="motherboards" src="http://www.joansky.com/wp-content/uploads/2009/08/motherboards.jpg" alt="motherboards" width="550" height="412" /></p>
<p><img class="alignnone size-full wp-image-27" title="computer" src="http://www.joansky.com/wp-content/uploads/2009/08/computer.jpg" alt="computer" width="550" height="412" /></p>
]]></content:encoded>
			<wfw:commentRss>http://www.joansky.com/holiday.html/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>快速获取播放文件</title>
		<link>http://www.joansky.com/broadcast-file.html</link>
		<comments>http://www.joansky.com/broadcast-file.html#comments</comments>
		<pubDate>Sat, 15 Aug 2009 13:25:01 +0000</pubDate>
		<dc:creator>Joan</dc:creator>
				<category><![CDATA[电脑技巧]]></category>

		<guid isPermaLink="false">http://www.joansky.com/?p=22</guid>
		<description><![CDATA[当你在浏览器上听到一些好听的歌，想下载时，不知道歌名，也不知去哪下载，怎么办呢？ 这里有一个跟简单的方法帮你把这首歌下载到你的电脑上。 1、在播放器上点击鼠标右键-属性 2、在属性面板-位置，复制整串地址，也就是音频的链接地址。 3、把这个地址粘帖到浏览器的地址栏，回车。 4、然后保存文件。 这时，文件下载成功，这时可以随意播放了。 属性-地址还有些好玩的东西，自己随意玩玩吧！]]></description>
			<content:encoded><![CDATA[<p>当你在浏览器上听到一些好听的歌，想下载时，不知道歌名，也不知去哪下载，怎么办呢？</p>
<p>这里有一个跟简单的方法帮你把这首歌下载到你的电脑上。</p>
<p>1、在播放器上点击鼠标右键-属性</p>
<p><img class="alignnone size-full wp-image-19" title="快速下载歌曲_1" src="http://www.joansky.com/wp-content/uploads/2009/08/快速下载歌曲_1.jpg" alt="快速下载歌曲_1" width="404" height="668" /></p>
<p>2、在属性面板-位置，复制整串地址，也就是音频的链接地址。</p>
<p><img class="alignnone size-full wp-image-20" title="快速下载歌曲_2" src="http://www.joansky.com/wp-content/uploads/2009/08/快速下载歌曲_2.jpg" alt="快速下载歌曲_2" width="397" height="450" /></p>
<p>3、把这个地址粘帖到浏览器的地址栏，回车。</p>
<p>4、然后保存文件。</p>
<p><img class="alignnone size-full wp-image-21" title="快速下载歌曲_3" src="http://www.joansky.com/wp-content/uploads/2009/08/快速下载歌曲_3.jpg" alt="快速下载歌曲_3" width="413" height="334" /></p>
<p>这时，文件下载成功，这时可以随意播放了。</p>
<p>属性-地址还有些好玩的东西，自己随意玩玩吧！</p>
]]></content:encoded>
			<wfw:commentRss>http://www.joansky.com/broadcast-file.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>游汕头中信度假村酒店</title>
		<link>http://www.joansky.com/travel-zhongxin.html</link>
		<comments>http://www.joansky.com/travel-zhongxin.html#comments</comments>
		<pubDate>Sun, 09 Aug 2009 12:02:58 +0000</pubDate>
		<dc:creator>Joan</dc:creator>
				<category><![CDATA[生活琐事]]></category>
		<category><![CDATA[旅游]]></category>

		<guid isPermaLink="false">http://www.joansky.com/?p=18</guid>
		<description><![CDATA[高中同学聚会，地点汕头中信度假村酒店。 汕头中信度假村酒店位于濠江区国家级优质海滩龙虎滩的碧海蓝天之中，占地面积近300亩，是四星级旅游涉外酒店，是粤东地区绿化面积最大的一家环保型度假酒店，素有“天然氧村”之称，美丽的黄金沙滩，绵延数公里的海岸线，花园式的别墅群，完善休闲的服务设施，形成一个旅游观光、休闲度假、商务洽谈的绝佳胜地！ 看海，海并没有那种蓝天碧水的感觉，不过比起在珠海看到的要好一些了。 玩水，玩到全身湿透，连耳朵都进了沙粒，还装了两口袋沙子上浴室，一副囧样。 烧烤，入厨的细胞还没活跃起来，烤焦了。 小看了下篝火晚会。那里还有小型的游乐园和高尔夫场，我没去。 彻夜未睡，与朋友们聊天，然后等待日出，可惜，天公不作美，居然来个阴天，连个亮点都看不到。 出行感想：累并快乐着！]]></description>
			<content:encoded><![CDATA[<p>高中同学聚会，地点汕头中信度假村酒店。</p>
<blockquote><p>汕头中信度假村酒店位于濠江区国家级优质海滩龙虎滩的碧海蓝天之中，占地面积近300亩，是四星级旅游涉外酒店，是粤东地区绿化面积最大的一家环保型度假酒店，素有“天然氧村”之称，美丽的黄金沙滩，绵延数公里的海岸线，花园式的别墅群，完善休闲的服务设施，形成一个旅游观光、休闲度假、商务洽谈的绝佳胜地！</p></blockquote>
<p><img class="alignnone size-full wp-image-17" title="中信度假村海景" src="http://www.joansky.com/wp-content/uploads/2009/08/中信度假村海景.jpg" alt="中信度假村海景" width="640" height="480" /></p>
<p>看海，海并没有那种蓝天碧水的感觉，不过比起在珠海看到的要好一些了。</p>
<p>玩水，玩到全身湿透，连耳朵都进了沙粒，还装了两口袋沙子上浴室，一副囧样。</p>
<p>烧烤，入厨的细胞还没活跃起来，烤焦了。</p>
<p>小看了下篝火晚会。那里还有小型的游乐园和高尔夫场，我没去。</p>
<p>彻夜未睡，与朋友们聊天，然后等待日出，可惜，天公不作美，居然来个阴天，连个亮点都看不到。</p>
<p>出行感想：累并快乐着！</p>
]]></content:encoded>
			<wfw:commentRss>http://www.joansky.com/travel-zhongxin.html/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>办理港澳通行证---广东省</title>
		<link>http://www.joansky.com/exit-permit-guangdong.html</link>
		<comments>http://www.joansky.com/exit-permit-guangdong.html#comments</comments>
		<pubDate>Mon, 03 Aug 2009 12:26:23 +0000</pubDate>
		<dc:creator>Joan</dc:creator>
				<category><![CDATA[生活琐事]]></category>
		<category><![CDATA[广东省]]></category>
		<category><![CDATA[通行证]]></category>

		<guid isPermaLink="false">http://www.joansky.com/?p=16</guid>
		<description><![CDATA[由于户口没迁往珠海，想办港澳通行证只能趁放假回家办了。折腾了几天，今天终于拿到港澳通行证。 很多朋友都想办这证，所以就顺便写下办理流程吧。 港澳通行证的签注分为四种：3个月一次签注、3个月二次签注、一年一次签注、一年二次签注。这里的签注通俗点讲就是去几次。 受理机关：户口所在地的县（区）公安机关出入境管理部门。 广东汕头潮南区户口到峡山派出所办理。 申请手续： 1、先到签证照相馆照相，照完照他会给你一张照片回执。 2、填写一份《内地居民往来港澳地区申请表》。 3、交验省份证、户口本原件。 4、提交照片回执、身份证以及户口本的复印件、和填写完的《内地居民往来港澳地区申请表》。 注：这需要本人自己去，因为在提交资料的时候还需要当面照相。已持有有效往来港澳通行证的，需提交往来港澳通行证。 收费标准： 往来港澳通行证每本100元。 一次有效签注每项20元。 二次有效签注每项40元 （以上收费标准不含邮政速递服务费） 处理时限： 首次申请往来港澳通行证及签注：15个工作日； 再次申请签注：10个工作日。 我RP再一次爆发，6天就办理下来了。去峡山领证嫌麻烦，所以在填写申请表时干脆让他邮寄，邮寄费15元。 还有什么不清楚的可以访问广东省公安厅出入境政务服务网，当然也可以给我留言。]]></description>
			<content:encoded><![CDATA[<p>由于户口没迁往珠海，想办港澳通行证只能趁放假回家办了。折腾了几天，今天终于拿到港澳通行证。</p>
<p><img class="alignnone size-full wp-image-15" title="港澳通行证" src="http://www.joansky.com/wp-content/uploads/2009/08/港澳通行证.jpg" alt="港澳通行证" width="219" height="303" /></p>
<p>很多朋友都想办这证，所以就顺便写下办理流程吧。</p>
<p>港澳通行证的签注分为四种：3个月一次签注、3个月二次签注、一年一次签注、一年二次签注。这里的签注通俗点讲就是去几次。</p>
<p>受理机关：户口所在地的县（区）公安机关出入境管理部门。</p>
<p><span style="color: #0000ff;">广东汕头潮南区户口到峡山派出所办理。</span></p>
<p>申请手续：<br />
1、先到签证照相馆照相，照完照他会给你一张照片回执。</p>
<p>2、填写一份《内地居民往来港澳地区申请表》。</p>
<p>3、交验省份证、户口本原件。</p>
<p>4、提交照片回执、身份证以及户口本的复印件、和填写完的《内地居民往来港澳地区申请表》。</p>
<p>注：<span style="color: #ff0000;">这需要本人自己去，因为在提交资料的时候还需要当面照相。已持有有效往来港澳通行证的，需提交往来港澳通行证。<br />
</span></p>
<p>收费标准：</p>
<p>往来港澳通行证每本100元。</p>
<p>一次有效签注每项20元。</p>
<p>二次有效签注每项40元</p>
<p>（以上收费标准不含邮政速递服务费）</p>
<p>处理时限：</p>
<p>首次申请往来港澳通行证及签注：15个工作日；</p>
<p>再次申请签注：10个工作日。</p>
<p>我RP再一次爆发，6天就办理下来了。去峡山领证嫌麻烦，所以在填写申请表时干脆让他邮寄，邮寄费15元。</p>
<p>还有什么不清楚的可以访问<a href="http://www.gdcrj.com/index.htm" target="_blank">广东省公安厅出入境政务服务网</a>，当然也可以给我留言。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.joansky.com/exit-permit-guangdong.html/feed</wfw:commentRss>
		<slash:comments>13</slash:comments>
		</item>
		<item>
		<title>高中回忆之行--峡山</title>
		<link>http://www.joansky.com/travel-xiashan.html</link>
		<comments>http://www.joansky.com/travel-xiashan.html#comments</comments>
		<pubDate>Thu, 30 Jul 2009 11:50:19 +0000</pubDate>
		<dc:creator>Joan</dc:creator>
				<category><![CDATA[生活琐事]]></category>
		<category><![CDATA[旅游]]></category>
		<category><![CDATA[高中]]></category>

		<guid isPermaLink="false">http://www.joansky.com/?p=14</guid>
		<description><![CDATA[放假这段时间一直在家宅着，都快长出菇来了。于是决定跟几个朋友去峡山聚聚。 峡山——高中学校所在地，曾经生活了三年的地方。 基本上把高中常去的地方都逛了遍，没啥收获。累了，转移目标，找吃的，牛肉粉签——姐妹们的最爱，本想拍张照，留念一下，但是一上菜就把这事忘了，嘿嘿。 时间还早，没啥地方去，于是散步到了学校。基本上学校没啥大变化，操场上那些稀稀疏疏的草换成了塑胶。唔，找不到草地坐了。几个自恋的人照了几张照片留影下。 唔，峡山街道总有股难闻的气味，又遇学校附近的“黑龙江”，想念珠海新鲜的空气！]]></description>
			<content:encoded><![CDATA[<p>放假这段时间一直在家宅着，都快长出菇来了。于是决定跟几个朋友去峡山聚聚。</p>
<p>峡山——高中学校所在地，曾经生活了三年的地方。</p>
<p>基本上把高中常去的地方都逛了遍，没啥收获。累了，转移目标，找吃的，牛肉粉签——姐妹们的最爱，本想拍张照，留念一下，但是一上菜就把这事忘了，嘿嘿。</p>
<p>时间还早，没啥地方去，于是散步到了学校。基本上学校没啥大变化，操场上那些稀稀疏疏的草换成了塑胶。唔，找不到草地坐了。几个自恋的人照了几张照片留影下。</p>
<p><img class="alignnone size-full wp-image-13" title="汕头市六都中学" src="http://www.joansky.com/wp-content/uploads/2009/08/汕头市六都中学.jpg" alt="汕头市六都中学" width="640" height="480" /></p>
<p>唔，峡山街道总有股难闻的气味，又遇学校附近的“黑龙江”，想念珠海新鲜的空气！</p>
]]></content:encoded>
			<wfw:commentRss>http://www.joansky.com/travel-xiashan.html/feed</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>给搜狗拼音输入法更换自定义的大头贴皮肤</title>
		<link>http://www.joansky.com/change-sougou.html</link>
		<comments>http://www.joansky.com/change-sougou.html#comments</comments>
		<pubDate>Sun, 26 Jul 2009 10:48:28 +0000</pubDate>
		<dc:creator>Joan</dc:creator>
				<category><![CDATA[电脑技巧]]></category>
		<category><![CDATA[皮肤]]></category>
		<category><![CDATA[输入法]]></category>

		<guid isPermaLink="false">http://www.joansky.com/?p=11</guid>
		<description><![CDATA[闲来无事，给搜狗输入法更换了皮肤。 1、进入搜狗的官方网站，想要直接进入自定义的大头贴皮肤，点击这里。 2、点击大头贴展览下的- 以此模板制作。 3、点击浏览图片，等待上传。 4、截取图片满意的部分。 5、选择模板，点击生成，下载皮肤。 6、下载完成后，打开生成的皮肤，安装。 试着打字，可以看到你的输入法外观变得很漂亮，嘿嘿。]]></description>
			<content:encoded><![CDATA[<p>闲来无事，给搜狗输入法更换了皮肤。</p>
<p>1、进入搜狗的<a href="http://pinyin.sogou.com/skins/" target="_blank">官方网站</a>，想要直接进入自定义的大头贴皮肤，点击<a href="http://pinyin.sogou.com/skins/cate.php?cate_id=20" target="_blank">这里</a>。</p>
<p>2、点击大头贴展览下的- 以此模板制作。</p>
<p><img class="alignnone size-full wp-image-8" title="大头贴模板制作1" src="http://www.joansky.com/wp-content/uploads/2009/07/大头贴模板制作.png" alt="大头贴模板制作1" width="749" height="110" /></p>
<p>3、点击浏览图片，等待上传。</p>
<p>4、截取图片满意的部分。</p>
<p>5、选择模板，点击生成，下载皮肤。</p>
<p><img class="alignnone size-full wp-image-9" title="大头贴模版制作2" src="http://www.joansky.com/wp-content/uploads/2009/07/大头贴模版制作2.png" alt="大头贴模版制作2" width="719" height="529" /></p>
<p>6、下载完成后，打开生成的皮肤，安装。</p>
<p>试着打字，可以看到你的输入法外观变得很漂亮，嘿嘿。</p>
<p><img class="alignnone size-full wp-image-10" title="大头贴模版制作3" src="http://www.joansky.com/wp-content/uploads/2009/07/大头贴模版制作3.png" alt="大头贴模版制作3" width="607" height="112" /></p>
]]></content:encoded>
			<wfw:commentRss>http://www.joansky.com/change-sougou.html/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>推荐几部科幻电影</title>
		<link>http://www.joansky.com/movie2.html</link>
		<comments>http://www.joansky.com/movie2.html#comments</comments>
		<pubDate>Tue, 21 Jul 2009 15:01:15 +0000</pubDate>
		<dc:creator>Joan</dc:creator>
				<category><![CDATA[生活琐事]]></category>
		<category><![CDATA[电影]]></category>
		<category><![CDATA[科技]]></category>

		<guid isPermaLink="false">http://www.joansky.com/?p=7</guid>
		<description><![CDATA[最近看了几部电影，本人觉得不错，推荐一下。 第一部《先知》，这是放假前看的，内容：50年前，一位小学生留下一张写满数字的纸。50年后的现在，一张纸被一位小男孩Caleb Myles拿到。他的父亲Ted Myles教授不经意间发现这些数字竟然毫厘不差地预言了过去50年里每个重大灾难所发生的日期、死亡人数和其它匹配数字。这些数字的最后一件居然是一场全球规模的大毁灭...... 结局：小男孩Caleb Myles和已故神秘先知者的孙女Abby被送到另一个星球生活。 一个伊甸园的前生--人类是从哪里来的，这个想法刚好和朋友不谋而合。 第二部《X战警》系列电影，《X战警》，《X战警2-联盟》，《X战警3-最终战役》，这都围绕着变种人与普通人类之间的战争，某些变种人想要毁灭人类，挑起战争，但总是以失败告终。 第三部《变形金刚 2》，又名《复仇记》，内容：堕落金刚想把领导模块——它可以用来驱动一种从太阳吸收能量的装置。太阳能的消逝影响到人类未来的光明。为了阻止灾难的到来....... 这些科幻片，基本上都围绕这么一个主题，一些毁灭地球与人类的不定因素在发生，人类为消除隐患做努力，也不断在警告人们，地球其实很危险，随时会毁灭。 在我看来，电影是生活的写照。甲型流感H1N1的肆虐，目前虽没有造成人类灭亡的威胁，但不表示以后不会。]]></description>
			<content:encoded><![CDATA[<p>最近看了几部电影，本人觉得不错，推荐一下。</p>
<p>第一部《先知》，这是放假前看的，内容：50年前，一位小学生留下一张写满数字的纸。50年后的现在，一张纸被一位小男孩Caleb Myles拿到。他的父亲Ted Myles教授不经意间发现这些数字竟然毫厘不差地预言了过去50年里每个重大灾难所发生的日期、死亡人数和其它匹配数字。这些数字的最后一件居然是一场全球规模的大毁灭......</p>
<p>结局：小男孩Caleb Myles和已故神秘先知者的孙女Abby被送到另一个星球生活。</p>
<p>一个伊甸园的前生--人类是从哪里来的，这个想法刚好和朋友不谋而合。</p>
<p>第二部《X战警》系列电影，《X战警》，《X战警2-联盟》，《X战警3-最终战役》，这都围绕着变种人与普通人类之间的战争，某些变种人想要毁灭人类，挑起战争，但总是以失败告终。</p>
<p>第三部《变形金刚 2》，又名《复仇记》，内容：堕落金刚想把领导模块——它可以用来驱动一种从太阳吸收能量的装置。太阳能的消逝影响到人类未来的光明。为了阻止灾难的到来.......</p>
<p>这些科幻片，基本上都围绕这么一个主题，一些毁灭地球与人类的不定因素在发生，人类为消除隐患做努力，也不断在警告人们，地球其实很危险，随时会毁灭。</p>
<p>在我看来，电影是生活的写照。甲型流感H1N1的肆虐，目前虽没有造成人类灭亡的威胁，但不表示以后不会。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.joansky.com/movie2.html/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>开博记</title>
		<link>http://www.joansky.com/college-life-blog.html</link>
		<comments>http://www.joansky.com/college-life-blog.html#comments</comments>
		<pubDate>Thu, 16 Jul 2009 12:51:54 +0000</pubDate>
		<dc:creator>Joan</dc:creator>
				<category><![CDATA[生活琐事]]></category>
		<category><![CDATA[博客]]></category>
		<category><![CDATA[生活]]></category>

		<guid isPermaLink="false">http://www.joansky.com/?p=6</guid>
		<description><![CDATA[在朋友的技术支持下，于09年7月14日开了个人博客， 一个属于Joan的自由天地， 记录下个人生活，学习心得， 当备忘录用，顺便督促下学习！ 话说，RP超好，ICP备案审核不超过10天就通过。 这应该会让备案半年才通过的童鞋们嫉妒死吧，嘿嘿！]]></description>
			<content:encoded><![CDATA[<p>在朋友的技术支持下，于09年7月14日开了个人博客，<br />
一个属于Joan的自由天地，<br />
记录下个人生活，学习心得，<br />
当备忘录用，顺便督促下学习！</p>
<p>话说，RP超好，ICP备案审核不超过10天就通过。<br />
这应该会让备案半年才通过的童鞋们嫉妒死吧，嘿嘿！</p>
]]></content:encoded>
			<wfw:commentRss>http://www.joansky.com/college-life-blog.html/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
	</channel>
</rss>

