網易2018校招內推程式設計題 彩色磚塊

2021-08-07 19:13:00 字數 691 閱讀 5961

小易有一些彩色的磚塊。每種顏色由乙個大寫字母表示。各個顏色磚塊看起來都完全一樣。現在有乙個給定的字串s,s中每個字元代表小易的某個磚塊的顏色。小易想把他所有的磚塊排成一行。如果最多存在一對不同顏色的相鄰磚塊,那麼這行磚塊就很漂亮的。請你幫助小易計算有多少種方式將他所有磚塊排成漂亮的一行。(如果兩種方式所對應的磚塊顏色序列是相同的,那麼認為這兩種方式是一樣的。)

例如: s = 「abab」,那麼小易有六種排列的結果:

「aabb」,」abab」,」abba」,」baab」,」baba」,」bbaa」

其中只有」aabb」和」bbaa」滿足最多只有一對不同顏色的相鄰磚塊。

思路:

也就是字元的型別最多2種,才有可能排列成漂亮磚塊。

所以,只要統計出字元型別的個數即可。

為使**簡單,使用unique函式和erase,把所有重複的的字元刪掉。

#include#include//呼叫unique函式

#includeusing namespace std;

int main()

; sort(vv,vv+6); //先排序

int l=unique(vv,vv+6)-vv;

for(int i=0;icout

}

網易2018校招內推程式設計題集合

程式設計題 彩色的磚塊 時間限制 1秒 空間限制 32768k 小易有一些彩色的磚塊。每種顏色由乙個大寫字母表示。各個顏色磚塊看起來都完全一樣。現在有乙個給定的字串s,s中每個字元代表小易的某個磚塊的顏色。小易想把他所有的磚塊排成一行。如果最多存在一對不同顏色的相鄰磚塊,那麼這行磚塊就很漂亮的。請你...

2018網易校招內推程式設計題 堆棋子

小易將n個棋子擺放在一張無限大的棋盤上。第i個棋子放在第x i 行y i 列。同乙個格仔允許放置多個棋子。每一次操作小易可以把乙個棋子拿起並將其移動到原格仔的上 下 左 右的任意乙個格仔中。小易想知道要讓棋盤上出現有乙個格仔中至少有i 1 i n 個棋子所需要的最少操作次數.輸入描述 輸入包括三行,...

網易校招2018程式設計題

小易將n個棋子擺放在一張無限大的棋盤上。第i個棋子放在第x i 行y i 列。同乙個格仔允許放置多個棋子。每一次操作小易可以把乙個棋子拿起並將其移動到原格仔的上 下 左 右的任意乙個格仔中。小易想知道要讓棋盤上出現有乙個格仔中至少有i 1 i n 個棋子所需要的最少操作次數.輸入描述 輸入包括三行,...