<?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>Lync.in &#187; Algorithm</title>
	<atom:link href="http://lync.in/category/computer-science/algorithm-computer-science/feed/" rel="self" type="application/rss+xml" />
	<link>http://lync.in</link>
	<description>Link the world.</description>
	<lastBuildDate>Thu, 10 May 2012 03:42:21 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.2</generator>
		<item>
		<title>多边形封闭区域算法</title>
		<link>http://lync.in/detect-point-inside-polygon/</link>
		<comments>http://lync.in/detect-point-inside-polygon/#comments</comments>
		<pubDate>Thu, 24 Sep 2009 05:01:12 +0000</pubDate>
		<dc:creator>Chris</dc:creator>
				<category><![CDATA[Algorithm]]></category>
		<category><![CDATA[computational graphics]]></category>

		<guid isPermaLink="false">http://lync.in/?p=291</guid>
		<description><![CDATA[本文作者：Chris前些天在考虑一个几何算法，关于如何判断一个点是否在一个给定的多边形内部。这应该是一个比较常规的算法，我以前对几何算法了解的不多，所以既然想到了就稍微研究了一下。 查了一下相关的资料，目前有几个O(N)的算法，其中N是多边形的顶点数。 第一个叫做交替（Alternative）算法。 如下图所示 算法检查所给定的点和在该点右边的多边形区域的边界的交点数，若交点数为奇数，则该点在多边形内部，若交点数为偶数，则该点在多边形外部。可以想象成从一个点向右发出一条射线，然后计算这条射线与多边形边界的交点数。从上图中标出的蓝色点向右射出的射线与多边形有1个交点，故判定其在多边形内部，而从标出的白色点向右射出的射线则有偶数个交点，故判定其在多边形外部。 这个算法的叙述起来很平常，但实现起来却有两个略带Tricky的地方。 其一是坐标精度引起的，因为计算机对于坐标的描述是离散的，在计算向右射出的射线与多边形交点的时候很容易出现射线与多边形的某几条边平行的情况，对于这种情况，我们的算法需要向前多看几个点，以确定射线是确实与多边形相交还是只是“擦过”而已。 其二是对于非常靠近多边形边界的点的判定，你可以认为这些点是在多边形外，也可以认为是在多边形内，但你必须在算法中描述这些情况。 感兴趣的可以了解一下我的算法实现，附在文末。 这个算法在多边形为简单多边形的情况下是没有异议的，但在复杂多边形的情况下会有一些疑问，这涉及到“在多边形内还是多边形外”的定义问题。如下图 图中，如果用Alternative算法，则被多边形包围的那个点被判断为在多边形外部。 如果你认为这种定义不符合你的需要，那么有另外一种算法，称为Winding算法。 Winding算法的思路是这样的，将你置身于所给定的点上，然后让你的视线从多边形边界上的一点开始，选择一个方向绕着多边形的边界转一圈，如果你发现你的身体在这个过程中转了360度的非零整数倍，那么你所站在的这个点在多边形的内部，如果你的身体并没有转动（事实上你转动了，只是正向和逆向的转动抵消了），那么就在多边形的外部。 这个算法我没有去实现，一般来说它要比Alternative算法慢，因为它需要计算每条多边形的边与多给定的点之间的夹角。 关于算法实现： 程序的界面是用WTL写的，如果你想要编译源代码，请在Visual Studio中指定WTL的include文件夹位置。 算法核心代码如下，其中vSelectionPoints是多边形 C1 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 [...]]]></description>
			<content:encoded><![CDATA[<div class="feed-before" style="margin:15px 0; clear:both;">本文作者：<a href="http://lync.in/author/2/" title="Posts by Chris">Chris</a></div><p>前些天在考虑一个几何算法，关于如何判断一个点是否在一个给定的多边形内部。这应该是一个比较常规的算法，我以前对几何算法了解的不多，所以既然想到了就稍微研究了一下。<br />
查了一下相关的资料，目前有几个O(N)的算法，其中N是多边形的顶点数。</p>
<p>第一个叫做<strong>交替（Alternative）算法</strong>。 如下图所示</p>
<p><a href="http://lync.in/wp-content/uploads/2009/09/2009-09-24_1215291.png" class="highslide-image" onclick="return hs.expand(this);"><img src="http://lync.in/wp-content/uploads/2009/09/2009-09-24_1215291-450x345.png" alt="交替法" title="交替法" width="450" height="345" class="aligncenter size-medium wp-image-301" /></a></p>
<p><span id="more-291"></span><br />
算法检查所给定的点和在该点右边的多边形区域的边界的交点数，若交点数为奇数，则该点在多边形内部，若交点数为偶数，则该点在多边形外部。可以想象成从一个点向右发出一条射线，然后计算这条射线与多边形边界的交点数。从上图中标出的蓝色点向右射出的射线与多边形有1个交点，故判定其在多边形内部，而从标出的白色点向右射出的射线则有偶数个交点，故判定其在多边形外部。</p>
<p>这个算法的叙述起来很平常，但实现起来却有两个略带Tricky的地方。</p>
<p>其一是坐标精度引起的，因为计算机对于坐标的描述是离散的，在计算向右射出的射线与多边形交点的时候很容易出现射线与多边形的某几条边平行的情况，对于这种情况，我们的算法需要向前多看几个点，以确定射线是确实与多边形相交还是只是“擦过”而已。</p>
<p>其二是对于非常靠近多边形边界的点的判定，你可以认为这些点是在多边形外，也可以认为是在多边形内，但你必须在算法中描述这些情况。</p>
<p>感兴趣的可以了解一下我的算法实现，附在文末。</p>
<p>这个算法在多边形为简单多边形的情况下是没有异议的，但在复杂多边形的情况下会有一些疑问，这涉及到“在多边形内还是多边形外”的定义问题。如下图</p>
<p><a href="http://lync.in/wp-content/uploads/2009/09/2009-09-24_122701.png" class="highslide-image" onclick="return hs.expand(this);"><img src="http://lync.in/wp-content/uploads/2009/09/2009-09-24_122701-450x351.png" alt="2009-09-24_122701" title="2009-09-24_122701" width="450" height="351" class="aligncenter size-medium wp-image-294" /></a></p>
<p>图中，如果用Alternative算法，则被多边形包围的那个点被判断为在多边形外部。</p>
<p>如果你认为这种定义不符合你的需要，那么有另外一种算法，称为<a href="http://en.wikipedia.org/wiki/Winding_number" target="_blank"><strong>Winding算法</strong></a>。</p>
<p>Winding算法的思路是这样的，将你置身于所给定的点上，然后让你的视线从多边形边界上的一点开始，选择一个方向绕着多边形的边界转一圈，如果你发现你的身体在这个过程中转了360度的非零整数倍，那么你所站在的这个点在多边形的内部，如果你的身体并没有转动（事实上你转动了，只是正向和逆向的转动抵消了），那么就在多边形的外部。</p>
<p>这个算法我没有去实现，一般来说它要比Alternative算法慢，因为它需要计算每条多边形的边与多给定的点之间的夹角。</p>
<p><strong>关于算法实现：</strong></p>
<p>程序的界面是用WTL写的，如果你想要编译源代码，请在Visual Studio中指定WTL的include文件夹位置。</p>
<p>算法核心代码如下，其中vSelectionPoints是多边形</p>

<div class="wp_syntax_wrapper"><span class="wp_syntax_lang">C</span><div class="wp_syntax" style="background:#2c2c2c; overflow:auto"><table><tr><td class="line_numbers" style="color:#eee; background:#3c3c3c"><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
</pre></td><td class="code"><pre class="c" style="color: #FFF; font-family:&quot;Consolas&quot;,monospace,&quot;Courier New&quot;"><span style="color: #999;">// thePoint：给定的点</span>
<span style="color: #999;">// vSelectionPoints：给定的多边形顶点向量</span>
BOOL CheckInside<span style="color: #CCC;">&#40;</span>CPoint thePoint<span style="color: #CCC;">,</span> std<span style="color: #CCC;">::</span><span style="color: #FFF;">vector</span> vSelectionPoints<span style="color: #CCC;">&#41;</span>
<span style="color: #CCC;">&#123;</span>
    <span style="color: #99FFFF;">int</span> nCrossCount <span style="color: #CCC;">=</span> <span style="color: #FFCC00;">0</span><span style="color: #CCC;">;</span>
    <span style="color: #3D9EDD;">for</span> <span style="color: #CCC;">&#40;</span>size_t j <span style="color: #CCC;">=</span> <span style="color: #FFCC00;">0</span><span style="color: #CCC;">;</span> j <span style="color: #CCC;">&lt;</span> vSelectionPoints.<span style="color: #FFF;">size</span><span style="color: #CCC;">&#40;</span><span style="color: #CCC;">&#41;</span><span style="color: #CCC;">;</span> <span style="color: #CCC;">++</span>j<span style="color: #CCC;">&#41;</span>
    <span style="color: #CCC;">&#123;</span>
        CPoint <span style="color: #CCC;">&amp;</span>p1 <span style="color: #CCC;">=</span> vSelectionPoints<span style="color: #CCC;">&#91;</span>j<span style="color: #CCC;">&#93;</span><span style="color: #CCC;">;</span>
        CPoint <span style="color: #CCC;">&amp;</span>p2 <span style="color: #CCC;">=</span> vSelectionPoints<span style="color: #CCC;">&#91;</span><span style="color: #CCC;">&#40;</span>j<span style="color: #CCC;">+</span><span style="color: #FFCC00;">1</span><span style="color: #CCC;">&#41;</span><span style="color: #CCC;">%</span>vSelectionPoints.<span style="color: #FFF;">size</span><span style="color: #CCC;">&#40;</span><span style="color: #CCC;">&#41;</span><span style="color: #CCC;">&#93;</span><span style="color: #CCC;">;</span>
        <span style="color: #3D9EDD;">if</span> <span style="color: #CCC;">&#40;</span>thePoint <span style="color: #CCC;">==</span> p1 <span style="color: #CCC;">||</span> thePoint <span style="color: #CCC;">==</span> p2<span style="color: #CCC;">&#41;</span>
        <span style="color: #CCC;">&#123;</span>
            nCrossCount <span style="color: #CCC;">=</span> <span style="color: #FFCC00;">0</span><span style="color: #CCC;">;</span>
            <span style="color: #F2B646;">break</span><span style="color: #CCC;">;</span>
        <span style="color: #CCC;">&#125;</span>
        <span style="color: #3D9EDD;">else</span> <span style="color: #3D9EDD;">if</span> <span style="color: #CCC;">&#40;</span>thePoint.<span style="color: #FFF;">y</span> <span style="color: #CCC;">&gt;</span> max<span style="color: #CCC;">&#40;</span>p1.<span style="color: #FFF;">y</span><span style="color: #CCC;">,</span> p2.<span style="color: #FFF;">y</span><span style="color: #CCC;">&#41;</span> <span style="color: #CCC;">||</span> thePoint.<span style="color: #FFF;">y</span> <span style="color: #CCC;">&lt;</span> min<span style="color: #CCC;">&#40;</span>p1.<span style="color: #FFF;">y</span><span style="color: #CCC;">,</span> p2.<span style="color: #FFF;">y</span><span style="color: #CCC;">&#41;</span><span style="color: #CCC;">&#41;</span>
        <span style="color: #CCC;">&#123;</span>
            <span style="color: #3D9EDD;">continue</span><span style="color: #CCC;">;</span>
        <span style="color: #CCC;">&#125;</span>
        <span style="color: #3D9EDD;">else</span> <span style="color: #3D9EDD;">if</span> <span style="color: #CCC;">&#40;</span>thePoint.<span style="color: #FFF;">y</span> <span style="color: #CCC;">&lt;</span> max<span style="color: #CCC;">&#40;</span>p1.<span style="color: #FFF;">y</span><span style="color: #CCC;">,</span> p2.<span style="color: #FFF;">y</span><span style="color: #CCC;">&#41;</span> <span style="color: #CCC;">&amp;&amp;</span> thePoint.<span style="color: #FFF;">y</span> <span style="color: #CCC;">&gt;</span> min<span style="color: #CCC;">&#40;</span>p1.<span style="color: #FFF;">y</span><span style="color: #CCC;">,</span> p2.<span style="color: #FFF;">y</span><span style="color: #CCC;">&#41;</span><span style="color: #CCC;">&#41;</span>
        <span style="color: #CCC;">&#123;</span>
            <span style="color: #3D9EDD;">if</span> <span style="color: #CCC;">&#40;</span>p2.<span style="color: #FFF;">x</span> <span style="color: #CCC;">==</span> p1.<span style="color: #FFF;">x</span><span style="color: #CCC;">&#41;</span>
            <span style="color: #CCC;">&#123;</span>
                <span style="color: #3D9EDD;">if</span> <span style="color: #CCC;">&#40;</span>thePoint.<span style="color: #FFF;">x</span> <span style="color: #CCC;">==</span> p1.<span style="color: #FFF;">x</span><span style="color: #CCC;">&#41;</span>
                <span style="color: #CCC;">&#123;</span>
                    nCrossCount <span style="color: #CCC;">=</span> <span style="color: #FFCC00;">0</span><span style="color: #CCC;">;</span>
                    <span style="color: #F2B646;">break</span><span style="color: #CCC;">;</span>
                <span style="color: #CCC;">&#125;</span>
                <span style="color: #3D9EDD;">else</span> <span style="color: #3D9EDD;">if</span> <span style="color: #CCC;">&#40;</span>thePoint.<span style="color: #FFF;">x</span> <span style="color: #CCC;">&lt;</span> p1.<span style="color: #FFF;">x</span><span style="color: #CCC;">&#41;</span>
                <span style="color: #CCC;">&#123;</span>
                    nCrossCount<span style="color: #CCC;">++;</span>
                <span style="color: #CCC;">&#125;</span>
            <span style="color: #CCC;">&#125;</span>
            <span style="color: #3D9EDD;">else</span>
            <span style="color: #CCC;">&#123;</span>
                <span style="color: #99FFFF;">double</span> fCrossX <span style="color: #CCC;">=</span> <span style="color: #CCC;">&#40;</span>thePoint.<span style="color: #FFF;">y</span> <span style="color: #CCC;">-</span> p1.<span style="color: #FFF;">y</span><span style="color: #CCC;">&#41;</span> <span style="color: #CCC;">*</span> <span style="color: #99FFFF;">double</span><span style="color: #CCC;">&#40;</span>p2.<span style="color: #FFF;">x</span> <span style="color: #CCC;">-</span> p1.<span style="color: #FFF;">x</span><span style="color: #CCC;">&#41;</span> <span style="color: #CCC;">/</span> <span style="color: #99FFFF;">double</span><span style="color: #CCC;">&#40;</span>p2.<span style="color: #FFF;">y</span> <span style="color: #CCC;">-</span> p1.<span style="color: #FFF;">y</span><span style="color: #CCC;">&#41;</span> <span style="color: #CCC;">+</span> p1.<span style="color: #FFF;">x</span><span style="color: #CCC;">;</span>
                <span style="color: #3D9EDD;">if</span> <span style="color: #CCC;">&#40;</span>fabs<span style="color: #CCC;">&#40;</span>fCrossX <span style="color: #CCC;">-</span> thePoint.<span style="color: #FFF;">x</span><span style="color: #CCC;">&#41;</span> <span style="color: #CCC;">&lt;</span> ESPILON<span style="color: #CCC;">&#41;</span>
                <span style="color: #CCC;">&#123;</span>
                    nCrossCount <span style="color: #CCC;">=</span> <span style="color: #FFCC00;">0</span><span style="color: #CCC;">;</span>
                    <span style="color: #F2B646;">break</span><span style="color: #CCC;">;</span>
                <span style="color: #CCC;">&#125;</span>
                <span style="color: #3D9EDD;">if</span> <span style="color: #CCC;">&#40;</span>fCrossX <span style="color: #CCC;">&gt;</span> thePoint.<span style="color: #FFF;">x</span><span style="color: #CCC;">&#41;</span>
                <span style="color: #CCC;">&#123;</span>
                    nCrossCount<span style="color: #CCC;">++;</span>
                <span style="color: #CCC;">&#125;</span>
            <span style="color: #CCC;">&#125;</span>
        <span style="color: #CCC;">&#125;</span>
        <span style="color: #3D9EDD;">else</span>
        <span style="color: #CCC;">&#123;</span>
            <span style="color: #3D9EDD;">if</span> <span style="color: #CCC;">&#40;</span>thePoint.<span style="color: #FFF;">y</span> <span style="color: #CCC;">!=</span> p1.<span style="color: #FFF;">y</span> <span style="color: #CCC;">&amp;&amp;</span> thePoint.<span style="color: #FFF;">y</span> <span style="color: #CCC;">==</span> p2.<span style="color: #FFF;">y</span> <span style="color: #CCC;">&amp;&amp;</span> thePoint.<span style="color: #FFF;">x</span> <span style="color: #CCC;">&lt;</span> p2.<span style="color: #FFF;">x</span><span style="color: #CCC;">&#41;</span>
            <span style="color: #CCC;">&#123;</span>
                <span style="color: #3D9EDD;">while</span><span style="color: #CCC;">&#40;</span>TRUE<span style="color: #CCC;">&#41;</span>
                <span style="color: #CCC;">&#123;</span>
                    j<span style="color: #CCC;">++;</span>
                    CPoint <span style="color: #CCC;">*</span>pp3 <span style="color: #CCC;">=</span> <span style="color: #CCC;">&amp;</span>vSelectionPoints<span style="color: #CCC;">&#91;</span><span style="color: #CCC;">&#40;</span>j<span style="color: #CCC;">+</span><span style="color: #FFCC00;">1</span><span style="color: #CCC;">&#41;</span><span style="color: #CCC;">%</span>vSelectionPoints.<span style="color: #FFF;">size</span><span style="color: #CCC;">&#40;</span><span style="color: #CCC;">&#41;</span><span style="color: #CCC;">&#93;</span><span style="color: #CCC;">;</span>
                    <span style="color: #3D9EDD;">if</span> <span style="color: #CCC;">&#40;</span>pp3<span style="color: #CCC;">-&gt;</span>y <span style="color: #CCC;">!=</span> p2.<span style="color: #FFF;">y</span><span style="color: #CCC;">&#41;</span>
                    <span style="color: #CCC;">&#123;</span>
                        <span style="color: #F2B646;">break</span><span style="color: #CCC;">;</span>
                    <span style="color: #CCC;">&#125;</span>
                <span style="color: #CCC;">&#125;</span>
&nbsp;
                CPoint <span style="color: #CCC;">&amp;</span>p3 <span style="color: #CCC;">=</span> vSelectionPoints<span style="color: #CCC;">&#91;</span><span style="color: #CCC;">&#40;</span>j<span style="color: #CCC;">+</span><span style="color: #FFCC00;">1</span><span style="color: #CCC;">&#41;</span><span style="color: #CCC;">%</span>vSelectionPoints.<span style="color: #FFF;">size</span><span style="color: #CCC;">&#40;</span><span style="color: #CCC;">&#41;</span><span style="color: #CCC;">&#93;</span><span style="color: #CCC;">;</span>
&nbsp;
                <span style="color: #3D9EDD;">if</span> <span style="color: #CCC;">&#40;</span>thePoint.<span style="color: #FFF;">y</span> <span style="color: #CCC;">&lt;=</span> max<span style="color: #CCC;">&#40;</span>p1.<span style="color: #FFF;">y</span><span style="color: #CCC;">,</span> p3.<span style="color: #FFF;">y</span><span style="color: #CCC;">&#41;</span> <span style="color: #CCC;">&amp;&amp;</span> thePoint.<span style="color: #FFF;">y</span> <span style="color: #CCC;">&gt;=</span> min<span style="color: #CCC;">&#40;</span>p1.<span style="color: #FFF;">y</span><span style="color: #CCC;">,</span> p3.<span style="color: #FFF;">y</span><span style="color: #CCC;">&#41;</span><span style="color: #CCC;">&#41;</span>
                <span style="color: #CCC;">&#123;</span>
                    nCrossCount<span style="color: #CCC;">++;</span>
                <span style="color: #CCC;">&#125;</span>
            <span style="color: #CCC;">&#125;</span>
        <span style="color: #CCC;">&#125;</span>
    <span style="color: #CCC;">&#125;</span>
    <span style="color: #3D9EDD;">if</span> <span style="color: #CCC;">&#40;</span>nCrossCount <span style="color: #CCC;">%</span> <span style="color: #FFCC00;">2</span> <span style="color: #CCC;">!=</span> <span style="color: #FFCC00;">0</span><span style="color: #CCC;">&#41;</span>
    <span style="color: #CCC;">&#123;</span>
        <span style="color: #3D9EDD;">return</span> TRUE<span style="color: #CCC;">;</span>
    <span style="color: #CCC;">&#125;</span>
    <span style="color: #3D9EDD;">return</span> FALSE<span style="color: #CCC;">;</span>
<span style="color: #CCC;">&#125;</span></pre></td></tr></table></div></div>

<p>工程文件下载：<br />
<a href="http://lync.in/wp-content/uploads/2009/09/WTLSelectionWindow.zip">WTLSelectionWindow</a></p>
<div class="feed-after" style="margin:15px 0; clear:both;"><a href="http://lync.in">Lync.in</a> 是一个多人协作博客，欢迎您 <a href="http://lync.in/detect-point-inside-polygon/">查看原文</a> 以获得更好的阅读体验。</div>]]></content:encoded>
			<wfw:commentRss>http://lync.in/detect-point-inside-polygon/feed/</wfw:commentRss>
		<slash:comments>16</slash:comments>
		</item>
		<item>
		<title>Code Jam 2009 Qualification :: 我去打酱油</title>
		<link>http://lync.in/code-jam-qualification-lol/</link>
		<comments>http://lync.in/code-jam-qualification-lol/#comments</comments>
		<pubDate>Thu, 03 Sep 2009 15:57:49 +0000</pubDate>
		<dc:creator>Chris</dc:creator>
				<category><![CDATA[Algorithm]]></category>
		<category><![CDATA[algorithm]]></category>
		<category><![CDATA[Code Jam]]></category>
		<category><![CDATA[Google]]></category>
		<category><![CDATA[programming]]></category>

		<guid isPermaLink="false">http://lync.in/?p=148</guid>
		<description><![CDATA[本文作者：ChrisCode Jam 2009今天进入了资格赛，我算法很弱...纯粹属于打酱油去的选手... 简单说明一下资格赛的题目，一共有3道题目： 1. Alien Language （外星语） 题目大致的意思是，人类掌握了一本外星语字典，然后手头上有部分外星语的碎片看不清楚，其中某些字符可能是多个字符中的一个，要你根据已经掌握的字典计算外星语碎片上的文字共有多少种可能性。 简单举个例子，目前掌握了如下的外星语文字，即字典： abc bca dac dbc cba 那么，对于一个给定的输入(ab)(bc)(ca)——其中()中的字母代表这个位置上可能是()中的某一个字符，有可能在字典中的匹配是abc和bca，也就是有2个匹配。 我做的思路是这样的： 首先根据字典建立一个N叉树，如下图（没有画完整），其中R代表Root。 对于一个给定的输入，比如(ab)(bc)(ca)，则准备一个queue，先将Root放入queue，进入循环，每次从queue中拿出一个node，在这个node下找是否有匹配，若有，则把这些节点放到queue中，直到匹配完整个字符串，在queue中剩下的node数就是可能产生的匹配数。 按理来说，这个算法的复杂度，建树为O(L * D)（L为每个文字的长度，D为字典的大小），在树上搜索为O(M * N) （M为需要匹配的文字的最大长度，N为需要匹配的文字数），那么总的复杂度就是O(L * D + M * N)。但是大概是我的实现太撮...导致Time expire...所以Small Case过了，Large Case failed... 2. Watersheds 这个题目就是给你一个N*N个Cell的地图，地图上每个Cell标注了它的海拔。然后水流从海拔高的Cell将流向海拔低的Cell，每个Cell可以有多条水流入，但只有上、下、左、右中的一个方向可以流出。同一条水流路径上面的Cell被用同一个字符标记，然后标记的顺序也有个讲究，具体请自己看题目，在最后给出。 具体解决思路是：从左上角开始，依次对每一个没有标记过的Cell做rec_mark操作，这个操作首先判断当前这个点是否为Sink（也就是局部最低点），若是则进行标记，若不是，则往最低的方向递归调用rec_mark。 这道题目倒是很顺利，一下就过了。 3. Welcome to Code Jam 这道题目很常规，让你在一个目标字符串中查找某一个固定的pattern出现了多少次，比如 elcomew elcome to code jam 这个字符串中，只有一个子串符合welcome to code jam这个pattern，故输出为1. [...]]]></description>
			<content:encoded><![CDATA[<div class="feed-before" style="margin:15px 0; clear:both;">本文作者：<a href="http://lync.in/author/2/" title="Posts by Chris">Chris</a></div><p>Code Jam 2009今天进入了资格赛，我算法很弱...纯粹属于打酱油去的选手...</p>
<p>简单说明一下资格赛的题目，一共有3道题目：</p>
<h5>1. Alien Language （外星语）</h5>
<p>题目大致的意思是，人类掌握了一本外星语字典，然后手头上有部分外星语的碎片看不清楚，其中某些字符可能是多个字符中的一个，要你根据已经掌握的字典计算外星语碎片上的文字共有多少种可能性。</p>
<p><span id="more-148"></span><br />
简单举个例子，目前掌握了如下的外星语文字，即字典：</p>
<blockquote><p>abc<br />
bca<br />
dac<br />
dbc<br />
cba</p></blockquote>
<p>那么，对于一个给定的输入(ab)(bc)(ca)——其中()中的字母代表这个位置上可能是()中的某一个字符，有可能在字典中的匹配是abc和bca，也就是有2个匹配。</p>
<p>我做的思路是这样的：</p>
<p>首先根据字典建立一个N叉树，如下图（没有画完整），其中R代表Root。</p>
<p><img src="http://lync.in/wp-content/uploads/2009/09/2009-09-03_215618.png" alt="2009-09-03_215618" title="2009-09-03_215618" width="357" height="248" class="aligncenter size-full wp-image-153" /><br />
对于一个给定的输入，比如(ab)(bc)(ca)，则准备一个queue，先将Root放入queue，进入循环，每次从queue中拿出一个node，在这个node下找是否有匹配，若有，则把这些节点放到queue中，直到匹配完整个字符串，在queue中剩下的node数就是可能产生的匹配数。</p>
<p>按理来说，这个算法的复杂度，建树为O(L * D)（L为每个文字的长度，D为字典的大小），在树上搜索为O(M * N) （M为需要匹配的文字的最大长度，N为需要匹配的文字数），那么总的复杂度就是O(L * D + M * N)。但是大概是我的实现太撮...导致Time expire...所以Small Case过了，Large Case failed...</p>
<h5>2. Watersheds</h5>
<p>这个题目就是给你一个N*N个Cell的地图，地图上每个Cell标注了它的海拔。然后水流从海拔高的Cell将流向海拔低的Cell，每个Cell可以有多条水流入，但只有上、下、左、右中的一个方向可以流出。同一条水流路径上面的Cell被用同一个字符标记，然后标记的顺序也有个讲究，具体请自己看题目，在最后给出。</p>
<p>具体解决思路是：从左上角开始，依次对每一个没有标记过的Cell做rec_mark操作，这个操作首先判断当前这个点是否为Sink（也就是局部最低点），若是则进行标记，若不是，则往最低的方向递归调用rec_mark。</p>
<p>这道题目倒是很顺利，一下就过了。</p>
<h5>3. Welcome to Code Jam</h5>
<p>这道题目很常规，让你在一个目标字符串中查找某一个固定的pattern出现了多少次，比如</p>
<blockquote><p>elcomew elcome to code jam</p></blockquote>
<p>这个字符串中，只有一个子串符合welcome to code jam这个pattern，故输出为1.</p>
<p>我开始写这个算法的时候低估了他递归的层次深度，结果没有用动态规划，直接递归了...在small case的时候没问题，我就很兴奋直接上了large case，结果么...fail了...郁闷...</p>
<p>后来加了一个table记录子问题的答案后，就顺利算出结果了，不过么...也来不及了...</p>
<p>总的来说，这次酱油打得不是非常体面，下次我还是做做围观群众吧...</p>
<p>附题目：</p>
<h6>问题1</h6>
<p style="TEXT-ALIGN: center"><img class="size-full wp-image-154 aligncenter" title="2009-09-03_224010" src="http://lync.in/wp-content/uploads/2009/09/2009-09-03_224010.png" alt="2009-09-03_224010" width="567" height="1167" /></p>
<h6>问题2</h6>
<p style="text-align: center;">
<img class="size-full wp-image-155 aligncenter" title="2009-09-03_224107" src="http://lync.in/wp-content/uploads/2009/09/2009-09-03_224107.png" alt="2009-09-03_224107" width="568" height="1381" /></p>
<h6>问题3</h6>
<p style="text-align: center;"><img class="size-full wp-image-156 aligncenter" title="2009-09-03_223914" src="http://lync.in/wp-content/uploads/2009/09/2009-09-03_223914.png" alt="2009-09-03_223914" width="578" height="1010" /></p>
<p>我的代码，很土...</p>
<h6>问题1</h6>

<div class="wp_syntax_wrapper"><span class="wp_syntax_lang">C</span><div class="wp_syntax" style="background:#2c2c2c; overflow:auto"><div class="code"><pre class="c" style="color: #FFF; font-family:&quot;Consolas&quot;,monospace,&quot;Courier New&quot;"><span style="color: #33CC66;">#include &lt;iostream&gt;</span>
<span style="color: #33CC66;">#include &lt;fstream&gt;</span>
<span style="color: #33CC66;">#include &lt;string&gt;</span>
<span style="color: #33CC66;">#include &lt;set&gt;</span>
<span style="color: #33CC66;">#include &lt;map&gt;</span>
<span style="color: #33CC66;">#include &lt;vector&gt;</span>
<span style="color: #33CC66;">#include &lt;queue&gt;</span>
&nbsp;
using namespace std<span style="color: #CCC;">;</span>
&nbsp;
<span style="color: #99FFFF;">struct</span> t_node
<span style="color: #CCC;">&#123;</span>
	map<span style="color: #CCC;">&lt;</span>char<span style="color: #CCC;">,</span> t_node<span style="color: #CCC;">*&gt;</span> m_nodes<span style="color: #CCC;">;</span>
&nbsp;
	~t_node<span style="color: #CCC;">&#40;</span><span style="color: #CCC;">&#41;</span>
	<span style="color: #CCC;">&#123;</span>
		<span style="color: #3D9EDD;">if</span> <span style="color: #CCC;">&#40;</span><span style="color: #CCC;">!</span>m_nodes.<span style="color: #FFF;">empty</span><span style="color: #CCC;">&#40;</span><span style="color: #CCC;">&#41;</span><span style="color: #CCC;">&#41;</span>
		<span style="color: #CCC;">&#123;</span>
			<span style="color: #3D9EDD;">for</span> <span style="color: #CCC;">&#40;</span>map<span style="color: #CCC;">&lt;</span>char<span style="color: #CCC;">,</span> t_node<span style="color: #CCC;">*&gt;::</span><span style="color: #FFF;">iterator</span> it <span style="color: #CCC;">=</span> m_nodes.<span style="color: #FFF;">begin</span><span style="color: #CCC;">&#40;</span><span style="color: #CCC;">&#41;</span><span style="color: #CCC;">;</span> it <span style="color: #CCC;">!=</span> m_nodes.<span style="color: #FFF;">end</span><span style="color: #CCC;">&#40;</span><span style="color: #CCC;">&#41;</span><span style="color: #CCC;">;</span> <span style="color: #CCC;">++</span>it<span style="color: #CCC;">&#41;</span>
			<span style="color: #CCC;">&#123;</span>
				delete it<span style="color: #CCC;">-&gt;</span>second<span style="color: #CCC;">;</span>
			<span style="color: #CCC;">&#125;</span>
		<span style="color: #CCC;">&#125;</span>
	<span style="color: #CCC;">&#125;</span>
<span style="color: #CCC;">&#125;</span><span style="color: #CCC;">;</span>
&nbsp;
&nbsp;
ifstream fin<span style="color: #CCC;">&#40;</span><span style="color: #7ACC00;">&quot;c:<span style="color: #99FF00;">\\</span>A-large.in&quot;</span><span style="color: #CCC;">&#41;</span><span style="color: #CCC;">;</span>
ofstream fout<span style="color: #CCC;">&#40;</span><span style="color: #7ACC00;">&quot;c:<span style="color: #99FF00;">\\</span>A-large.out&quot;</span><span style="color: #CCC;">&#41;</span><span style="color: #CCC;">;</span>
&nbsp;
<span style="color: #33CC66;">#define cin fin</span>
<span style="color: #33CC66;">#define cout fout</span>
&nbsp;
<span style="color: #99FFFF;">int</span> main<span style="color: #CCC;">&#40;</span><span style="color: #CCC;">&#41;</span>
<span style="color: #CCC;">&#123;</span>
	<span style="color: #99FFFF;">int</span> L<span style="color: #CCC;">;</span>
	<span style="color: #99FFFF;">int</span> D<span style="color: #CCC;">;</span>
	<span style="color: #99FFFF;">int</span> N<span style="color: #CCC;">;</span>
	cin <span style="color: #CCC;">&gt;&gt;</span> L <span style="color: #CCC;">&gt;&gt;</span> D <span style="color: #CCC;">&gt;&gt;</span> N<span style="color: #CCC;">;</span>
	t_node root<span style="color: #CCC;">;</span>
	t_node <span style="color: #CCC;">*</span>p_node<span style="color: #CCC;">;</span>
	<span style="color: #999;">// Build tree</span>
	<span style="color: #3D9EDD;">for</span> <span style="color: #CCC;">&#40;</span><span style="color: #99FFFF;">int</span> d <span style="color: #CCC;">=</span> <span style="color: #FFCC00;">0</span><span style="color: #CCC;">;</span> d <span style="color: #CCC;">&lt;</span> D<span style="color: #CCC;">;</span> <span style="color: #CCC;">++</span>d<span style="color: #CCC;">&#41;</span>
	<span style="color: #CCC;">&#123;</span>
		string word<span style="color: #CCC;">;</span>
		cin <span style="color: #CCC;">&gt;&gt;</span> word<span style="color: #CCC;">;</span>
		p_node <span style="color: #CCC;">=</span> <span style="color: #CCC;">&amp;</span>root<span style="color: #CCC;">;</span>
		<span style="color: #3D9EDD;">for</span> <span style="color: #CCC;">&#40;</span><span style="color: #99FFFF;">int</span> l <span style="color: #CCC;">=</span> <span style="color: #FFCC00;">0</span><span style="color: #CCC;">;</span> l <span style="color: #CCC;">&lt;</span> L<span style="color: #CCC;">;</span> <span style="color: #CCC;">++</span>l<span style="color: #CCC;">&#41;</span>
		<span style="color: #CCC;">&#123;</span>
			<span style="color: #3D9EDD;">if</span> <span style="color: #CCC;">&#40;</span>p_node<span style="color: #CCC;">-&gt;</span>m_nodes.<span style="color: #FFF;">find</span><span style="color: #CCC;">&#40;</span>word<span style="color: #CCC;">&#91;</span>l<span style="color: #CCC;">&#93;</span><span style="color: #CCC;">&#41;</span> <span style="color: #CCC;">==</span> p_node<span style="color: #CCC;">-&gt;</span>m_nodes.<span style="color: #FFF;">end</span><span style="color: #CCC;">&#40;</span><span style="color: #CCC;">&#41;</span><span style="color: #CCC;">&#41;</span>
			<span style="color: #CCC;">&#123;</span>
				<span style="color: #999;">// Insert char-&gt;node pair to m_nodes</span>
				p_node<span style="color: #CCC;">-&gt;</span>m_nodes<span style="color: #CCC;">&#91;</span>word<span style="color: #CCC;">&#91;</span>l<span style="color: #CCC;">&#93;</span><span style="color: #CCC;">&#93;</span> <span style="color: #CCC;">=</span> new t_node<span style="color: #CCC;">;</span>
			<span style="color: #CCC;">&#125;</span>
			p_node <span style="color: #CCC;">=</span> p_node<span style="color: #CCC;">-&gt;</span>m_nodes<span style="color: #CCC;">&#91;</span>word<span style="color: #CCC;">&#91;</span>l<span style="color: #CCC;">&#93;</span><span style="color: #CCC;">&#93;</span><span style="color: #CCC;">;</span>
		<span style="color: #CCC;">&#125;</span>
	<span style="color: #CCC;">&#125;</span>
	<span style="color: #999;">// Matching cases</span>
	<span style="color: #3D9EDD;">for</span><span style="color: #CCC;">&#40;</span><span style="color: #99FFFF;">int</span> n <span style="color: #CCC;">=</span> <span style="color: #FFCC00;">0</span><span style="color: #CCC;">;</span> n <span style="color: #CCC;">&lt;</span> N<span style="color: #CCC;">;</span> <span style="color: #CCC;">++</span>n<span style="color: #CCC;">&#41;</span>
	<span style="color: #CCC;">&#123;</span>
		string line<span style="color: #CCC;">;</span>
		cin <span style="color: #CCC;">&gt;&gt;</span> line<span style="color: #CCC;">;</span>
		queue<span style="color: #CCC;">&lt;</span>t_node <span style="color: #CCC;">*&gt;</span> possible_matches<span style="color: #CCC;">;</span>
		possible_matches.<span style="color: #FFF;">push</span><span style="color: #CCC;">&#40;</span><span style="color: #CCC;">&amp;</span>root<span style="color: #CCC;">&#41;</span><span style="color: #CCC;">;</span>
		<span style="color: #3D9EDD;">for</span> <span style="color: #CCC;">&#40;</span>string<span style="color: #CCC;">::</span><span style="color: #FFF;">size_type</span> pos <span style="color: #CCC;">=</span> <span style="color: #FFCC00;">0</span><span style="color: #CCC;">;</span> <span style="color: #CCC;">!</span>possible_matches.<span style="color: #FFF;">empty</span><span style="color: #CCC;">&#40;</span><span style="color: #CCC;">&#41;</span> <span style="color: #CCC;">&amp;&amp;</span> pos <span style="color: #CCC;">&lt;</span> line.<span style="color: #FFF;">length</span><span style="color: #CCC;">&#40;</span><span style="color: #CCC;">&#41;</span><span style="color: #CCC;">;</span> <span style="color: #CCC;">++</span>pos<span style="color: #CCC;">&#41;</span>
		<span style="color: #CCC;">&#123;</span>
			queue<span style="color: #CCC;">&lt;</span>t_node <span style="color: #CCC;">*&gt;::</span><span style="color: #FFF;">size_type</span> n_matches <span style="color: #CCC;">=</span> possible_matches.<span style="color: #FFF;">size</span><span style="color: #CCC;">&#40;</span><span style="color: #CCC;">&#41;</span><span style="color: #CCC;">;</span>
			<span style="color: #99FFFF;">int</span> chars_begin <span style="color: #CCC;">=</span> pos<span style="color: #CCC;">;</span>
			<span style="color: #99FFFF;">int</span> chars_end<span style="color: #CCC;">;</span>
			<span style="color: #3D9EDD;">if</span> <span style="color: #CCC;">&#40;</span>line<span style="color: #CCC;">&#91;</span>pos<span style="color: #CCC;">&#93;</span> <span style="color: #CCC;">==</span> <span style="color: #7ACC00;">'('</span><span style="color: #CCC;">&#41;</span>
			<span style="color: #CCC;">&#123;</span>
				chars_begin<span style="color: #CCC;">++;</span>
				chars_end <span style="color: #CCC;">=</span> line.<span style="color: #FFF;">find_first_of</span><span style="color: #CCC;">&#40;</span><span style="color: #7ACC00;">')'</span><span style="color: #CCC;">,</span> chars_begin<span style="color: #CCC;">&#41;</span><span style="color: #CCC;">;</span>
				pos <span style="color: #CCC;">=</span> chars_end<span style="color: #CCC;">;</span>
			<span style="color: #CCC;">&#125;</span>
			<span style="color: #3D9EDD;">else</span>
			<span style="color: #CCC;">&#123;</span>
				chars_end <span style="color: #CCC;">=</span> chars_begin <span style="color: #CCC;">+</span> <span style="color: #FFCC00;">1</span><span style="color: #CCC;">;</span>
			<span style="color: #CCC;">&#125;</span>
			<span style="color: #3D9EDD;">for</span> <span style="color: #CCC;">&#40;</span>queue<span style="color: #CCC;">&lt;</span>t_node <span style="color: #CCC;">*&gt;::</span><span style="color: #FFF;">size_type</span> i <span style="color: #CCC;">=</span> <span style="color: #FFCC00;">0</span><span style="color: #CCC;">;</span> i <span style="color: #CCC;">&lt;</span> n_matches<span style="color: #CCC;">;</span> <span style="color: #CCC;">++</span>i<span style="color: #CCC;">&#41;</span>
			<span style="color: #CCC;">&#123;</span>
				t_node <span style="color: #CCC;">*</span>this_node <span style="color: #CCC;">=</span> possible_matches.<span style="color: #FFF;">front</span><span style="color: #CCC;">&#40;</span><span style="color: #CCC;">&#41;</span><span style="color: #CCC;">;</span>
				possible_matches.<span style="color: #FFF;">pop</span><span style="color: #CCC;">&#40;</span><span style="color: #CCC;">&#41;</span><span style="color: #CCC;">;</span>
				<span style="color: #3D9EDD;">for</span> <span style="color: #CCC;">&#40;</span><span style="color: #99FFFF;">int</span> char_pos <span style="color: #CCC;">=</span> chars_begin<span style="color: #CCC;">;</span> char_pos <span style="color: #CCC;">!=</span> chars_end<span style="color: #CCC;">;</span> <span style="color: #CCC;">++</span>char_pos<span style="color: #CCC;">&#41;</span>
				<span style="color: #CCC;">&#123;</span>
					<span style="color: #99FFFF;">char</span> ch <span style="color: #CCC;">=</span> line<span style="color: #CCC;">&#91;</span>char_pos<span style="color: #CCC;">&#93;</span><span style="color: #CCC;">;</span>
					<span style="color: #3D9EDD;">if</span> <span style="color: #CCC;">&#40;</span>this_node<span style="color: #CCC;">-&gt;</span>m_nodes.<span style="color: #FFF;">find</span><span style="color: #CCC;">&#40;</span>ch<span style="color: #CCC;">&#41;</span> <span style="color: #CCC;">!=</span> this_node<span style="color: #CCC;">-&gt;</span>m_nodes.<span style="color: #FFF;">end</span><span style="color: #CCC;">&#40;</span><span style="color: #CCC;">&#41;</span><span style="color: #CCC;">&#41;</span>
					<span style="color: #CCC;">&#123;</span>
						possible_matches.<span style="color: #FFF;">push</span><span style="color: #CCC;">&#40;</span>this_node<span style="color: #CCC;">-&gt;</span>m_nodes<span style="color: #CCC;">&#91;</span>ch<span style="color: #CCC;">&#93;</span><span style="color: #CCC;">&#41;</span><span style="color: #CCC;">;</span>
					<span style="color: #CCC;">&#125;</span>
				<span style="color: #CCC;">&#125;</span>
			<span style="color: #CCC;">&#125;</span>
		<span style="color: #CCC;">&#125;</span>
		<span style="color: #996699;">cout</span> <span style="color: #CCC;">&lt;&lt;</span> <span style="color: #7ACC00;">&quot;Case #&quot;</span> <span style="color: #CCC;">&lt;&lt;</span> n <span style="color: #CCC;">+</span> <span style="color: #FFCC00;">1</span> <span style="color: #CCC;">&lt;&lt;</span> <span style="color: #7ACC00;">&quot;: &quot;</span> <span style="color: #CCC;">&lt;&lt;</span> possible_matches.<span style="color: #FFF;">size</span><span style="color: #CCC;">&#40;</span><span style="color: #CCC;">&#41;</span> <span style="color: #CCC;">&lt;&lt;</span> endl<span style="color: #CCC;">;</span>
	<span style="color: #CCC;">&#125;</span>
	<span style="color: #3D9EDD;">return</span> <span style="color: #FFCC00;">0</span><span style="color: #CCC;">;</span>
<span style="color: #CCC;">&#125;</span></pre></div></div></div>

<h6>问题2</h6>

<div class="wp_syntax_wrapper"><span class="wp_syntax_lang">C</span><div class="wp_syntax" style="background:#2c2c2c; overflow:auto"><div class="code"><pre class="c" style="color: #FFF; font-family:&quot;Consolas&quot;,monospace,&quot;Courier New&quot;"><span style="color: #33CC66;">#include &lt;iostream&gt;</span>
<span style="color: #33CC66;">#include &lt;string&gt;</span>
<span style="color: #33CC66;">#include &lt;fstream&gt;</span>
&nbsp;
using namespace std<span style="color: #CCC;">;</span>
&nbsp;
<span style="color: #33CC66;">#define MAX_H	100;</span>
<span style="color: #33CC66;">#define MAX_W	100;</span>
&nbsp;
ifstream fin<span style="color: #CCC;">&#40;</span><span style="color: #7ACC00;">&quot;C:<span style="color: #99FF00;">\\</span>B-large.in&quot;</span><span style="color: #CCC;">&#41;</span><span style="color: #CCC;">;</span>
ofstream fout<span style="color: #CCC;">&#40;</span><span style="color: #7ACC00;">&quot;C:<span style="color: #99FF00;">\\</span>B-large.out&quot;</span><span style="color: #CCC;">&#41;</span><span style="color: #CCC;">;</span>
&nbsp;
<span style="color: #33CC66;">#define cin fin</span>
<span style="color: #33CC66;">#define cout fout</span>
&nbsp;
<span style="color: #99FFFF;">int</span> map<span style="color: #CCC;">&#91;</span><span style="color: #FFCC00;">100</span><span style="color: #CCC;">&#93;</span><span style="color: #CCC;">&#91;</span><span style="color: #FFCC00;">100</span><span style="color: #CCC;">&#93;</span> <span style="color: #CCC;">=</span> <span style="color: #CCC;">&#123;</span><span style="color: #FFCC00;">0</span><span style="color: #CCC;">&#125;</span><span style="color: #CCC;">;</span>
<span style="color: #99FFFF;">char</span> mark<span style="color: #CCC;">&#91;</span><span style="color: #FFCC00;">100</span><span style="color: #CCC;">&#93;</span><span style="color: #CCC;">&#91;</span><span style="color: #FFCC00;">100</span><span style="color: #CCC;">&#93;</span> <span style="color: #CCC;">=</span> <span style="color: #CCC;">&#123;</span><span style="color: #FFCC00;">0</span><span style="color: #CCC;">&#125;</span><span style="color: #CCC;">;</span>
&nbsp;
<span style="color: #99FFFF;">int</span> W<span style="color: #CCC;">;</span>
<span style="color: #99FFFF;">int</span> H<span style="color: #CCC;">;</span>
&nbsp;
<span style="color: #99FFFF;">char</span> ch_mark<span style="color: #CCC;">;</span>
&nbsp;
<span style="color: #99FFFF;">int</span> rec_mark<span style="color: #CCC;">&#40;</span><span style="color: #99FFFF;">int</span> r<span style="color: #CCC;">,</span> <span style="color: #99FFFF;">int</span> c<span style="color: #CCC;">&#41;</span>
<span style="color: #CCC;">&#123;</span>
	<span style="color: #3D9EDD;">if</span> <span style="color: #CCC;">&#40;</span>mark<span style="color: #CCC;">&#91;</span>r<span style="color: #CCC;">&#93;</span><span style="color: #CCC;">&#91;</span>c<span style="color: #CCC;">&#93;</span> <span style="color: #CCC;">!=</span> <span style="color: #FFCC00;">0</span><span style="color: #CCC;">&#41;</span>
	<span style="color: #CCC;">&#123;</span>
		<span style="color: #3D9EDD;">return</span> mark<span style="color: #CCC;">&#91;</span>r<span style="color: #CCC;">&#93;</span><span style="color: #CCC;">&#91;</span>c<span style="color: #CCC;">&#93;</span><span style="color: #CCC;">;</span>
	<span style="color: #CCC;">&#125;</span>
	<span style="color: #3D9EDD;">else</span>
	<span style="color: #CCC;">&#123;</span>
		<span style="color: #999;">// Calculate diff of altitude</span>
		<span style="color: #99FFFF;">int</span> up<span style="color: #CCC;">,</span> left<span style="color: #CCC;">,</span> right<span style="color: #CCC;">,</span> down<span style="color: #CCC;">;</span>
		up <span style="color: #CCC;">=</span> left <span style="color: #CCC;">=</span> right <span style="color: #CCC;">=</span> down <span style="color: #CCC;">=</span> <span style="color: #CCC;">-</span><span style="color: #FFCC00;">1</span><span style="color: #CCC;">;</span>
		<span style="color: #3D9EDD;">if</span> <span style="color: #CCC;">&#40;</span>r <span style="color: #CCC;">&gt;</span> <span style="color: #FFCC00;">0</span><span style="color: #CCC;">&#41;</span>
		<span style="color: #CCC;">&#123;</span>
			up <span style="color: #CCC;">=</span> map<span style="color: #CCC;">&#91;</span>r<span style="color: #CCC;">&#93;</span><span style="color: #CCC;">&#91;</span>c<span style="color: #CCC;">&#93;</span> <span style="color: #CCC;">-</span> map<span style="color: #CCC;">&#91;</span>r<span style="color: #CCC;">-</span><span style="color: #FFCC00;">1</span><span style="color: #CCC;">&#93;</span><span style="color: #CCC;">&#91;</span>c<span style="color: #CCC;">&#93;</span><span style="color: #CCC;">;</span>
		<span style="color: #CCC;">&#125;</span>
		<span style="color: #3D9EDD;">if</span> <span style="color: #CCC;">&#40;</span>c <span style="color: #CCC;">&gt;</span> <span style="color: #FFCC00;">0</span><span style="color: #CCC;">&#41;</span>
		<span style="color: #CCC;">&#123;</span>
			left <span style="color: #CCC;">=</span> map<span style="color: #CCC;">&#91;</span>r<span style="color: #CCC;">&#93;</span><span style="color: #CCC;">&#91;</span>c<span style="color: #CCC;">&#93;</span> <span style="color: #CCC;">-</span> map<span style="color: #CCC;">&#91;</span>r<span style="color: #CCC;">&#93;</span><span style="color: #CCC;">&#91;</span>c<span style="color: #CCC;">-</span><span style="color: #FFCC00;">1</span><span style="color: #CCC;">&#93;</span><span style="color: #CCC;">;</span>
		<span style="color: #CCC;">&#125;</span>
		<span style="color: #3D9EDD;">if</span> <span style="color: #CCC;">&#40;</span>c <span style="color: #CCC;">&lt;</span> W <span style="color: #CCC;">-</span> <span style="color: #FFCC00;">1</span><span style="color: #CCC;">&#41;</span>
		<span style="color: #CCC;">&#123;</span>
			right <span style="color: #CCC;">=</span> map<span style="color: #CCC;">&#91;</span>r<span style="color: #CCC;">&#93;</span><span style="color: #CCC;">&#91;</span>c<span style="color: #CCC;">&#93;</span> <span style="color: #CCC;">-</span> map<span style="color: #CCC;">&#91;</span>r<span style="color: #CCC;">&#93;</span><span style="color: #CCC;">&#91;</span>c<span style="color: #CCC;">+</span><span style="color: #FFCC00;">1</span><span style="color: #CCC;">&#93;</span><span style="color: #CCC;">;</span>
		<span style="color: #CCC;">&#125;</span>
		<span style="color: #3D9EDD;">if</span> <span style="color: #CCC;">&#40;</span>r <span style="color: #CCC;">&lt;</span> H <span style="color: #CCC;">-</span> <span style="color: #FFCC00;">1</span><span style="color: #CCC;">&#41;</span>
		<span style="color: #CCC;">&#123;</span>
			down <span style="color: #CCC;">=</span> map<span style="color: #CCC;">&#91;</span>r<span style="color: #CCC;">&#93;</span><span style="color: #CCC;">&#91;</span>c<span style="color: #CCC;">&#93;</span> <span style="color: #CCC;">-</span> map<span style="color: #CCC;">&#91;</span>r<span style="color: #CCC;">+</span><span style="color: #FFCC00;">1</span><span style="color: #CCC;">&#93;</span><span style="color: #CCC;">&#91;</span>c<span style="color: #CCC;">&#93;</span><span style="color: #CCC;">;</span>
		<span style="color: #CCC;">&#125;</span>
		<span style="color: #3D9EDD;">if</span> <span style="color: #CCC;">&#40;</span>up <span style="color: #CCC;">&lt;=</span> <span style="color: #FFCC00;">0</span> <span style="color: #CCC;">&amp;&amp;</span> left <span style="color: #CCC;">&lt;=</span> <span style="color: #FFCC00;">0</span> <span style="color: #CCC;">&amp;&amp;</span> right <span style="color: #CCC;">&lt;=</span> <span style="color: #FFCC00;">0</span> <span style="color: #CCC;">&amp;&amp;</span> down <span style="color: #CCC;">&lt;=</span> <span style="color: #FFCC00;">0</span><span style="color: #CCC;">&#41;</span>
		<span style="color: #CCC;">&#123;</span>
			<span style="color: #999;">// Sink</span>
			mark<span style="color: #CCC;">&#91;</span>r<span style="color: #CCC;">&#93;</span><span style="color: #CCC;">&#91;</span>c<span style="color: #CCC;">&#93;</span> <span style="color: #CCC;">=</span> ch_mark<span style="color: #CCC;">;</span>
			ch_mark<span style="color: #CCC;">++;</span>
		<span style="color: #CCC;">&#125;</span>
		<span style="color: #3D9EDD;">else</span>
		<span style="color: #CCC;">&#123;</span>
			<span style="color: #999;">// Find the flow direction</span>
			<span style="color: #99FFFF;">int</span> max_diff <span style="color: #CCC;">=</span> up<span style="color: #CCC;">;</span>
			<span style="color: #99FFFF;">int</span> dr <span style="color: #CCC;">=</span> <span style="color: #CCC;">-</span><span style="color: #FFCC00;">1</span><span style="color: #CCC;">;</span> <span style="color: #99FFFF;">int</span> dc <span style="color: #CCC;">=</span> <span style="color: #FFCC00;">0</span><span style="color: #CCC;">;</span>
			<span style="color: #3D9EDD;">if</span> <span style="color: #CCC;">&#40;</span>left <span style="color: #CCC;">&gt;</span> max_diff<span style="color: #CCC;">&#41;</span>
			<span style="color: #CCC;">&#123;</span>
				max_diff <span style="color: #CCC;">=</span> left<span style="color: #CCC;">;</span>
				dr <span style="color: #CCC;">=</span> <span style="color: #FFCC00;">0</span><span style="color: #CCC;">;</span> dc <span style="color: #CCC;">=</span> <span style="color: #CCC;">-</span><span style="color: #FFCC00;">1</span><span style="color: #CCC;">;</span>
			<span style="color: #CCC;">&#125;</span>
			<span style="color: #3D9EDD;">if</span> <span style="color: #CCC;">&#40;</span>right <span style="color: #CCC;">&gt;</span> max_diff<span style="color: #CCC;">&#41;</span>
			<span style="color: #CCC;">&#123;</span>
				max_diff <span style="color: #CCC;">=</span> right<span style="color: #CCC;">;</span>
				dr <span style="color: #CCC;">=</span> <span style="color: #FFCC00;">0</span><span style="color: #CCC;">;</span> dc <span style="color: #CCC;">=</span> <span style="color: #FFCC00;">1</span><span style="color: #CCC;">;</span>
			<span style="color: #CCC;">&#125;</span>
			<span style="color: #3D9EDD;">if</span> <span style="color: #CCC;">&#40;</span>down <span style="color: #CCC;">&gt;</span> max_diff<span style="color: #CCC;">&#41;</span>
			<span style="color: #CCC;">&#123;</span>
				dr <span style="color: #CCC;">=</span> <span style="color: #FFCC00;">1</span><span style="color: #CCC;">;</span> dc <span style="color: #CCC;">=</span> <span style="color: #FFCC00;">0</span><span style="color: #CCC;">;</span>
			<span style="color: #CCC;">&#125;</span>
			<span style="color: #3D9EDD;">if</span> <span style="color: #CCC;">&#40;</span>mark<span style="color: #CCC;">&#91;</span>r <span style="color: #CCC;">+</span> dr<span style="color: #CCC;">&#93;</span><span style="color: #CCC;">&#91;</span>c <span style="color: #CCC;">+</span> dc<span style="color: #CCC;">&#93;</span> <span style="color: #CCC;">!=</span> <span style="color: #FFCC00;">0</span><span style="color: #CCC;">&#41;</span>
			<span style="color: #CCC;">&#123;</span>
				mark<span style="color: #CCC;">&#91;</span>r<span style="color: #CCC;">&#93;</span><span style="color: #CCC;">&#91;</span>c<span style="color: #CCC;">&#93;</span> <span style="color: #CCC;">=</span> mark<span style="color: #CCC;">&#91;</span>r <span style="color: #CCC;">+</span> dr<span style="color: #CCC;">&#93;</span><span style="color: #CCC;">&#91;</span>c <span style="color: #CCC;">+</span> dc<span style="color: #CCC;">&#93;</span><span style="color: #CCC;">;</span>
			<span style="color: #CCC;">&#125;</span>
			<span style="color: #3D9EDD;">else</span>
			<span style="color: #CCC;">&#123;</span>
				mark<span style="color: #CCC;">&#91;</span>r<span style="color: #CCC;">&#93;</span><span style="color: #CCC;">&#91;</span>c<span style="color: #CCC;">&#93;</span> <span style="color: #CCC;">=</span> rec_mark<span style="color: #CCC;">&#40;</span>r <span style="color: #CCC;">+</span> dr<span style="color: #CCC;">,</span> c <span style="color: #CCC;">+</span> dc<span style="color: #CCC;">&#41;</span><span style="color: #CCC;">;</span>
			<span style="color: #CCC;">&#125;</span>
		<span style="color: #CCC;">&#125;</span>
		<span style="color: #3D9EDD;">return</span> mark<span style="color: #CCC;">&#91;</span>r<span style="color: #CCC;">&#93;</span><span style="color: #CCC;">&#91;</span>c<span style="color: #CCC;">&#93;</span><span style="color: #CCC;">;</span>
	<span style="color: #CCC;">&#125;</span>
<span style="color: #CCC;">&#125;</span>
&nbsp;
<span style="color: #99FFFF;">int</span> main<span style="color: #CCC;">&#40;</span><span style="color: #CCC;">&#41;</span>
<span style="color: #CCC;">&#123;</span>
	<span style="color: #99FFFF;">int</span> N<span style="color: #CCC;">;</span>
	cin <span style="color: #CCC;">&gt;&gt;</span> N<span style="color: #CCC;">;</span>
&nbsp;
	<span style="color: #3D9EDD;">for</span> <span style="color: #CCC;">&#40;</span><span style="color: #99FFFF;">int</span> n <span style="color: #CCC;">=</span> <span style="color: #FFCC00;">0</span><span style="color: #CCC;">;</span> n <span style="color: #CCC;">&lt;</span> N<span style="color: #CCC;">;</span> <span style="color: #CCC;">++</span>n<span style="color: #CCC;">&#41;</span>
	<span style="color: #CCC;">&#123;</span>
		ch_mark <span style="color: #CCC;">=</span> <span style="color: #7ACC00;">'a'</span><span style="color: #CCC;">;</span>
		<span style="color: #99FFFF;">int</span> a<span style="color: #CCC;">;</span>
		cin <span style="color: #CCC;">&gt;&gt;</span> H <span style="color: #CCC;">&gt;&gt;</span> W<span style="color: #CCC;">;</span>
		<span style="color: #3D9EDD;">for</span> <span style="color: #CCC;">&#40;</span><span style="color: #99FFFF;">int</span> i <span style="color: #CCC;">=</span> <span style="color: #FFCC00;">0</span><span style="color: #CCC;">;</span> i <span style="color: #CCC;">&lt;</span> H<span style="color: #CCC;">;</span> <span style="color: #CCC;">++</span>i<span style="color: #CCC;">&#41;</span>
		<span style="color: #CCC;">&#123;</span>
			<span style="color: #3D9EDD;">for</span> <span style="color: #CCC;">&#40;</span><span style="color: #99FFFF;">int</span> j <span style="color: #CCC;">=</span> <span style="color: #FFCC00;">0</span><span style="color: #CCC;">;</span> j <span style="color: #CCC;">&lt;</span> W<span style="color: #CCC;">;</span> <span style="color: #CCC;">++</span>j<span style="color: #CCC;">&#41;</span>
			<span style="color: #CCC;">&#123;</span>
				cin <span style="color: #CCC;">&gt;&gt;</span> a<span style="color: #CCC;">;</span>
				map<span style="color: #CCC;">&#91;</span>i<span style="color: #CCC;">&#93;</span><span style="color: #CCC;">&#91;</span>j<span style="color: #CCC;">&#93;</span> <span style="color: #CCC;">=</span> a<span style="color: #CCC;">;</span>
				mark<span style="color: #CCC;">&#91;</span>i<span style="color: #CCC;">&#93;</span><span style="color: #CCC;">&#91;</span>j<span style="color: #CCC;">&#93;</span> <span style="color: #CCC;">=</span> <span style="color: #FFCC00;">0</span><span style="color: #CCC;">;</span>
			<span style="color: #CCC;">&#125;</span>
		<span style="color: #CCC;">&#125;</span>
		<span style="color: #999;">// Look for next cell to eval</span>
		<span style="color: #3D9EDD;">for</span> <span style="color: #CCC;">&#40;</span><span style="color: #99FFFF;">int</span> r <span style="color: #CCC;">=</span> <span style="color: #FFCC00;">0</span><span style="color: #CCC;">;</span> r <span style="color: #CCC;">&lt;</span> H<span style="color: #CCC;">;</span> r<span style="color: #CCC;">++</span><span style="color: #CCC;">&#41;</span>
		<span style="color: #CCC;">&#123;</span>
			<span style="color: #3D9EDD;">for</span> <span style="color: #CCC;">&#40;</span><span style="color: #99FFFF;">int</span> c <span style="color: #CCC;">=</span> <span style="color: #FFCC00;">0</span><span style="color: #CCC;">;</span> c <span style="color: #CCC;">&lt;</span> W<span style="color: #CCC;">;</span> c<span style="color: #CCC;">++</span><span style="color: #CCC;">&#41;</span>
			<span style="color: #CCC;">&#123;</span>
				<span style="color: #3D9EDD;">if</span> <span style="color: #CCC;">&#40;</span>mark<span style="color: #CCC;">&#91;</span>r<span style="color: #CCC;">&#93;</span><span style="color: #CCC;">&#91;</span>c<span style="color: #CCC;">&#93;</span> <span style="color: #CCC;">==</span> <span style="color: #FFCC00;">0</span><span style="color: #CCC;">&#41;</span>
				<span style="color: #CCC;">&#123;</span>
					rec_mark<span style="color: #CCC;">&#40;</span>r<span style="color: #CCC;">,</span> c<span style="color: #CCC;">&#41;</span><span style="color: #CCC;">;</span>
				<span style="color: #CCC;">&#125;</span>
			<span style="color: #CCC;">&#125;</span>
		<span style="color: #CCC;">&#125;</span>
		<span style="color: #996699;">cout</span> <span style="color: #CCC;">&lt;&lt;</span> <span style="color: #7ACC00;">&quot;Case #&quot;</span> <span style="color: #CCC;">&lt;&lt;</span> n <span style="color: #CCC;">+</span> <span style="color: #FFCC00;">1</span> <span style="color: #CCC;">&lt;&lt;</span> <span style="color: #7ACC00;">&quot;:&quot;</span> <span style="color: #CCC;">&lt;&lt;</span> endl<span style="color: #CCC;">;</span>
		<span style="color: #3D9EDD;">for</span> <span style="color: #CCC;">&#40;</span><span style="color: #99FFFF;">int</span> r <span style="color: #CCC;">=</span> <span style="color: #FFCC00;">0</span><span style="color: #CCC;">;</span> r <span style="color: #CCC;">&lt;</span> H<span style="color: #CCC;">;</span> r<span style="color: #CCC;">++</span><span style="color: #CCC;">&#41;</span>
		<span style="color: #CCC;">&#123;</span>
			<span style="color: #3D9EDD;">for</span> <span style="color: #CCC;">&#40;</span><span style="color: #99FFFF;">int</span> c <span style="color: #CCC;">=</span> <span style="color: #FFCC00;">0</span><span style="color: #CCC;">;</span> c <span style="color: #CCC;">&lt;</span> W<span style="color: #CCC;">;</span> c<span style="color: #CCC;">++</span><span style="color: #CCC;">&#41;</span>
			<span style="color: #CCC;">&#123;</span>
				<span style="color: #996699;">cout</span> <span style="color: #CCC;">&lt;&lt;</span> mark<span style="color: #CCC;">&#91;</span>r<span style="color: #CCC;">&#93;</span><span style="color: #CCC;">&#91;</span>c<span style="color: #CCC;">&#93;</span> <span style="color: #CCC;">&lt;&lt;</span> <span style="color: #7ACC00;">' '</span><span style="color: #CCC;">;</span>
			<span style="color: #CCC;">&#125;</span>
			<span style="color: #996699;">cout</span> <span style="color: #CCC;">&lt;&lt;</span> endl<span style="color: #CCC;">;</span>
		<span style="color: #CCC;">&#125;</span>
	<span style="color: #CCC;">&#125;</span>
	<span style="color: #3D9EDD;">return</span> <span style="color: #FFCC00;">0</span><span style="color: #CCC;">;</span>
<span style="color: #CCC;">&#125;</span></pre></div></div></div>

<h6>问题3</h6>

<div class="wp_syntax_wrapper"><span class="wp_syntax_lang">C</span><div class="wp_syntax" style="background:#2c2c2c; overflow:auto"><div class="code"><pre class="c" style="color: #FFF; font-family:&quot;Consolas&quot;,monospace,&quot;Courier New&quot;"><span style="color: #33CC66;">#include &lt;iostream&gt;</span>
<span style="color: #33CC66;">#include &lt;string&gt;</span>
<span style="color: #33CC66;">#include &lt;fstream&gt;</span>
&nbsp;
using namespace std<span style="color: #CCC;">;</span>
&nbsp;
<span style="color: #99FFFF;">int</span> n_src<span style="color: #CCC;">;</span>
string src<span style="color: #CCC;">;</span>
<span style="color: #99FFFF;">const</span> <span style="color: #99FFFF;">int</span> n_ptrn <span style="color: #CCC;">=</span> <span style="color: #FFCC00;">19</span><span style="color: #CCC;">;</span>
<span style="color: #99FFFF;">const</span> string ptrn <span style="color: #CCC;">=</span> <span style="color: #7ACC00;">&quot;welcome to code jam&quot;</span><span style="color: #CCC;">;</span>
&nbsp;
ifstream fin<span style="color: #CCC;">&#40;</span><span style="color: #7ACC00;">&quot;C:<span style="color: #99FF00;">\\</span>C-small-attempt0.in&quot;</span><span style="color: #CCC;">&#41;</span><span style="color: #CCC;">;</span>
&nbsp;
<span style="color: #33CC66;">#define cin fin</span>
&nbsp;
FILE <span style="color: #CCC;">*</span>file<span style="color: #CCC;">;</span>
&nbsp;
<span style="color: #99FFFF;">int</span> tbl<span style="color: #CCC;">&#91;</span><span style="color: #FFCC00;">512</span><span style="color: #CCC;">&#93;</span><span style="color: #CCC;">&#91;</span><span style="color: #FFCC00;">32</span><span style="color: #CCC;">&#93;</span><span style="color: #CCC;">;</span>
&nbsp;
<span style="color: #99FFFF;">int</span> find_substring<span style="color: #CCC;">&#40;</span><span style="color: #99FFFF;">const</span> <span style="color: #99FFFF;">int</span> s_src<span style="color: #CCC;">,</span> <span style="color: #99FFFF;">const</span> <span style="color: #99FFFF;">int</span> s_ptrn<span style="color: #CCC;">&#41;</span>
<span style="color: #CCC;">&#123;</span>
	<span style="color: #3D9EDD;">if</span> <span style="color: #CCC;">&#40;</span>tbl<span style="color: #CCC;">&#91;</span>s_src<span style="color: #CCC;">&#93;</span><span style="color: #CCC;">&#91;</span>s_ptrn<span style="color: #CCC;">&#93;</span> <span style="color: #CCC;">!=</span> <span style="color: #CCC;">-</span><span style="color: #FFCC00;">1</span><span style="color: #CCC;">&#41;</span>
	<span style="color: #CCC;">&#123;</span>
		<span style="color: #3D9EDD;">return</span> tbl<span style="color: #CCC;">&#91;</span>s_src<span style="color: #CCC;">&#93;</span><span style="color: #CCC;">&#91;</span>s_ptrn<span style="color: #CCC;">&#93;</span><span style="color: #CCC;">;</span>
	<span style="color: #CCC;">&#125;</span>
	<span style="color: #3D9EDD;">if</span> <span style="color: #CCC;">&#40;</span>n_src <span style="color: #CCC;">-</span> s_src <span style="color: #CCC;">&lt;</span> n_ptrn <span style="color: #CCC;">-</span> s_ptrn<span style="color: #CCC;">&#41;</span>
	<span style="color: #CCC;">&#123;</span>
		tbl<span style="color: #CCC;">&#91;</span>s_src<span style="color: #CCC;">&#93;</span><span style="color: #CCC;">&#91;</span>s_ptrn<span style="color: #CCC;">&#93;</span> <span style="color: #CCC;">=</span> <span style="color: #FFCC00;">0</span><span style="color: #CCC;">;</span>
		<span style="color: #3D9EDD;">return</span> <span style="color: #FFCC00;">0</span><span style="color: #CCC;">;</span>
	<span style="color: #CCC;">&#125;</span>
	<span style="color: #3D9EDD;">if</span> <span style="color: #CCC;">&#40;</span>n_src <span style="color: #CCC;">-</span> s_src <span style="color: #CCC;">==</span> n_ptrn <span style="color: #CCC;">-</span> s_ptrn<span style="color: #CCC;">&#41;</span>
	<span style="color: #CCC;">&#123;</span>
		string sub_src <span style="color: #CCC;">=</span> src.<span style="color: #FFF;">substr</span><span style="color: #CCC;">&#40;</span>s_src<span style="color: #CCC;">,</span> n_src <span style="color: #CCC;">-</span> s_src<span style="color: #CCC;">&#41;</span><span style="color: #CCC;">;</span>
		string sub_ptrn <span style="color: #CCC;">=</span> ptrn.<span style="color: #FFF;">substr</span><span style="color: #CCC;">&#40;</span>s_ptrn<span style="color: #CCC;">,</span> n_ptrn <span style="color: #CCC;">-</span> s_ptrn<span style="color: #CCC;">&#41;</span><span style="color: #CCC;">;</span>
		tbl<span style="color: #CCC;">&#91;</span>s_src<span style="color: #CCC;">&#93;</span><span style="color: #CCC;">&#91;</span>s_ptrn<span style="color: #CCC;">&#93;</span> <span style="color: #CCC;">=</span> <span style="color: #CCC;">&#40;</span>sub_src <span style="color: #CCC;">==</span> sub_ptrn<span style="color: #CCC;">&#41;</span> <span style="color: #CCC;">?</span> <span style="color: #FFCC00;">1</span> <span style="color: #CCC;">:</span> <span style="color: #FFCC00;">0</span><span style="color: #CCC;">;</span>
		<span style="color: #3D9EDD;">return</span> tbl<span style="color: #CCC;">&#91;</span>s_src<span style="color: #CCC;">&#93;</span><span style="color: #CCC;">&#91;</span>s_ptrn<span style="color: #CCC;">&#93;</span><span style="color: #CCC;">;</span>
	<span style="color: #CCC;">&#125;</span>
	<span style="color: #99FFFF;">int</span> total <span style="color: #CCC;">=</span> <span style="color: #FFCC00;">0</span><span style="color: #CCC;">;</span>
	<span style="color: #999;">// Skip current char</span>
	total <span style="color: #CCC;">+=</span> find_substring<span style="color: #CCC;">&#40;</span>s_src<span style="color: #CCC;">+</span><span style="color: #FFCC00;">1</span><span style="color: #CCC;">,</span> s_ptrn<span style="color: #CCC;">&#41;</span><span style="color: #CCC;">;</span>
	total <span style="color: #CCC;">%=</span> <span style="color: #FFCC00;">10000</span><span style="color: #CCC;">;</span>
	<span style="color: #999;">// If current char matches</span>
	<span style="color: #3D9EDD;">if</span> <span style="color: #CCC;">&#40;</span>src<span style="color: #CCC;">&#91;</span>s_src<span style="color: #CCC;">&#93;</span> <span style="color: #CCC;">==</span> ptrn<span style="color: #CCC;">&#91;</span>s_ptrn<span style="color: #CCC;">&#93;</span><span style="color: #CCC;">&#41;</span>
	<span style="color: #CCC;">&#123;</span>
		total <span style="color: #CCC;">+=</span> find_substring<span style="color: #CCC;">&#40;</span>s_src<span style="color: #CCC;">+</span><span style="color: #FFCC00;">1</span><span style="color: #CCC;">,</span> s_ptrn<span style="color: #CCC;">+</span><span style="color: #FFCC00;">1</span><span style="color: #CCC;">&#41;</span><span style="color: #CCC;">;</span>
		total <span style="color: #CCC;">%=</span> <span style="color: #FFCC00;">10000</span><span style="color: #CCC;">;</span>
	<span style="color: #CCC;">&#125;</span>
	tbl<span style="color: #CCC;">&#91;</span>s_src<span style="color: #CCC;">&#93;</span><span style="color: #CCC;">&#91;</span>s_ptrn<span style="color: #CCC;">&#93;</span> <span style="color: #CCC;">=</span> total<span style="color: #CCC;">;</span>
	<span style="color: #3D9EDD;">return</span> total<span style="color: #CCC;">;</span>
<span style="color: #CCC;">&#125;</span>
&nbsp;
<span style="color: #99FFFF;">int</span> main<span style="color: #CCC;">&#40;</span><span style="color: #CCC;">&#41;</span>
<span style="color: #CCC;">&#123;</span>
	file <span style="color: #CCC;">=</span> fopen<span style="color: #CCC;">&#40;</span><span style="color: #7ACC00;">&quot;C:<span style="color: #99FF00;">\\</span>a.out&quot;</span><span style="color: #CCC;">,</span> <span style="color: #7ACC00;">&quot;w&quot;</span><span style="color: #CCC;">&#41;</span><span style="color: #CCC;">;</span>
	<span style="color: #99FFFF;">int</span> N<span style="color: #CCC;">;</span>
	cin <span style="color: #CCC;">&gt;&gt;</span> N<span style="color: #CCC;">;</span>
	getline<span style="color: #CCC;">&#40;</span>cin<span style="color: #CCC;">,</span> src<span style="color: #CCC;">&#41;</span><span style="color: #CCC;">;</span>
	<span style="color: #3D9EDD;">for</span> <span style="color: #CCC;">&#40;</span><span style="color: #99FFFF;">int</span> n <span style="color: #CCC;">=</span> <span style="color: #FFCC00;">0</span><span style="color: #CCC;">;</span> n <span style="color: #CCC;">&lt;</span> N<span style="color: #CCC;">;</span> <span style="color: #CCC;">++</span>n<span style="color: #CCC;">&#41;</span>
	<span style="color: #CCC;">&#123;</span>
		getline<span style="color: #CCC;">&#40;</span>cin<span style="color: #CCC;">,</span> src<span style="color: #CCC;">&#41;</span><span style="color: #CCC;">;</span>
		memset<span style="color: #CCC;">&#40;</span>tbl<span style="color: #CCC;">,</span> <span style="color: #CCC;">-</span><span style="color: #FFCC00;">1</span><span style="color: #CCC;">,</span> <span style="color: #99FFFF;">sizeof</span><span style="color: #CCC;">&#40;</span>tbl<span style="color: #CCC;">&#41;</span><span style="color: #CCC;">&#41;</span><span style="color: #CCC;">;</span>
		n_src <span style="color: #CCC;">=</span> src.<span style="color: #FFF;">length</span><span style="color: #CCC;">&#40;</span><span style="color: #CCC;">&#41;</span><span style="color: #CCC;">;</span>
		<span style="color: #99FFFF;">int</span> cnt <span style="color: #CCC;">=</span> find_substring<span style="color: #CCC;">&#40;</span><span style="color: #FFCC00;">0</span><span style="color: #CCC;">,</span> <span style="color: #FFCC00;">0</span><span style="color: #CCC;">&#41;</span><span style="color: #CCC;">;</span>
		fprintf<span style="color: #CCC;">&#40;</span>file<span style="color: #CCC;">,</span> <span style="color: #7ACC00;">&quot;Case #%d: %04d<span style="color: #99FF00;">\n</span>&quot;</span><span style="color: #CCC;">,</span> n<span style="color: #CCC;">+</span><span style="color: #FFCC00;">1</span><span style="color: #CCC;">,</span> cnt<span style="color: #CCC;">&#41;</span><span style="color: #CCC;">;</span>
	<span style="color: #CCC;">&#125;</span>
	<span style="color: #3D9EDD;">return</span> <span style="color: #FFCC00;">0</span><span style="color: #CCC;">;</span>
<span style="color: #CCC;">&#125;</span></pre></div></div></div>

<div class="feed-after" style="margin:15px 0; clear:both;"><a href="http://lync.in">Lync.in</a> 是一个多人协作博客，欢迎您 <a href="http://lync.in/code-jam-qualification-lol/">查看原文</a> 以获得更好的阅读体验。</div>]]></content:encoded>
			<wfw:commentRss>http://lync.in/code-jam-qualification-lol/feed/</wfw:commentRss>
		<slash:comments>11</slash:comments>
		</item>
	</channel>
</rss>

