日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

小鱼儿吐泡泡(栈)

發布時間:2023/12/9 编程问答 40 豆豆
生活随笔 收集整理的這篇文章主要介紹了 小鱼儿吐泡泡(栈) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

鏈接:https://www.nowcoder.com/acm/contest/74/A
來源:牛客網
?

題目描述

小魚兒吐泡泡,嘟嘟嘟冒出來。小魚兒會吐出兩種泡泡:大泡泡"O",小泡泡"o"。 兩個相鄰的小泡泡會融成一個大泡泡,兩個相鄰的大泡泡會爆掉。 (是的你沒看錯,小氣泡和大氣泡不會產生任何變化的,原因我也不知道。) 例如:ooOOoooO經過一段時間以后會變成oO。

輸入描述:

數據有多組,處理到文件結束。 每組輸入包含一行僅有'O'與'o'組成的字符串。

輸出描述:

每組輸出僅包含一行,輸出一行字符串代表小魚兒吐出的泡泡經過融合以后所剩余的泡泡。

很明顯的棧:

#include<stdio.h> #include<string.h> #include<math.h>#include<map> #include<queue> #include<stack> #include<string> #include<iostream> #include<algorithm> using namespace std;#define ll long long #define da 0x3f3f3f3f #define xiao -0x3f3f3f3f #define clean(a,b) memset(a,b,sizeof(a))// 雷打不動的頭文件 char chuan[105]; char can[105]; int main() {while(~scanf("%s",&chuan)) //輸進去所有的泡泡 {stack<char> zhan; //定義一個棧 int i,j,l=strlen(chuan); //取長度 for(i=0;i<l;++i){if(zhan.size()==0) //如果棧為空,就直接放進去 {zhan.push(chuan[i]);continue; //跳過循環 }if(zhan.top()=='O'&&chuan[i]=='O') //爆炸的情況 {zhan.pop(); //就踢出去一個棧頂元素 continue; //跳出循環 }if(zhan.top()=='o'&&chuan[i]=='o') //合二為一的情況 {zhan.pop(); // 先去掉棧頂元素 if(zhan.size()) //如果 此時還有元素 {if(zhan.top()=='O') //&&棧頂可消 zhan.pop(); //再消一個 }else // 沒元素了 zhan.push('O'); //把大泡泡放進去 continue; //跳出循環 }zhan.push(chuan[i]); //如果上述條件都不符合(一個小泡泡+大泡泡) }while(zhan.size()) //將棧內元素放到字符串內 {can[zhan.size()-1]=zhan.top();zhan.pop();}l=strlen(can); //取長度 for(i=0;i<l;++i)printf("%c",can[i]); //輸出格式 printf("\n");clean(chuan,'\0'); //清空; clean(can,'\0');} }

?

?

?

?

總結

以上是生活随笔為你收集整理的小鱼儿吐泡泡(栈)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。