?? 螺旋方陣--fevernova的博客.htm
字號:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<!-- saved from url=(0039)http://fevernova.bokee.com/1428170.html -->
<HTML><HEAD><TITLE>螺旋方陣--Fevernova的博客</TITLE>
</HEAD>
<BODY>
<DIV class=entity>
<H2
class=diaryTitle>螺旋方陣</H2>
<P><PRE><SPAN style="FONT-SIZE: 12pt; FONT-FAMILY: 宋體; mso-bidi-font-size: 10.0pt">題目:<SPAN lang=EN-US>Input Height N, printf such pattern:<P></SPAN></SPAN></P></PRE><PRE><SPAN lang=EN-US style="FONT-SIZE: 12pt; FONT-FAMILY: 宋體; mso-bidi-font-size: 10.0pt"><SPAN style="mso-spacerun: yes"> </SPAN>1<SPAN style="mso-spacerun: yes"> </SPAN>2<SPAN style="mso-spacerun: yes"> </SPAN>3<SPAN style="mso-spacerun: yes"> </SPAN>4<SPAN style="mso-spacerun: yes"> </SPAN>5<P></SPAN></P></PRE><PRE><SPAN lang=EN-US style="FONT-SIZE: 12pt; FONT-FAMILY: 宋體; mso-bidi-font-size: 10.0pt"><SPAN style="mso-spacerun: yes"> </SPAN>16<SPAN style="mso-spacerun: yes"> </SPAN>17<SPAN style="mso-spacerun: yes"> </SPAN>18<SPAN style="mso-spacerun: yes"> </SPAN>19<SPAN style="mso-spacerun: yes"> </SPAN>6<P></SPAN></P></PRE><PRE><SPAN lang=EN-US style="FONT-SIZE: 12pt; FONT-FAMILY: 宋體; mso-bidi-font-size: 10.0pt"><SPAN style="mso-spacerun: yes"> </SPAN>15<SPAN style="mso-spacerun: yes"> </SPAN>24<SPAN style="mso-spacerun: yes"> </SPAN>25<SPAN style="mso-spacerun: yes"> </SPAN>20<SPAN style="mso-spacerun: yes"> </SPAN>7<P></SPAN></P></PRE><PRE><SPAN lang=EN-US style="FONT-SIZE: 12pt; FONT-FAMILY: 宋體; mso-bidi-font-size: 10.0pt"><SPAN style="mso-spacerun: yes"> </SPAN>14<SPAN style="mso-spacerun: yes"> </SPAN>23<SPAN style="mso-spacerun: yes"> </SPAN>22<SPAN style="mso-spacerun: yes"> </SPAN>21<SPAN style="mso-spacerun: yes"> </SPAN>8<P></SPAN></P></PRE><PRE><SPAN lang=EN-US style="FONT-SIZE: 12pt; FONT-FAMILY: 宋體; mso-bidi-font-size: 10.0pt"><SPAN style="mso-spacerun: yes"> </SPAN>13<SPAN style="mso-spacerun: yes"> </SPAN>12<SPAN style="mso-spacerun: yes"> </SPAN>11<SPAN style="mso-spacerun: yes"> </SPAN>10<SPAN style="mso-spacerun: yes"> </SPAN>9<P></SPAN></P></PRE><PRE><SPAN lang=EN-US style="FONT-SIZE: 12pt; FONT-FAMILY: 宋體; mso-bidi-font-size: 10.0pt">When N=5;<P></SPAN></P></PRE><PRE><SPAN lang=EN-US style="FONT-SIZE: 12pt; FONT-FAMILY: 宋體; mso-bidi-font-size: 10.0pt"> <P></SPAN></P></PRE><PRE style="TEXT-INDENT: 24pt; mso-char-indent-count: 2.0; mso-char-indent-size: 12pt"><SPAN style="FONT-SIZE: 12pt; FONT-FAMILY: 宋體; mso-bidi-font-size: 10.0pt">根據(jù)同學(xué)的要求,現(xiàn)在公布“螺旋方陣”的<SPAN lang=EN-US>5種解法供同學(xué)們參考,希望大家能夠提供更多的不同的解法。<P></SPAN></SPAN></P></PRE><PRE><SPAN lang=EN-US style="FONT-SIZE: 12pt; FONT-FAMILY: 宋體; mso-bidi-font-size: 10.0pt"> <P></SPAN></P></PRE><PRE style="TEXT-INDENT: 24pt; mso-char-indent-count: 2.0; mso-char-indent-size: 12pt"><SPAN style="FONT-SIZE: 12pt; FONT-FAMILY: 宋體; mso-bidi-font-size: 10.0pt">以下<SPAN lang=EN-US>3種解法,由9120006班王睿提供。CTC傾聽熱線:sdqdwangrui@263.net。<P></SPAN></SPAN></P></PRE><PRE><SPAN lang=EN-US style="FONT-SIZE: 12pt; FONT-FAMILY: 宋體; mso-bidi-font-size: 10.0pt"> <P></SPAN></P></PRE><PRE><SPAN style="FONT-SIZE: 12pt; COLOR: blue; FONT-FAMILY: 宋體; mso-bidi-font-size: 10.0pt">第一種解法:是用等差數(shù)列解題。<SPAN lang=EN-US><P></SPAN></SPAN></P></PRE><PRE><SPAN style="FONT-SIZE: 12pt; FONT-FAMILY: 宋體; mso-bidi-font-size: 10.0pt">算法:<SPAN lang=EN-US><P></SPAN></SPAN></P></PRE><PRE><SPAN lang=EN-US style="FONT-SIZE: 12pt; FONT-FAMILY: 宋體; mso-bidi-font-size: 10.0pt"><SPAN style="mso-spacerun: yes"> </SPAN>1<SPAN style="mso-spacerun: yes"> </SPAN>2<SPAN style="mso-spacerun: yes"> </SPAN>3<SPAN style="mso-spacerun: yes"> </SPAN>4<SPAN style="mso-spacerun: yes"> </SPAN>5<P></SPAN></P></PRE><PRE><SPAN lang=EN-US style="FONT-SIZE: 12pt; FONT-FAMILY: 宋體; mso-bidi-font-size: 10.0pt"><SPAN style="mso-spacerun: yes"> </SPAN>16<SPAN style="mso-spacerun: yes"> </SPAN>17<SPAN style="mso-spacerun: yes"> </SPAN>18<SPAN style="mso-spacerun: yes"> </SPAN>19<SPAN style="mso-spacerun: yes"> </SPAN>6<P></SPAN></P></PRE><PRE><SPAN lang=EN-US style="FONT-SIZE: 12pt; FONT-FAMILY: 宋體; mso-bidi-font-size: 10.0pt"><SPAN style="mso-spacerun: yes"> </SPAN>15<SPAN style="mso-spacerun: yes"> </SPAN>24<SPAN style="mso-spacerun: yes"> </SPAN>25<SPAN style="mso-spacerun: yes"> </SPAN>20<SPAN style="mso-spacerun: yes"> </SPAN>7<P></SPAN></P></PRE><PRE><SPAN lang=EN-US style="FONT-SIZE: 12pt; FONT-FAMILY: 宋體; mso-bidi-font-size: 10.0pt"><SPAN style="mso-spacerun: yes"> </SPAN>14<SPAN style="mso-spacerun: yes"> </SPAN>23<SPAN style="mso-spacerun: yes"> </SPAN>22<SPAN style="mso-spacerun: yes"> </SPAN>21<SPAN style="mso-spacerun: yes"> </SPAN>8<P></SPAN></P></PRE><PRE><SPAN lang=EN-US style="FONT-SIZE: 12pt; FONT-FAMILY: 宋體; mso-bidi-font-size: 10.0pt"><SPAN style="mso-spacerun: yes"> </SPAN>13<SPAN style="mso-spacerun: yes"> </SPAN>12<SPAN style="mso-spacerun: yes"> </SPAN>11<SPAN style="mso-spacerun: yes"> </SPAN>10<SPAN style="mso-spacerun: yes"> </SPAN>9<P></SPAN></P></PRE><PRE><SPAN style="FONT-SIZE: 12pt; FONT-FAMILY: 宋體; mso-bidi-font-size: 10.0pt">定義行<SPAN lang=EN-US>i列j。從外向內(nèi)分層,一圈一層。定義r:(r>=1)當(dāng)前圈為第幾圈。<P></SPAN></SPAN></P></PRE><PRE><SPAN style="FONT-SIZE: 12pt; FONT-FAMILY: 宋體; mso-bidi-font-size: 10.0pt">定義<SPAN lang=EN-US>N:圖形高度<P></SPAN></SPAN></P></PRE><PRE><SPAN style="FONT-SIZE: 12pt; FONT-FAMILY: 宋體; mso-bidi-font-size: 10.0pt">定義<SPAN lang=EN-US>l:當(dāng)前圈邊長l<P></SPAN></SPAN></P></PRE><PRE><SPAN lang=EN-US style="FONT-SIZE: 12pt; FONT-FAMILY: 宋體; mso-bidi-font-size: 10.0pt"><SPAN style="mso-tab-count: 1"> </SPAN>l(1)=N-1<P></SPAN></P></PRE><PRE><SPAN lang=EN-US style="FONT-SIZE: 12pt; FONT-FAMILY: 宋體; mso-bidi-font-size: 10.0pt"><SPAN style="mso-tab-count: 1"> </SPAN>l(r)=N-2*(r-1)-1<P></SPAN></P></PRE><PRE><SPAN style="FONT-SIZE: 12pt; FONT-FAMILY: 宋體; mso-bidi-font-size: 10.0pt">設(shè)當(dāng)前圈左上角為開始。定義<SPAN lang=EN-US>d:當(dāng)前行的方向(上邊為0右邊為1下邊為2左邊為3)<P></SPAN></SPAN></P></PRE><PRE><SPAN style="FONT-SIZE: 12pt; FONT-FAMILY: 宋體; mso-bidi-font-size: 10.0pt">定義<SPAN lang=EN-US>pl:當(dāng)前圈當(dāng)前邊距角的長度(向數(shù)字小的方向)<P></SPAN></SPAN></P></PRE><PRE><SPAN style="FONT-SIZE: 12pt; FONT-FAMILY: 宋體; mso-bidi-font-size: 10.0pt">定義<SPAN lang=EN-US>a:當(dāng)前圈共有多少個數(shù)字<P></SPAN></SPAN></P></PRE><PRE><SPAN lang=EN-US style="FONT-SIZE: 12pt; FONT-FAMILY: 宋體; mso-bidi-font-size: 10.0pt"><SPAN style="mso-tab-count: 1"> </SPAN>a(r)=4*l(r)=4*(N-2*(r-1))-4<P></SPAN></P></PRE><PRE><SPAN lang=EN-US style="FONT-SIZE: 12pt; FONT-FAMILY: 宋體; mso-bidi-font-size: 10.0pt"><SPAN style="mso-tab-count: 1"> </SPAN>公差為-8<P></SPAN></P></PRE><PRE><SPAN style="FONT-SIZE: 12pt; FONT-FAMILY: 宋體; mso-bidi-font-size: 10.0pt">從最外圈到當(dāng)前圈求和:<SPAN lang=EN-US>s(r)=a(1)*r-r*(r-1)/2*(-8)<P></SPAN></SPAN></P></PRE><PRE><SPAN style="FONT-SIZE: 12pt; FONT-FAMILY: 宋體; mso-bidi-font-size: 10.0pt">定義<SPAN lang=EN-US>b:本圈第一個數(shù)字<P></SPAN></SPAN></P></PRE><PRE><SPAN lang=EN-US style="FONT-SIZE: 12pt; FONT-FAMILY: 宋體; mso-bidi-font-size: 10.0pt"><SPAN style="mso-tab-count: 1"> </SPAN>b(r)=s(r-1)+1<P></SPAN></P></PRE><PRE><SPAN lang=EN-US style="FONT-SIZE: 12pt; FONT-FAMILY: 宋體; mso-bidi-font-size: 10.0pt"><SPAN style="mso-tab-count: 1"> </SPAN><SPAN style="mso-spacerun: yes"> </SPAN>=a(1)*(r-1)-(r-1)*(r-2)/2*(-8)+1<P></SPAN></P></PRE><PRE><SPAN style="FONT-SIZE: 12pt; FONT-FAMILY: 宋體; mso-bidi-font-size: 10.0pt">開始計算:<SPAN lang=EN-US><P></SPAN></SPAN></P></PRE><PRE><SPAN lang=EN-US style="FONT-SIZE: 12pt; FONT-FAMILY: 宋體; mso-bidi-font-size: 10.0pt"><SPAN style="mso-tab-count: 1"> </SPAN>求r:<SPAN style="mso-spacerun: yes"> </SPAN>r=min(i,N-j+1,N-i+1,j)<P></SPAN></P></PRE><PRE><SPAN lang=EN-US style="FONT-SIZE: 12pt; FONT-FAMILY: 宋體; mso-bidi-font-size: 10.0pt"><SPAN style="mso-tab-count: 1"> </SPAN>求d:<SPAN style="mso-spacerun: yes"> </SPAN>d為(i,N-j+1,N-i+1,j)與r對應(yīng),如r如第1個值,則d為第一個值...<P></SPAN></P></PRE><PRE><SPAN lang=EN-US style="FONT-SIZE: 12pt; FONT-FAMILY: 宋體; mso-bidi-font-size: 10.0pt"><SPAN style="mso-tab-count: 1"> </SPAN>求pl:<SPAN style="mso-spacerun: yes"> </SPAN>p=(j-r,i-r,N-j+1-r,N-i+1-r)與r對應(yīng),如r如第1個值,則d為第一個值...<P></SPAN></P></PRE><PRE><SPAN style="FONT-SIZE: 12pt; FONT-FAMILY: 宋體; mso-bidi-font-size: 10.0pt">當(dāng)前數(shù)值<SPAN lang=EN-US>b+l*d+pl<P></SPAN></SPAN></P></PRE><PRE><SPAN lang=EN-US style="FONT-SIZE: 12pt; FONT-FAMILY: 宋體; mso-bidi-font-size: 10.0pt"><SPAN style="mso-tab-count: 2"> </SPAN>Commented by Wang Rui<P></SPAN></P></PRE><PRE><SPAN lang=EN-US style="FONT-SIZE: 12pt; FONT-FAMILY: 宋體; mso-bidi-font-size: 10.0pt"> <P></SPAN></P></PRE><PRE><SPAN style="FONT-SIZE: 12pt; FONT-FAMILY: 宋體; mso-bidi-font-size: 10.0pt">程序如下:<SPAN lang=EN-US><P></SPAN></SPAN></P></PRE><PRE><SPAN lang=EN-US style="FONT-SIZE: 12pt; FONT-FAMILY: 宋體; mso-bidi-font-size: 10.0pt">main( )<P></SPAN></P></PRE><PRE><SPAN lang=EN-US style="FONT-SIZE: 12pt; FONT-FAMILY: 宋體; mso-bidi-font-size: 10.0pt">{<SPAN style="mso-tab-count: 1"> </SPAN>int i,j,r,l,b,d,pl,N;<P></SPAN></P></PRE><PRE><SPAN lang=EN-US style="FONT-SIZE: 12pt; FONT-FAMILY: 宋體; mso-bidi-font-size: 10.0pt"><SPAN style="mso-tab-count: 1"> </SPAN>printf("Input Height:");<SPAN style="mso-tab-count: 1"> </SPAN>/*輸入高度*/<P></SPAN></P></PRE><PRE><SPAN lang=EN-US style="FONT-SIZE: 12pt; FONT-FAMILY: 宋體; mso-bidi-font-size: 10.0pt"><SPAN style="mso-tab-count: 1"> </SPAN>scanf("%d",&N);<P></SPAN></P></PRE><PRE><SPAN lang=EN-US style="FONT-SIZE: 12pt; FONT-FAMILY: 宋體; mso-bidi-font-size: 10.0pt"><SPAN style="mso-tab-count: 1"> </SPAN>for (i=1;i<=N;i++)<P></SPAN></P></PRE><PRE><SPAN lang=EN-US style="FONT-SIZE: 12pt; FONT-FAMILY: 宋體; mso-bidi-font-size: 10.0pt"><SPAN style="mso-tab-count: 1"> </SPAN>{<SPAN style="mso-tab-count: 1"> </SPAN>for (j=1;j<=N;j++)<SPAN style="mso-tab-count: 1"> </SPAN>/*定位到第i行第j列*/<P></SPAN></P></PRE><PRE><SPAN lang=EN-US style="FONT-SIZE: 12pt; FONT-FAMILY: 宋體; mso-bidi-font-size: 10.0pt"><SPAN style="mso-tab-count: 2"> </SPAN>{<SPAN style="mso-tab-count: 1"> </SPAN>r=i;d=0;pl=j-r;<P></SPAN></P></PRE><PRE><SPAN lang=EN-US style="FONT-SIZE: 12pt; FONT-FAMILY: 宋體; mso-bidi-font-size: 10.0pt"><SPAN style="mso-tab-count: 3"> </SPAN>if (r>N-j+1) {r=N-j+1;d=1;pl=i-r;}<P></SPAN></P></PRE><PRE><SPAN lang=EN-US style="FONT-SIZE: 12pt; FONT-FAMILY: 宋體; mso-bidi-font-size: 10.0pt"><SPAN style="mso-tab-count: 3"> </SPAN>if (r>N-i+1) {r=N-i+1;d=2;pl=N-j+1-r;}<P></SPAN></P></PRE><PRE><SPAN lang=EN-US style="FONT-SIZE: 12pt; FONT-FAMILY: 宋體; mso-bidi-font-size: 10.0pt"><SPAN style="mso-tab-count: 3"> </SPAN>if (r>j) {r=j;d=3;pl=N-i+1-r;}<P></SPAN></P></PRE><PRE><SPAN lang=EN-US style="FONT-SIZE: 12pt; FONT-FAMILY: 宋體; mso-bidi-font-size: 10.0pt"><SPAN style="mso-tab-count: 3"> </SPAN>/*找出圈數(shù),邊的位置,在邊上的位置*/<P></SPAN></P></PRE><PRE><SPAN lang=EN-US style="FONT-SIZE: 12pt; FONT-FAMILY: 宋體; mso-bidi-font-size: 10.0pt"><SPAN style="mso-tab-count: 3"> </SPAN>l=N-2*(r-1)-1;/*邊長*/<P></SPAN></P></PRE><PRE><SPAN lang=EN-US style="FONT-SIZE: 12pt; FONT-FAMILY: 宋體; mso-bidi-font-size: 10.0pt"><SPAN style="mso-tab-count: 3"> </SPAN>b=(4*N-4)*(r-1)-4*(r-1)*(r-2)+1;<P></SPAN></P></PRE><PRE><SPAN lang=EN-US style="FONT-SIZE: 12pt; FONT-FAMILY: 宋體; mso-bidi-font-size: 10.0pt"><SPAN style="mso-tab-count: 3"> </SPAN>/*本圈開始的數(shù)字*/<P></SPAN></P></PRE><PRE><SPAN lang=EN-US style="FONT-SIZE: 12pt; FONT-FAMILY: 宋體; mso-bidi-font-size: 10.0pt"><SPAN style="mso-tab-count: 3"> </SPAN>printf("%4d",b+l*d+pl);/*打印數(shù)字*/<P></SPAN></P></PRE><PRE><SPAN lang=EN-US style="FONT-SIZE: 12pt; FONT-FAMILY: 宋體; mso-bidi-font-size: 10.0pt"><SPAN style="mso-tab-count: 2"> </SPAN>}<P></SPAN></P></PRE><PRE><SPAN lang=EN-US style="FONT-SIZE: 12pt; FONT-FAMILY: 宋體; mso-bidi-font-size: 10.0pt"><SPAN style="mso-tab-count: 2"> </SPAN>printf("\n");<P></SPAN></P></PRE><PRE><SPAN lang=EN-US style="FONT-SIZE: 12pt; FONT-FAMILY: 宋體; mso-bidi-font-size: 10.0pt"><SPAN style="mso-tab-count: 1"> </SPAN>}<P></SPAN></P></PRE><PRE><SPAN lang=EN-US style="FONT-SIZE: 12pt; FONT-FAMILY: 宋體; mso-bidi-font-size: 10.0pt">}<P></SPAN></P></PRE><PRE><SPAN lang=EN-US style="FONT-SIZE: 12pt; FONT-FAMILY: 宋體; mso-bidi-font-size: 10.0pt"> <P></SPAN></P></PRE><PRE><SPAN style="FONT-SIZE: 12pt; COLOR: blue; FONT-FAMILY: 宋體; mso-bidi-font-size: 10.0pt">第二種解法:<SPAN lang=EN-US>6班班長的解法,這是用幾何方法解的。<P></SPAN></SPAN></P></PRE><PRE><SPAN lang=EN-US style="FONT-SIZE: 12pt; FONT-FAMILY: 宋體; mso-bidi-font-size: 10.0pt">main( )<P></SPAN></P></PRE><PRE><SPAN lang=EN-US style="FONT-SIZE: 12pt; FONT-FAMILY: 宋體; mso-bidi-font-size: 10.0pt">{<SPAN style="mso-tab-count: 1"> </SPAN>int i,j,N,c;<P></SPAN></P></PRE><PRE><SPAN lang=EN-US style="FONT-SIZE: 12pt; FONT-FAMILY: 宋體; mso-bidi-font-size: 10.0pt"><SPAN style="mso-tab-count: 1"> </SPAN>printf("Input N=");<P></SPAN></P></PRE><PRE><SPAN lang=EN-US style="FONT-SIZE: 12pt; FONT-FAMILY: 宋體; mso-bidi-font-size: 10.0pt"><SPAN style="mso-tab-count: 1"> </SPAN>scanf("%d",&N);<P></SPAN></P></PRE><PRE><SPAN lang=EN-US style="FONT-SIZE: 12pt; FONT-FAMILY: 宋體; mso-bidi-font-size: 10.0pt"><SPAN style="mso-tab-count: 1"> </SPAN>for (i=1;i<=N;i++)<P></SPAN></P></PRE><PRE><SPAN lang=EN-US style="FONT-SIZE: 12pt; FONT-FAMILY: 宋體; mso-bidi-font-size: 10.0pt"><SPAN style="mso-tab-count: 2"> </SPAN>for (j=1;j<=N;j++)<P></SPAN></P></PRE><PRE><SPAN lang=EN-US style="FONT-SIZE: 12pt; FONT-FAMILY: 宋體; mso-bidi-font-size: 10.0pt"><SPAN style="mso-tab-count: 2"> </SPAN>{<SPAN style="mso-tab-count: 1"> </SPAN>if (j>=i&&j<=N+1-i||j<=i&&j>=N+1-i)<P></SPAN></P></PRE><PRE><SPAN lang=EN-US style="FONT-SIZE: 12pt; FONT-FAMILY: 宋體; mso-bidi-font-size: 10.0pt"><SPAN style="mso-tab-count: 4"> </SPAN>if (i<=(N+1)/2)<P></SPAN></P></PRE><PRE><SPAN lang=EN-US style="FONT-SIZE: 12pt; FONT-FAMILY: 宋體; mso-bidi-font-size: 10.0pt"><SPAN style="mso-tab-count: 1"> </SPAN><SPAN style="mso-tab-count: 4"> </SPAN>c=(i-1)*(4*N-4*i+3)+j;<P></SPAN></P></PRE><PRE><SPAN lang=EN-US style="FONT-SIZE: 12pt; FONT-FAMILY: 宋體; mso-bidi-font-size: 10.0pt"><SPAN style="mso-tab-count: 4"> </SPAN>else<P></SPAN></P></PRE><PRE><SPAN lang=EN-US style="FONT-SIZE: 12pt; FONT-FAMILY: 宋體; mso-bidi-font-size: 10.0pt"><SPAN style="mso-tab-count: 5"> </SPAN>c=2*(N-i)*(2*i-1)+3*i-j-1;<P></SPAN></P></PRE><PRE><SPAN lang=EN-US style="FONT-SIZE: 12pt; FONT-FAMILY: 宋體; mso-bidi-font-size: 10.0pt"><SPAN style="mso-tab-count: 3"> </SPAN>else<P></SPAN></P></PRE><PRE><SPAN lang=EN-US style="FONT-SIZE: 12pt; FONT-FAMILY: 宋體; mso-bidi-font-size: 10.0pt"><SPAN style="mso-tab-count: 4"> </SPAN>if (j<=(N+1)/2)<P></SPAN></P></PRE><PRE><SPAN lang=EN-US style="FONT-SIZE: 12pt; FONT-FAMILY: 宋體; mso-bidi-font-size: 10.0pt"><SPAN style="mso-tab-count: 5"> </SPAN>c=4*N*j-4*j*j-i+j+1;<P></SPAN></P></PRE><PRE><SPAN lang=EN-US style="FONT-SIZE: 12pt; FONT-FAMILY: 宋體; mso-bidi-font-size: 10.0pt"><SPAN style="mso-tab-count: 4"> </SPAN>else<P></SPAN></P></PRE><PRE><SPAN lang=EN-US style="FONT-SIZE: 12pt; FONT-FAMILY: 宋體; mso-bidi-font-size: 10.0pt"><SPAN style="mso-tab-count: 5"> </SPAN>c=(N-j)*(4*j-3)+N+i-1;<P></SPAN></P></PRE><PRE><SPAN lang=EN-US style="FONT-SIZE: 12pt; FONT-FAMILY: 宋體; mso-bidi-font-size: 10.0pt"><SPAN style="mso-tab-count: 3"> </SPAN>printf((j==N)?"%4d\n":"%4d",c);<P></SPAN></P></PRE><PRE><SPAN lang=EN-US style="FONT-SIZE: 12pt; FONT-FAMILY: 宋體; mso-bidi-font-size: 10.0pt"><SPAN style="mso-tab-count: 2"> </SPAN>}<P></SPAN></P></PRE><PRE><SPAN lang=EN-US style="FONT-SIZE: 12pt; FONT-FAMILY: 宋體; mso-bidi-font-size: 10.0pt">}<P></SPAN></P></PRE><PRE><SPAN lang=EN-US style="FONT-SIZE: 12pt; FONT-FAMILY: 宋體; mso-bidi-font-size: 10.0pt"> <P></SPAN></P></PRE><PRE><SPAN style="FONT-SIZE: 12pt; COLOR: blue; FONT-FAMILY: 宋體; mso-bidi-font-size: 10.0pt">第三種解法:用面積解。<SPAN lang=EN-US><P></SPAN></SPAN></P></PRE><PRE><SPAN lang=EN-US style="FONT-SIZE: 12pt; FONT-FAMILY: 宋體; mso-bidi-font-size: 10.0pt">main( )<P></SPAN></P></PRE><PRE><SPAN lang=EN-US style="FONT-SIZE: 12pt; FONT-FAMILY: 宋體; mso-bidi-font-size: 10.0pt">{<SPAN style="mso-tab-count: 1"> </SPAN>int i,j,r,l,b,d,pl,N;<P></SPAN></P></PRE><PRE><SPAN lang=EN-US style="FONT-SIZE: 12pt; FONT-FAMILY: 宋體; mso-bidi-font-size: 10.0pt"><SPAN style="mso-tab-count: 1"> </SPAN>printf("Input Height:");<SPAN style="mso-tab-count: 1"> </SPAN>/*輸入高度*/<P></SPAN></P></PRE><PRE><SPAN lang=EN-US style="FONT-SIZE: 12pt; FONT-FAMILY: 宋體; mso-bidi-font-size: 10.0pt"><SPAN style="mso-tab-count: 1"> </SPAN>scanf("%d",&N);<P></SPAN></P></PRE><PRE><SPAN lang=EN-US style="FONT-SIZE: 12pt; FONT-FAMILY: 宋體; mso-bidi-font-size: 10.0pt"><SPAN style="mso-tab-count: 1"> </SPAN>for (i=1;i<=N;i++)<P></SPAN></P></PRE><PRE><SPAN lang=EN-US style="FONT-SIZE: 12pt; FONT-FAMILY: 宋體; mso-bidi-font-size: 10.0pt"><SPAN style="mso-tab-count: 1"> </SPAN>{<SPAN style="mso-tab-count: 1"> </SPAN>for (j=1;j<=N;j++)<SPAN style="mso-tab-count: 1"> </SPAN>/*定位到第i行第j列*/<P></SPAN></P></PRE><PRE><SPAN lang=EN-US style="FONT-SIZE: 12pt; FONT-FAMILY: 宋體; mso-bidi-font-size: 10.0pt"><SPAN style="mso-tab-count: 2"> </SPAN>{<SPAN style="mso-tab-count: 1"> </SPAN>r=i;d=0;pl=j-r;<P></SPAN></P></PRE><PRE><SPAN lang=EN-US style="FONT-SIZE: 12pt; FONT-FAMILY: 宋體; mso-bidi-font-size: 10.0pt"><SPAN style="mso-tab-count: 3"> </SPAN>if (r>N-j+1) {r=N-j+1;d=1;pl=i-r;}<P></SPAN></P></PRE><PRE><SPAN lang=EN-US style="FONT-SIZE: 12pt; FONT-FAMILY: 宋體; mso-bidi-font-size: 10.0pt"><SPAN style="mso-tab-count: 3"> </SPAN>if (r>N-i+1) {r=N-i+1;d=2;pl=N-j+1-r;}<P></SPAN></P></PRE><PRE><SPAN lang=EN-US style="FONT-SIZE: 12pt; FONT-FAMILY: 宋體; mso-bidi-font-size: 10.0pt"><SPAN style="mso-tab-count: 3"> </SPAN>if (r>j) {r=j;d=3;pl=N-i+1-r;}<P></SPAN></P></PRE><PRE><SPAN lang=EN-US style="FONT-SIZE: 12pt; FONT-FAMILY: 宋體; mso-bidi-font-size: 10.0pt"><SPAN style="mso-tab-count: 3"> </SPAN>/*找出圈數(shù),邊的位置,在邊上的位置*/<P></SPAN></P></PRE><PRE><SPAN lang=EN-US style="FONT-SIZE: 12pt; FONT-FAMILY: 宋體; mso-bidi-font-size: 10.0pt"><SPAN style="mso-tab-count: 3"> </SPAN>l=N-2*(r-1);/*邊長*/<P></SPAN></P></PRE><PRE><SPAN lang=EN-US style="FONT-SIZE: 12pt; FONT-FAMILY: 宋體; mso-bidi-font-size: 10.0pt"><SPAN style="mso-tab-count: 3"> </SPAN>b=N*N-l*l+1;/*用面積計算*/<P></SPAN></P></PRE><PRE><SPAN lang=EN-US style="FONT-SIZE: 12pt; FONT-FAMILY: 宋體; mso-bidi-font-size: 10.0pt"><SPAN style="mso-tab-count: 3"> </SPAN>/*本圈開始的數(shù)字*/<P></SPAN></P></PRE><PRE><SPAN lang=EN-US style="FONT-SIZE: 12pt; FONT-FAMILY: 宋體; mso-bidi-font-size: 10.0pt"><SPAN style="mso-tab-count: 3"> </SPAN>printf("%4d",b+(l-1)*d+pl);/*打印數(shù)字*/<P></SPAN></P></PRE><PRE><SPAN lang=EN-US style="FONT-SIZE: 12pt; FONT-FAMILY: 宋體; mso-bidi-font-size: 10.0pt"><SPAN style="mso-tab-count: 2"> </SPAN>}<P></SPAN></P></PRE><PRE><SPAN lang=EN-US style="FONT-SIZE: 12pt; FONT-FAMILY: 宋體; mso-bidi-font-size: 10.0pt"><SPAN style="mso-tab-count: 2"> </SPAN>printf("\n");<P></SPAN></P></PRE><PRE><SPAN lang=EN-US style="FONT-SIZE: 12pt; FONT-FAMILY: 宋體; mso-bidi-font-size: 10.0pt"><SPAN style="mso-tab-count: 1"> </SPAN>}<P></SPAN></P></PRE><PRE><SPAN lang=EN-US style="FONT-SIZE: 12pt; FONT-FAMILY: 宋體; mso-bidi-font-size: 10.0pt">}<P></SPAN></P></PRE><PRE><SPAN lang=EN-US style="FONT-SIZE: 12pt; FONT-FAMILY: 宋體; mso-bidi-font-size: 10.0pt"> <P></SPAN></P></PRE><PRE style="TEXT-INDENT: 24pt; mso-char-indent-count: 2.0; mso-char-indent-size: 12pt"><SPAN style="FONT-SIZE: 12pt; FONT-FAMILY: 宋體; mso-bidi-font-size: 10.0pt">小結(jié):第一種思路比較簡單<SPAN lang=EN-US>,我在知道題目當(dāng)天下午就將程序調(diào)試成功了。第二個程序是兩天后班長給我的,我還沒來得及加注釋。第三個程序是與班長交流時產(chǎn)生的,使算法更簡單。<P></SPAN></SPAN></P></PRE>
<P class=MsoNormal style="tab-stops: 595.4pt 641.2pt 687.0pt 732.8pt"><SPAN
lang=EN-US style="FONT-SIZE: 12pt; FONT-FAMILY: 宋體">
<P></SPAN></P>
<P class=MsoNormal style="tab-stops: 595.4pt 641.2pt 687.0pt 732.8pt"><SPAN
style="FONT-SIZE: 12pt; FONT-FAMILY: 宋體">以下兩種解法由教師完成。<SPAN lang=EN-US>
<P></SPAN></SPAN></P>
<P class=MsoPlainText
style="MARGIN-LEFT: 41.25pt; TEXT-INDENT: -41.25pt; mso-char-indent-count: -3.93; mso-char-indent-size: 10.45pt; tab-stops: 595.4pt 641.2pt 687.0pt 732.8pt"><SPAN
lang=EN-US>
<P></SPAN></P>
<P class=MsoPlainText
style="MARGIN-LEFT: 47.15pt; TEXT-INDENT: -47.15pt; mso-char-indent-count: -3.93; mso-char-indent-size: 11.95pt; tab-stops: 595.4pt 641.2pt 687.0pt 732.8pt"><SPAN
style="FONT-SIZE: 12pt; COLOR: blue; mso-bidi-font-size: 10.0pt">第<SPAN
lang=EN-US>4種解法。
<P></SPAN></SPAN></P>
<P class=MsoPlainText
style="TEXT-INDENT: 24pt; mso-char-indent-count: 2.0; mso-char-indent-size: 11.95pt; tab-stops: 595.4pt 641.2pt 687.0pt 732.8pt"><SPAN
style="FONT-SIZE: 12pt; mso-bidi-font-size: 10.0pt">分析:首先尋找數(shù)字輸出數(shù)字和行列的關(guān)系。<SPAN
lang=EN-US>
<P></SPAN></SPAN></P>
<P class=MsoPlainText style="tab-stops: 595.4pt 641.2pt 687.0pt 732.8pt"><SPAN
lang=EN-US style="FONT-SIZE: 12pt; mso-bidi-font-size: 10.0pt"><SPAN
style="mso-spacerun: yes"> </SPAN><SPAN
style="mso-spacerun: yes"> </SPAN>每圈有四個邊,把每邊的最后一個數(shù)字算為下邊的開始,最外圈每邊數(shù)字個數(shù)是n-1個,以后每邊比外邊一邊少兩個數(shù)字。
<P></SPAN></P>
<P class=MsoPlainText style="tab-stops: 595.4pt 641.2pt 687.0pt 732.8pt"><SPAN
lang=EN-US style="FONT-SIZE: 12pt; mso-bidi-font-size: 10.0pt"><SPAN
style="mso-spacerun: yes">
</SPAN>因為數(shù)字是一行一行輸出的,再分析每行數(shù)字的規(guī)律。實際沒有的數(shù)字有三種規(guī)律:位于對角線之間的數(shù)字是上半圖增一,下半圖減一。對角線左側(cè)的各列,右側(cè)比左側(cè)增加了一圈數(shù)字,例如數(shù)字39和它左側(cè)的22比較,數(shù)字39所在的圈每邊4個數(shù)字,左側(cè)22加上一圈16個數(shù)字在加1就是39。同理,對角線右側(cè)的各列,則減少一圈的數(shù)字個數(shù)。
<P></SPAN></P>
<P class=MsoPlainText style="tab-stops: 595.4pt 641.2pt 687.0pt 732.8pt"><SPAN
lang=EN-US style="FONT-SIZE: 12pt; mso-bidi-font-size: 10.0pt"><SPAN
style="mso-spacerun: yes">
</SPAN>根據(jù)以上分析,用兩個對角線將圖形分為四個區(qū)域,如下圖所示,圖中黑斜體字為對角線上的數(shù)字。
<P></SPAN></P>
<P class=MsoPlainText
style="LINE-HEIGHT: 12pt; tab-stops: 595.4pt 641.2pt 687.0pt 732.8pt; mso-line-height-rule: exactly"><SPAN
lang=EN-US
style="FONT-SIZE: 12pt; mso-bidi-font-size: 10.0pt; mso-hansi-font-family: 宋體"><SPAN
style="mso-spacerun: yes">
</SPAN><B><SPAN
style="mso-spacerun: yes"> </SPAN></B></SPAN><B><I><SPAN lang=EN-US
style="FONT-SIZE: 12pt; mso-bidi-font-size: 10.0pt; mso-hansi-font-family: 宋體; mso-fareast-font-family: 黑體">1</SPAN></I></B><SPAN
lang=EN-US
style="FONT-SIZE: 12pt; mso-bidi-font-size: 10.0pt; mso-hansi-font-family: 宋體; mso-fareast-font-family: 黑體">
</SPAN><SPAN lang=EN-US
style="FONT-SIZE: 12pt; mso-bidi-font-size: 10.0pt; mso-hansi-font-family: 宋體"><SPAN
style="mso-spacerun: yes"> </SPAN>2<SPAN
style="mso-spacerun: yes"> </SPAN>3<SPAN
style="mso-spacerun: yes"> </SPAN>4<SPAN
style="mso-spacerun: yes"> </SPAN>5<SPAN
style="mso-spacerun: yes"> </SPAN>6<SPAN
style="mso-spacerun: yes"> </SPAN><I><SPAN
style="mso-spacerun: yes"> </SPAN></I></SPAN><B><I><SPAN lang=EN-US
style="FONT-SIZE: 12pt; mso-bidi-font-size: 10.0pt; mso-hansi-font-family: 宋體; mso-fareast-font-family: 黑體">7</SPAN></I></B><I><SPAN
lang=EN-US
style="FONT-SIZE: 12pt; mso-bidi-font-size: 10.0pt; mso-hansi-font-family: 宋體">
<P></SPAN></I></P>
<P class=MsoPlainText
style="TEXT-INDENT: 132pt; LINE-HEIGHT: 12pt; mso-char-indent-count: 11.0; mso-char-indent-size: 12pt; tab-stops: 595.4pt 641.2pt 687.0pt 732.8pt; mso-line-height-rule: exactly"><SPAN
lang=EN-US
style="FONT-SIZE: 12pt; mso-bidi-font-size: 10.0pt; mso-hansi-font-family: 宋體">24
</SPAN><SPAN lang=EN-US
style="FONT-SIZE: 12pt; mso-bidi-font-size: 10.0pt; mso-hansi-font-family: 宋體; mso-fareast-font-family: 黑體"><SPAN
style="mso-spacerun: yes"> </SPAN><B><I>25</I></B></SPAN><SPAN lang=EN-US
style="FONT-SIZE: 12pt; mso-bidi-font-size: 10.0pt; mso-hansi-font-family: 宋體"><SPAN
style="mso-spacerun: yes"> </SPAN>26<SPAN style="mso-spacerun: yes">
</SPAN>27<SPAN style="mso-spacerun: yes"> </SPAN>28 <I><SPAN
style="mso-spacerun: yes"> </SPAN></I></SPAN><B><I><SPAN lang=EN-US
style="FONT-SIZE: 12pt; mso-bidi-font-size: 10.0pt; mso-hansi-font-family: 宋體; mso-fareast-font-family: 黑體">29</SPAN></I></B><SPAN
lang=EN-US
style="FONT-SIZE: 12pt; mso-bidi-font-size: 10.0pt; mso-hansi-font-family: 宋體"><SPAN
style="mso-spacerun: yes"> </SPAN>8
<P></SPAN></P>
<P class=MsoPlainText
style="TEXT-INDENT: 132pt; LINE-HEIGHT: 12pt; mso-char-indent-count: 11.0; mso-char-indent-size: 12pt; tab-stops: 595.4pt 641.2pt 687.0pt 732.8pt; mso-line-height-rule: exactly"><SPAN
lang=EN-US
style="FONT-SIZE: 12pt; mso-bidi-font-size: 10.0pt; mso-hansi-font-family: 宋體">23<SPAN
style="mso-spacerun: yes"> </SPAN>40<SPAN style="mso-spacerun: yes">
</SPAN></SPAN><B><I><SPAN lang=EN-US
style="FONT-SIZE: 12pt; mso-bidi-font-size: 10.0pt; mso-hansi-font-family: 宋體; mso-fareast-font-family: 黑體">41</SPAN></I></B><SPAN
lang=EN-US
style="FONT-SIZE: 12pt; mso-bidi-font-size: 10.0pt; mso-hansi-font-family: 宋體"><SPAN
style="mso-spacerun: yes"> </SPAN>42<SPAN style="mso-spacerun: yes">
</SPAN></SPAN><B><I><SPAN lang=EN-US
style="FONT-SIZE: 12pt; mso-bidi-font-size: 10.0pt; mso-hansi-font-family: 宋體; mso-fareast-font-family: 黑體">43</SPAN></I></B><SPAN
lang=EN-US
style="FONT-SIZE: 12pt; mso-bidi-font-size: 10.0pt; mso-hansi-font-family: 宋體"><SPAN
style="mso-spacerun: yes"> </SPAN>30<SPAN
style="mso-spacerun: yes"> </SPAN>9
<P></SPAN></P>
<P class=MsoPlainText
style="TEXT-INDENT: 132pt; LINE-HEIGHT: 12pt; mso-char-indent-count: 11.0; mso-char-indent-size: 12pt; tab-stops: 595.4pt 641.2pt 687.0pt 732.8pt; mso-line-height-rule: exactly"><SPAN
lang=EN-US
style="FONT-SIZE: 12pt; mso-bidi-font-size: 10.0pt; mso-hansi-font-family: 宋體">22<SPAN
style="mso-spacerun: yes"> </SPAN>39<SPAN style="mso-spacerun: yes">
</SPAN>48<SPAN style="mso-spacerun: yes"> </SPAN></SPAN><B><I><SPAN
lang=EN-US
style="FONT-SIZE: 12pt; mso-bidi-font-size: 10.0pt; mso-hansi-font-family: 宋體; mso-fareast-font-family: 黑體">49</SPAN></I></B><SPAN
lang=EN-US
style="FONT-SIZE: 12pt; mso-bidi-font-size: 10.0pt; mso-hansi-font-family: 宋體"><SPAN
style="mso-spacerun: yes"> </SPAN>44<SPAN style="mso-spacerun: yes">
</SPAN>31<SPAN style="mso-spacerun: yes"> </SPAN>10
<P></SPAN></P>
<P class=MsoPlainText
style="TEXT-INDENT: 132pt; LINE-HEIGHT: 12pt; mso-char-indent-count: 11.0; mso-char-indent-size: 12pt; tab-stops: 595.4pt 641.2pt 687.0pt 732.8pt; mso-line-height-rule: exactly"><SPAN
lang=EN-US
style="FONT-SIZE: 12pt; mso-bidi-font-size: 10.0pt; mso-hansi-font-family: 宋體">21<SPAN
style="mso-spacerun: yes"> </SPAN>38<SPAN style="mso-spacerun: yes">
</SPAN></SPAN><B><I><SPAN lang=EN-US
style="FONT-SIZE: 12pt; mso-bidi-font-size: 10.0pt; mso-hansi-font-family: 宋體; mso-fareast-font-family: 黑體">47</SPAN></I></B><SPAN
lang=EN-US
style="FONT-SIZE: 12pt; mso-bidi-font-size: 10.0pt; mso-hansi-font-family: 宋體"><SPAN
style="mso-spacerun: yes"> </SPAN>46 </SPAN><B><SPAN lang=EN-US
style="FONT-SIZE: 12pt; mso-bidi-font-size: 10.0pt; mso-hansi-font-family: 宋體; mso-fareast-font-family: 黑體"><SPAN
style="mso-spacerun: yes"> </SPAN><I>45</I> </SPAN></B><SPAN lang=EN-US
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -