優美三角剖分

優美三角剖分

(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.
謝謝大家!!!!!!!!!!!!!!!!
/鼓掌

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章