1360 神奇的液體

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

你有個魔術瓶,經常可以給別人表演個魔術……

這個魔術是這樣的:

你有個類似試管形狀的玻璃屏(比試管大),現在可以往裡面注入X毫升的Y顏色的神奇的液體(這個顏色可能是R,Y,B中一個),這個液體神奇在哪裡?

注入這個魔術瓶後,如果瓶中本來沒有液體,那麼就沉澱在最下層;

如果瓶中有了液體,那麼判斷:如果該顏色和他下面那層的顏色一樣,就會融合成一塊,比如開始(從上往下看)液體層次顏色為R Y B R,當倒入R顏色的液體後,顏色層次還是R Y B R,但是最上面一層的體積會變化成為2者之和。如果顏色和他下面那層顏色不一樣,就會單獨產生一層覆蓋下層,例如R Y B R,倒入Y顏色後,編程Y R Y B R。

這個魔術瓶的一個神奇之處還在於,倒出液體,他只會讓最外面一層液體完全倒出,一個倒出操作下來絕對不會剩餘該層液體或者倒出下一層液體。

現在經過若干次操作後,希望你能一口給出現在魔術瓶中液體層次分布情況,也就是從上層往下層依次報出每個層次液體的顏色和體積。

輸入

第一行包含一個整數T,表示有T組測試資料。

以下每組測試資料格式:

第一行包含一個整數N,表示有N次操作。

以下N行,每行資料構造為以下2個情況:

PUT Y X 表示倒入Y顏色的液體X毫升,其中Y為R Y B中的一個,X為整數

GET 表示倒出最上層的液體。

保證資料合法性。

輸出

對於每組資料,輸出經過N次操作後的液體序列,要求如題目描述。

範例輸入
1
4
PUT R 10
PUT B 10
PUT B 10
GET
範例輸出
R 10

 

用棧實現即可

#include <stdio.h>main(){int number,te;int op;int i;int j;    char temp;int n;int up;char b[1000];int a[1000];scanf("%d",&number);for(te=1;te<=number;te++){up=0;scanf("%d",&op);for(i=0;i<op;i++){  getchar();scanf("%c",&temp);if(temp=='P'){for(j=0;j<3;j++)scanf("%c",&temp);scanf("%c",&temp);scanf("%d",&n);if(up==0){ a[up]=n;  b[up]=temp;  up++;}else{if(b[up-1]==temp)a[up-1]+=n;else{ a[up]=n;     b[up]=temp;     up++;} }}if(temp=='G'){printf("%c %d\n",b[0],a[0]);for(j=0;j<up-1;j++){a[j]=a[j+1];b[j]=b[j+1];up--;}}}}}

 

聯繫我們

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