【類比】【CQOI 2007】【bzoj 1258】三角形tri

來源:互聯網
上載者:User

標籤:

1258: [CQOI2007]三角形tri
Time Limit: 5 Sec  Memory Limit: 162 MBSubmit: 276  Solved: 160

Description

畫一個等邊三角形,把三邊的中點串連起來,得到四個三角形,把它們稱為T1,T2,T3,T4,1。把前三個三角形也這樣劃分,得到12個更小的三角形:T11,T12,T13,T14,T21,T22,T23,T24,T31,T32,T33,T34,2。

把編號以1,2,3結尾的三角形又繼續劃分…最後得到的分形稱為Sierpinski三角形。 圖1. 圖2. 如果B不包含A,且A的某一條完整的邊是B的某條邊的一部分,則我們說A靠在B的邊上。例如T12靠在T24和T4上,但不靠在T32上。給出Spierpinski三角形中的一個三角形,找出它靠著的所有三角形。

Input

輸入僅一行,即三角形的編號,以T開頭,後面有n個1到4的數字。僅最後一個數字可能為4。

Output

輸出每行一個三角形編號,按字典序從小到大排列。

Sample Input

T312

Sample Output

T314T34T4

HINT

50%的資料滿足:1<=n<=5100%的資料滿足:1<=n<=50

題解:

一道挺有意思的題。
先定義一下同階,是指編號長度相同的兩個三角形,比如T123和T122。
首先我們可以發現,如果結尾是4,那麼我們只需要輸出和它同階的末尾是1,2,3的就可以了。
因為三角形只有三條邊(貌似是廢話),所以我們記錄一下它每條邊的情況就好了,然後O(n)掃一遍就好了。

Code:

#include<iostream>#include<cstdio>#include<cstdlib>#include<cmath>#include<cstring>#include<algorithm>using namespace std;char ch[100]; int n,m,l;bool dis[5]={0};void out(int x,int d){    for (int i=0; i<=x; i++)        printf("%c",ch[i]);    printf("%d\n",d);}int main(){    scanf("%s",&ch);    l=strlen(ch); l--;    if (ch[l]==‘4‘){        for (int i=1; i<=3; i++)            out(l-1,i);        return 0;    }    if (ch[l]==‘1‘) dis[1]=dis[3]=true;    else if (ch[l]==‘2‘) dis[1]=dis[2]=true;    else dis[2]=dis[3]=true;    out(l-1,4);    for (int i=l-1; i>=1; i--){        if (ch[i]==‘1‘){            if (dis[2])                out(i-1,4),dis[2]=false;        }        else if (ch[i]==‘2‘){            if (dis[3])                out(i-1,4),dis[3]=false;        }        else if (dis[1])            out(i-1,4),dis[1]=false;    }    return 0;}

著作權聲明:本文為博主原創文章,未經博主允許不得轉載。

【類比】【CQOI 2007】【bzoj 1258】三角形tri

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.