程式設計題07 彩色的磚塊 (網易)

2021-09-24 05:57:51 字數 1278 閱讀 4735

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

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

"aabb","abab","abba","baab","baba","bbaa"

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

輸入包括乙個字串s,字串s的長度length(1 ≤ length ≤ 50),s中的每乙個字元都為乙個大寫字母(a到z)。
輸出乙個整數,表示小易可以有多少種方式。
示例1

abab

思路1:

查詢字元中有幾個不同的字元,1個,輸出1;兩個,輸出2;3個輸出0

找不同字元個數:建立乙個陣列,陣列下標是字母的ascii碼,從字串中依次查詢字母,在相應的下標陣列元素加1,計算陣列元素中大於1的個數。

int main(void)

; int char_num[200] = ;

int num = 0, i = 0,j = 0,n=0;

char color1 = 0, color2 = 0, color3 = 0;

scanf("%s", &str);

num = strlen(str);

for (i=0;i2)printf("0");

return 0;

}

思路2:

1.冒泡公升序排序

2.找出相鄰兩個字母不同的個數

#include #include void bubble(char * str,int num)

} }}int main(void)

; int char_num[200] = ;

int num = 0, i = 0, j = 0, n = 0;

char color1 = 0, color2 = 0, color3 = 0;

scanf("%s", &str);

num = strlen(str);

bubble(str,num);

for (i=0;i1)printf("0");

return 0;

}

程式設計題 彩色的磚塊

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

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

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

彩色的磚塊

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