【DP】优美三角剖分
生活随笔
收集整理的這篇文章主要介紹了
【DP】优美三角剖分
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
優美三角剖分
題目大意:
有一個圖形,通過組合可以變成新的圖形,現在要求第n個圖形
原題:
題目描述
小X同學為了搞好和小C同學的關系,特意尋找了一些優美的圖像作為禮物。
這是一些由無窮無盡三角形組成的極為優美的圖形,小X同學很想實現這些極富美感的圖形,但是作為一名初賽都未過的偽退役選手,他水平有限,于是這個艱巨的任務就落在你們身上了。
由于好心的出題人,數據范圍n<=10。(具體圖形詳見樣例,每一階圖形都是由3個上一階圖形拼成的)
輸入
只有一行,輸入一個整數為N,表示要求出N階的圖形。
輸出
輸出相應的圖形。
輸入樣例
輸入樣例#1
1輸入樣例#2
2輸入樣例#3
3輸出樣例
輸出樣例#1
/\ /__\輸出樣例#2
/\/__\/\ /\ /__\/__\輸出樣例#3
/\/__\/\ /\/__\/__\/\ /\/__\ /__\/\ /\ /\ /\ /__\/__\/__\/__\說明
數據范圍:
10個測試點,n為1-10
解題思路:
我們一個初始分為兩部分(如圖)
/\ ——————(分割線) /__\然后兩部分各加上一個自己可以得出下一個圖形的兩部分
/\ /\ ————————————————————/__\/__\合在一起就得到了下一個圖形
/\ /\/__\/__\然后以此類推,用DP得出剩下的(但要注意空格)
代碼:
#include<cstdio> #include<string> #include<cstring> #include<iostream> using namespace std; int n,k; string a[1500]; int main() {scanf("%d",&n);k=2;a[1]=" /\\ ";//處值a[2]="/__\\";for (int i=2;i<=n;++i){for (int j=1;j<=k;++j){a[k+j]=a[j]+a[j];//合成下一個for (int c=1;c<=k;++c)a[j]=" "+a[j]+" ";//空格}k<<=1;//乘2}for (int i=1;i<=k;++i)cout<<a[i]<<endl;//輸出 }總結
以上是生活随笔為你收集整理的【DP】优美三角剖分的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【并查集】银河英雄传说 (luogu 1
- 下一篇: 开源鸿蒙 OpenHarmony 4.0