<?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>潘锦的空间 &#187; 迎春舞会之集体舞</title>
	<atom:link href="https://www.phppan.com/tag/%e8%bf%8e%e6%98%a5%e8%88%9e%e4%bc%9a%e4%b9%8b%e9%9b%86%e4%bd%93%e8%88%9e/feed/" rel="self" type="application/rss+xml" />
	<link>https://www.phppan.com</link>
	<description>SaaS SaaS架构 团队管理 技术管理 技术架构 PHP 内核 扩展 项目管理</description>
	<lastBuildDate>Sat, 25 Apr 2026 00:56:17 +0000</lastBuildDate>
	<language>zh-CN</language>
		<sy:updatePeriod>hourly</sy:updatePeriod>
		<sy:updateFrequency>1</sy:updateFrequency>
	<generator>https://wordpress.org/?v=3.9.40</generator>
	<item>
		<title>迎春舞会之集体舞</title>
		<link>https://www.phppan.com/2009/09/new-year-dance/</link>
		<comments>https://www.phppan.com/2009/09/new-year-dance/#comments</comments>
		<pubDate>Wed, 30 Sep 2009 04:17:13 +0000</pubDate>
		<dc:creator><![CDATA[admin]]></dc:creator>
				<category><![CDATA[程序相关]]></category>
		<category><![CDATA[ACM]]></category>
		<category><![CDATA[DP]]></category>
		<category><![CDATA[dynamic programming]]></category>
		<category><![CDATA[动态规划]]></category>
		<category><![CDATA[迎春舞会之集体舞]]></category>

		<guid isPermaLink="false">http://www.phppan.com/?p=70</guid>
		<description><![CDATA[【问题描述】 背景 Background 　　HNSDFZ的同学们为了庆祝春节，准备排练一场舞会。 【描述 D [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>【问题描述】<br />
背景 Background<br />
   　　HNSDFZ的同学们为了庆祝春节，准备排练一场舞会。<br />
【描述 Description 】<br />
   　　表演者排成n排，构成一个向前的正三角形（在屏幕上,即向下）。而就每个人，他有可能正面朝前（小的向前正三角形）、或向后三角形（小的向后正三角形）。<br />
　　然而这些人在服装上有明显区别——一部分穿冬季校服，其他的穿夏季校服。<br />
　　现在给出每个人的着衣情况，请你求穿夏季校服的同学所构成的最大正三角形,输出所含人数。</p>
<p>输入格式 Input Format<br />
   　　第一排为n。<br />
　　接下来n排，第i排有2*i-1个有效字符（‘#’或‘-’，分别表示此同学穿冬季校服或穿夏季校服）。输入文件中出现空格，且空格只是为了保持整个三角形的形状。</p>
<p>【输出格式 Output Format】<br />
   　　输出人数。 </p>
<p>【样例输入 Sample Input】<br />
5<br />
#-##&#8212;-#<br />
&#8212;&#8211;#-<br />
  &#8212;#-<br />
   -#-<br />
    -</p>
<p>样例输出 Sample Output<br />
   9</p>
<p>注释 Hint<br />
   n<=100

【算法分析】
对于三角形有两种情况：

尖向下时：
f1[i][j]+=min(f1[i-1][j-1],f1[i-1][j],f1[i-1][j+1])
尖向上时：

f2[i][j]+=min(f2[i+1][j-1],f2[i+1][j],f2[i+1][j-1])

而且一定要仔细看题目给的三角形
　　“他有可能正面朝前（小的向前正三角形）、或向后三角形（小的向后正三角形）”

注意几点：

1.尖向上的情况，只能是一行中的偶数个
2.尖向下的情况，只能是一行中的奇数个

代码



<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
</pre></td><td class="code"><pre class="c" style="font-family:monospace;"><span style="color: #339933;">#include &lt;stdio.h&gt;</span>
<span style="color: #339933;">#include &lt;string.h&gt;</span>
&nbsp;
<span style="color: #339933;">#define min(a,b) a&lt;b?a:b</span>
&nbsp;
<span style="color: #993333;">int</span> main<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>
<span style="color: #009900;">&#123;</span>
       <span style="color: #993333;">char</span> ch<span style="color: #009900;">&#91;</span><span style="color: #0000dd;">300</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#91;</span><span style="color: #0000dd;">300</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
       <span style="color: #993333;">int</span> f<span style="color: #009900;">&#91;</span><span style="color: #0000dd;">300</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#91;</span><span style="color: #0000dd;">300</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
       <span style="color: #993333;">int</span> n<span style="color: #339933;">,</span> i<span style="color: #339933;">,</span> j<span style="color: #339933;">,</span> k<span style="color: #339933;">,</span> flag<span style="color: #339933;">,</span> max <span style="color: #339933;">=</span> <span style="color: #0000dd;">1</span><span style="color: #339933;">,</span> len<span style="color: #339933;">;</span>
&nbsp;
       <span style="color: #000066;">scanf</span><span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;%d&quot;</span><span style="color: #339933;">,</span> <span style="color: #339933;">&amp;</span>n<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
       <span style="color: #000066;">getchar</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
       <span style="color: #b1b100;">for</span> <span style="color: #009900;">&#40;</span>i <span style="color: #339933;">=</span> <span style="color: #0000dd;">0</span><span style="color: #339933;">;</span> i <span style="color: #339933;">&lt;</span> n<span style="color: #339933;">;</span> i<span style="color: #339933;">++</span><span style="color: #009900;">&#41;</span>
       <span style="color: #009900;">&#123;</span>
              <span style="color: #000066;">gets</span><span style="color: #009900;">&#40;</span>ch<span style="color: #009900;">&#91;</span>i<span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
       <span style="color: #009900;">&#125;</span>
&nbsp;
       <span style="color: #000066;">memset</span><span style="color: #009900;">&#40;</span>f<span style="color: #339933;">,</span> <span style="color: #0000dd;">0</span><span style="color: #339933;">,</span> <span style="color: #993333;">sizeof</span><span style="color: #009900;">&#40;</span>f<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
       j <span style="color: #339933;">=</span> <span style="color: #0000dd;">0</span><span style="color: #339933;">;</span>
&nbsp;
       <span style="color: #b1b100;">while</span> <span style="color: #009900;">&#40;</span>ch<span style="color: #009900;">&#91;</span><span style="color: #0000dd;">0</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#91;</span>j<span style="color: #009900;">&#93;</span> <span style="color: #339933;">==</span> <span style="color: #ff0000;">' '</span><span style="color: #009900;">&#41;</span>
              j<span style="color: #339933;">++;</span>
&nbsp;
       k <span style="color: #339933;">=</span> <span style="color: #0000dd;">1</span><span style="color: #339933;">;</span>
&nbsp;
       <span style="color: #b1b100;">while</span> <span style="color: #009900;">&#40;</span>j <span style="color: #339933;">&lt;</span> <span style="color: #000066;">strlen</span><span style="color: #009900;">&#40;</span>ch<span style="color: #009900;">&#91;</span><span style="color: #0000dd;">0</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span>
       <span style="color: #009900;">&#123;</span>
              <span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span>ch<span style="color: #009900;">&#91;</span><span style="color: #0000dd;">0</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#91;</span>j<span style="color: #009900;">&#93;</span> <span style="color: #339933;">==</span> <span style="color: #ff0000;">'#'</span><span style="color: #009900;">&#41;</span>
                     f<span style="color: #009900;">&#91;</span><span style="color: #0000dd;">0</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#91;</span>k<span style="color: #339933;">++</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> <span style="color: #0000dd;">0</span><span style="color: #339933;">;</span>
              <span style="color: #b1b100;">else</span> <span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span>ch<span style="color: #009900;">&#91;</span><span style="color: #0000dd;">0</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#91;</span>j<span style="color: #009900;">&#93;</span> <span style="color: #339933;">==</span> <span style="color: #ff0000;">'-'</span><span style="color: #009900;">&#41;</span>
                     f<span style="color: #009900;">&#91;</span><span style="color: #0000dd;">0</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#91;</span>k<span style="color: #339933;">++</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> <span style="color: #0000dd;">1</span><span style="color: #339933;">;</span>
              j<span style="color: #339933;">++;</span>
       <span style="color: #009900;">&#125;</span>
       <span style="color: #b1b100;">for</span> <span style="color: #009900;">&#40;</span>i <span style="color: #339933;">=</span> <span style="color: #0000dd;">1</span><span style="color: #339933;">;</span> i <span style="color: #339933;">&lt;</span> n<span style="color: #339933;">;</span> i<span style="color: #339933;">++</span><span style="color: #009900;">&#41;</span>
       <span style="color: #009900;">&#123;</span>
              j <span style="color: #339933;">=</span> <span style="color: #0000dd;">0</span><span style="color: #339933;">;</span>
              <span style="color: #b1b100;">while</span> <span style="color: #009900;">&#40;</span>ch<span style="color: #009900;">&#91;</span>i<span style="color: #009900;">&#93;</span><span style="color: #009900;">&#91;</span>j<span style="color: #009900;">&#93;</span> <span style="color: #339933;">==</span> <span style="color: #ff0000;">' '</span><span style="color: #009900;">&#41;</span>
                     j<span style="color: #339933;">++;</span>
&nbsp;
              k <span style="color: #339933;">=</span> i<span style="color: #339933;">;</span>
              flag <span style="color: #339933;">=</span> <span style="color: #0000dd;">0</span><span style="color: #339933;">;</span>
&nbsp;
              <span style="color: #b1b100;">while</span> <span style="color: #009900;">&#40;</span>ch<span style="color: #009900;">&#91;</span>i<span style="color: #009900;">&#93;</span><span style="color: #009900;">&#91;</span>j<span style="color: #009900;">&#93;</span> <span style="color: #339933;">!=</span> <span style="color: #ff0000;">'<span style="color: #006699; font-weight: bold;">\0</span>'</span><span style="color: #009900;">&#41;</span>
              <span style="color: #009900;">&#123;</span>
                     <span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span>ch<span style="color: #009900;">&#91;</span>i<span style="color: #009900;">&#93;</span><span style="color: #009900;">&#91;</span>j<span style="color: #009900;">&#93;</span> <span style="color: #339933;">!=</span> <span style="color: #ff0000;">' '</span><span style="color: #009900;">&#41;</span>
                     <span style="color: #009900;">&#123;</span>
                            flag<span style="color: #339933;">++;</span>
                            k<span style="color: #339933;">++;</span>
&nbsp;
                            <span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span>ch<span style="color: #009900;">&#91;</span>i<span style="color: #009900;">&#93;</span><span style="color: #009900;">&#91;</span>j<span style="color: #009900;">&#93;</span> <span style="color: #339933;">==</span> <span style="color: #ff0000;">'-'</span><span style="color: #009900;">&#41;</span>
                            <span style="color: #009900;">&#123;</span>
                                   f<span style="color: #009900;">&#91;</span>i<span style="color: #009900;">&#93;</span><span style="color: #009900;">&#91;</span>k<span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> <span style="color: #0000dd;">1</span><span style="color: #339933;">;</span>
                                   <span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span>flag <span style="color: #339933;">%</span> <span style="color: #0000dd;">2</span> <span style="color: #339933;">==</span> <span style="color: #0000dd;">1</span><span style="color: #009900;">&#41;</span>  <span style="color: #666666; font-style: italic;">//向下的三角形</span>
                                   <span style="color: #009900;">&#123;</span>
                                          <span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span>f<span style="color: #009900;">&#91;</span>i <span style="color: #339933;">-</span> <span style="color: #0000dd;">1</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#91;</span>k<span style="color: #009900;">&#93;</span> <span style="color: #339933;">!=</span> <span style="color: #0000dd;">0</span> <span style="color: #339933;">&amp;&amp;</span> f<span style="color: #009900;">&#91;</span>i <span style="color: #339933;">-</span> <span style="color: #0000dd;">1</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#91;</span>k <span style="color: #339933;">-</span> <span style="color: #0000dd;">1</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">!=</span> <span style="color: #0000dd;">0</span> <span style="color: #339933;">&amp;&amp;</span> f<span style="color: #009900;">&#91;</span>i <span style="color: #339933;">-</span> <span style="color: #0000dd;">1</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#91;</span>k <span style="color: #339933;">+</span> <span style="color: #0000dd;">1</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">!=</span> <span style="color: #0000dd;">0</span><span style="color: #009900;">&#41;</span>
                                          <span style="color: #009900;">&#123;</span>
                                                 f<span style="color: #009900;">&#91;</span>i<span style="color: #009900;">&#93;</span><span style="color: #009900;">&#91;</span>k<span style="color: #009900;">&#93;</span> <span style="color: #339933;">+=</span> min<span style="color: #009900;">&#40;</span>f<span style="color: #009900;">&#91;</span>i <span style="color: #339933;">-</span> <span style="color: #0000dd;">1</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#91;</span>k <span style="color: #339933;">-</span> <span style="color: #0000dd;">1</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">,</span> f<span style="color: #009900;">&#91;</span>i <span style="color: #339933;">-</span> <span style="color: #0000dd;">1</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#91;</span>k <span style="color: #339933;">+</span> <span style="color: #0000dd;">1</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
                                          <span style="color: #009900;">&#125;</span>
                                   <span style="color: #009900;">&#125;</span>
                                   <span style="color: #b1b100;">else</span>  <span style="color: #666666; font-style: italic;">//向上的三角形</span>
                                   <span style="color: #009900;">&#123;</span>
                                          <span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span>f<span style="color: #009900;">&#91;</span>i<span style="color: #009900;">&#93;</span><span style="color: #009900;">&#91;</span>k <span style="color: #339933;">-</span> <span style="color: #0000dd;">1</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">!=</span> <span style="color: #0000dd;">0</span> <span style="color: #339933;">&amp;&amp;</span> f<span style="color: #009900;">&#91;</span>i<span style="color: #009900;">&#93;</span><span style="color: #009900;">&#91;</span>k <span style="color: #339933;">-</span> <span style="color: #0000dd;">2</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">!=</span> <span style="color: #0000dd;">0</span> <span style="color: #339933;">&amp;&amp;</span> f<span style="color: #009900;">&#91;</span>i <span style="color: #339933;">-</span> <span style="color: #0000dd;">1</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#91;</span>k <span style="color: #339933;">-</span> <span style="color: #0000dd;">1</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">!=</span> <span style="color: #0000dd;">0</span><span style="color: #009900;">&#41;</span>
                                          <span style="color: #009900;">&#123;</span>
                                                 f<span style="color: #009900;">&#91;</span>i<span style="color: #009900;">&#93;</span><span style="color: #009900;">&#91;</span>k<span style="color: #009900;">&#93;</span> <span style="color: #339933;">+=</span> min<span style="color: #009900;">&#40;</span>f<span style="color: #009900;">&#91;</span>i<span style="color: #009900;">&#93;</span><span style="color: #009900;">&#91;</span>k <span style="color: #339933;">-</span> <span style="color: #0000dd;">2</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">,</span> f<span style="color: #009900;">&#91;</span>i <span style="color: #339933;">-</span> <span style="color: #0000dd;">1</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#91;</span>k <span style="color: #339933;">-</span> <span style="color: #0000dd;">1</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
                                          <span style="color: #009900;">&#125;</span>                                 
                                   <span style="color: #009900;">&#125;</span>
&nbsp;
                                   <span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span>f<span style="color: #009900;">&#91;</span>i<span style="color: #009900;">&#93;</span><span style="color: #009900;">&#91;</span>k<span style="color: #009900;">&#93;</span> <span style="color: #339933;">&gt;</span> max<span style="color: #009900;">&#41;</span>
                                          max <span style="color: #339933;">=</span> f<span style="color: #009900;">&#91;</span>i<span style="color: #009900;">&#93;</span><span style="color: #009900;">&#91;</span>k<span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
                            <span style="color: #009900;">&#125;</span>
                     <span style="color: #009900;">&#125;</span>
                     j<span style="color: #339933;">++;</span>
              <span style="color: #009900;">&#125;</span>
       <span style="color: #009900;">&#125;</span>
&nbsp;
       <span style="color: #000066;">printf</span><span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;%d<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #339933;">,</span> max <span style="color: #339933;">*</span> <span style="color: #009900;">&#40;</span>max <span style="color: #339933;">*</span> <span style="color: #0000dd;">2</span> <span style="color: #339933;">-</span><span style="color: #0000dd;">1</span> <span style="color: #339933;">+</span> <span style="color: #0000dd;">1</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">/</span> <span style="color: #0000dd;">2</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
       <span style="color: #b1b100;">return</span> <span style="color: #0000dd;">0</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span></pre></td></tr></table></div>

]]></content:encoded>
			<wfw:commentRss>https://www.phppan.com/2009/09/new-year-dance/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
