2038 box game

來源:互聯網
上載者:User
描述

 lcl剛開始學習遞迴的時候,基礎打得不好,雖然會按模板套題做,但並不怎麼理得清遞迴是怎麼啟動並執行(>_<)。。。
  所以,又是一年遞迴時,又是一年糾結時,lcl把自己對遞迴弱弱的小理解寫成了一個小遊戲(噢大牛退散吧……掌握得比較好的同學可以跳過這一段直接做題~)。

  遊戲的內容是這樣的,我們需要來嘗試堆一些集裝箱,每個箱子上面都有相同個數的標籤,這表示箱子裡所裝的物品類型和個數。
  遊戲一開始,我們只有一個箱子,上面的標籤上寫著物品的類型以及每類物品個數的初始值,然後我們需要按照一定的規則推算出下一個箱子上面標籤的內容,請注意:每個箱子所能容納的物品類型和種類數量都相同。
  現在,按照這個規則,我們可能已經把箱子們堆得很高了(@_@),但是規則對標籤的內容有所限制,如果我們推算出一個箱子的標籤內容超出了限制,就不能繼續放下去了,這時候,我們就繼續分析現有的擺在最頂上的箱子,看它是不是有可能推算出別的符合規則的箱子,如果不行的話,就把這個箱子取下來,它已經沒有價值啦~接著分析現在擺在頂部的(也就是緊接著下面的那個)箱子,以此類推,直到所有的箱子都被取下,遊戲結束~

  下面,由於lcl的表達能力有限,就用一個小程式來做例子吧~^^

  ……
void aba(char ch){

    if  (ch!='!'){
        cin>>ch;
        aba();
 
    }

}

  假設我們用這個遞迴程式來描述遊戲的規則,那麼我們可以看到,在這輪遊戲裡,箱子上有一個標籤,它描述箱子裡有一個char類型的物品,這個物品的初始值是給出的,以後的值都是通過讀入來完成的,規定標籤的值不能為’!‘。
  現在假設給出的輸入是:abc!那麼我們玩遊戲的過程會是這樣的(我們用up來描述放上一個新箱子,用down來描述取下一個老箱子,冒號後面是標籤的內容)。

1.up:a
2.up:b
3.up:c
4.down:c
5.down:b
6.down:a

  大家可以清晰的看到,從第四步開始,動作開始由up變成down了,這是因為標籤值等於了!,所以不能再繼續堆下去了。
  箱子的堆疊情況如所示。

       
         c
      b b b 
  a a a a a 
  1 2 3 4 5 6 

  或許到這裡能夠說明一些問題,放上一個新箱子其實對應著我們在遞迴過程中調用函數的過程,我們不斷的調用函數自身,不斷的擺上新的箱子,直到新的箱子已經違背了對此函數的限制為止。每一次的函數調用,系統都會記錄下當前的所有變數值,就好像每個箱子都有確定的標籤一樣。   而在這裡要注意,遞迴調用必須有一個能夠讓它終止的規則,否則箱子就會無止盡的越擺越高,最後這個世界就會崩潰啦~

  好吧\(^o^)/~現在我們就根據上面那個小例子,來輸出一下對於任意給出的資料,玩遊戲的過程會是怎樣的吧~

輸入

包括n組資料。
第一行:包括一個整數n (1<=n<=200)
第2~2*n+1行:
每組資料包括一行,即一個以!結尾的字串。

輸出

對於每組資料,按照“序號:up/down:標籤值”的格式依次輸出遞迴過程。兩組資料間空一行
詳見範例。

範例輸入
2
123!
abc!
範例輸出
1.up:1
2.up:2
3.up:3
4.down:3
5.down:2
6.down:1

1.up:a
2.up:b
3.up:c
4.down:c
5.down:b

6.down:a

此題沒有用遞迴來做,用字串來實現耗時更少

#include <stdio.h>int main(){int number,t;int i;int j;int k;char a[1000];scanf("%d",&number);for(t=1;t<=number;t++){k=1;scanf("%s",&a);for(i=0;a[i]!='!';i++){printf("%d.up:%c\n",k++,a[i]);}for(j=i-1;j>=0;j--){printf("%d.down:%c\n",k++,a[j]);}printf("\n");}return 0;}

聯繫我們

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