優美三角剖分
(triangle.pas/c/cpp)
題目描述:
小X同學爲了搞好和小C同學的關係,特意尋找了一些優美的圖像作爲禮物。
這是一些由無窮無盡三角形組成的極爲優美的圖形,小X同學很想實現這些極富美感的圖形,但是作爲一名初賽都未過的僞退役選手,他水平有限,於是這個艱鉅的任務就落在你們身上了。
由於好心的出題人,數據範圍n<=10。
(具體圖形詳見樣例,每一階圖形都是由3個上一階圖形拼成的)
輸入描述:
只有一行,輸入一個整數爲N,表示要求出N階的圖形。
輸出描述;
輸出描述:
輸出相應的圖形。
樣例輸入:(三合一,最終評測樣例只有一行,1個N)
3
2
1
樣例輸出:
/\
/__\
/\ /\
/__\/__\
/\ /\
/__\ /__\
/\ /\ /\ /\
/__\/__\/__\/__\
/\
/__\
/\ /\
/__\/__\
/\
/__\
這題遞歸,而已不需要更多。
不過呢。
作爲一個,一開始沒有找到規律的人。
我認真的打表了8個圖形。。。。
教大家一個很好用的打表的方法,
雖然沒用,但我還是要分享。
看啊,P黨。
比如:
正常是這樣:
writeln(' XXXX ');
writeln('XXXXXXXXXX');
實現步奏:
先複製上一個圖形:
writeln(' XXXX ');
writeln('XXXXXXXXXX');
然後(在下面複製一個):
writeln(' XXXX ');
writeln('XXXXXXXXXX');
writeln(' XXXX ');
writeln('XXXXXXXXXX');第三部(打空格):
writeln(' XXXX ');
writeln(' XXXXXXXXXX');
writeln(' XXXX ');
writeln('XXXXXXXXXX');
第四部(一行一行復制上):
writeln(' XXXX ');
writeln(' XXXXXXXXXX');
writeln(' XXXX ');
writeln('XXXXXXXXXXXXXXXXXXXX');
然後:
writeln(' XXXX ');
writeln(' XXXXXXXXXX');
writeln(' XXXX XXXX ');
writeln('XXXXXXXXXXXXXXXXXXXX');
好了。
是不是很快?
謝謝;
接下來是正解:
var i,j,h,k,n,m:longint; a:array[1..2048]of ansistring; begin assign(input,'triangle.in'); assign(output,'triangle.out'); reset(input); rewrite(output); h:=2; a[1]:=' /\ '; a[2]:='/__\'; read(n); for i:=2 to n do begin for j:=1 to h do a[j+h]:=a[j]+a[j]; for j:=1 to h do for k:=1 to h do a[j]:=' '+a[j]+' '; h:=h*2; end; for i:=1 to h do writeln(a[i]); close(input); close(output); end.
謝謝大家!!!!!!!!!!!!!!!!
/鼓掌