C++ LOL OJ 計算火車停站方案

來源:互聯網
上載者:User

標籤:斐波那契數列   樹   建立二叉樹   求二叉樹寬度   

【題目描述】

我們都知道,火車沿途會經過各種大大小小的站,火車在可能會跳過某些站不停靠,但是肯定不會連續跳過兩站及以上。假設沿途一共會有m個月台(火車起初停靠在第一站),一共有多少種不同的停站方案?

【輸入】

輸入的第一行為一個整數 T (0 < T < 40),接下來為 T 組測試資料,每組只有一個整數 m (0 < m < 40),表示月台的數量。

【輸出】

對於每組測試資料,輸出只有一行為一個整數,表示可供選擇的方案數。

【演算法思想】

1.世界本可以更簡單但是有的人就是喜歡沒事找事,簡單的路走起來覺得不進階,其實,是自己很傻逼;

2.直接使用兩個數字就可以解決的事情,筆者生來賤命一條,就喜歡用樹的結構上去幹,所以說傻逼;

3.直接使用斐波那契數列就可以解決的演算法,筆者就是採用了二叉樹的寬度求解,所以說不是一般的傻逼;

4.和使用非遞迴的思想實現圖的深度遍曆一樣,本文只是為了資料結構而資料結構,這在演算法時間消耗和空間消耗以及比這本就不多的腦細胞消耗上來說是很不划算的,所以說傻逼簡直了!

綜上,不要盲目資料結構,想好了兼得的方式在動筆!!!

【屌絲代碼】

<pre name="code" class="cpp">#include<iostream>#include<stack>#include<vector>#include<queue>using namespace std;typedef struct BiTNode{int data;BiTNode *lc;BiTNode *rc;}BiTNode;BiTNode* createTree(BiTNode*head,int lay,queue<int> q){if(lay == 0){head = NULL;return NULL;}head = new BiTNode;head->data = 1;if(q.size() == 0){head->lc = createTree(head->lc,lay-1,q);q.push(head->data);head->rc = createTree(head->rc,lay-1,q);}else{q.pop();head->lc = createTree(head->lc,lay-1,q);head->rc = NULL;}return head;};int widthTree(BiTNode*head,int lay){queue<BiTNode*> q;int pos,size,width(0),count;q.push(head);BiTNode* tmp;while(!q.empty()){size = q.size();pos = 0;count = 0;while(pos<size){tmp = q.front();q.pop();count++;if(tmp->lc!=NULL){q.push(tmp->lc);}if(tmp->rc!=NULL){q.push(tmp->rc);}pos++;}if(count>width){width = count;}}return width;};int main(){int time,lay_num,width;BiTNode* head = NULL;cin>>time; // 輸入測寬次數while(time--){cin>>lay_num; // 輸入二叉樹層數queue<int> q;//cout<<q.size()<<endl;head = createTree(head,lay_num,q); // 建樹width = widthTree(head,lay_num); // 計算二叉樹,樹寬。cout<<width<<endl;}return 0;}

【小結】

1.建立二叉樹時,對未安排資料額的節點,賦空值是很有必要的;

2.對二叉樹求取樹寬時,遇到建樹不標準的時候,判斷節點是否存在,不僅僅是指標為空白的判斷很重要,樹的結點資料也可以作為節點存在的判據。

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

C++ LOL OJ 計算火車停站方案

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.