[程式設計題] 彩色的磚塊
時間限制:1秒
空間限制:32768k
小易有一些彩色的磚塊。每種顏色由乙個大寫字母表示。各個顏色磚塊看起來都完全一樣。現在有乙個給定的字串s,s中每個字元代表小易的某個磚塊的顏色。小易想把他所有的磚塊排成一行。如果最多存在一對不同顏色的相鄰磚塊,那麼這行磚塊就很漂亮的。請你幫助小易計算有多少種方式將他所有磚塊排成漂亮的一行。(如果兩種方式所對應的磚塊顏色序列是相同的,那麼認為這兩種方式是一樣的。)輸入描述:例如: s = "abab",那麼小易有六種排列的結果:
"aabb","abab","abba","baab","baba","bbaa"
其中只有"aabb"和"bbaa"滿足最多只有一對不同顏色的相鄰磚塊。
輸入包括乙個字串s,字串s的長度length(1 ≤ length ≤ 50),s中的每乙個字元都為乙個大寫字母(a到z)。
輸出描述:
輸出乙個整數,表示小易可以有多少種方式。
輸入例子1:
abab
輸出例子1:
2
#include#include#include#include#include#include#include#include#include#includeusing namespace std;
int main()
sort(a,a+n);
int d=a[1]-a[0];
for(int i=2;i[程式設計題] 交錯01串
時間限制:1秒
空間限制:32768k
如果乙個01串任意兩個相鄰位置的字元都是不一樣的,我們就叫這個01串為交錯01串。例如: "1","10101","0101010"都是交錯01串。小易現在有乙個01串s,小易想找出乙個最長的連續子串,並且這個子串是乙個交錯01串。小易需要你幫幫忙求出最長的這樣的子串的長度是多少。
輸入描述:
輸入包括字串s,s的長度length(1 ≤ length ≤ 50),字串中只包含'0'和'1'
輸出描述:
輸出乙個整數,表示最長的滿足要求的子串長度。
輸入例子1:
111101111
輸出例子1:
3
#include#include#include#include#include#include#include#include#include#includeusing namespace std;
string s;
int main()
for(int i=n-1;i>=0;i-=2)
for(int i=0;i>y[i];
} for(int i=0;i[程式設計題] 瘋狂佇列
時間限制:1秒
空間限制:32768k
小易老師是非常嚴厲的,它會要求所有學生在進入教室前都排成一列,並且他要求學生按照身高不遞減的順序排列。有一次,n個學生在列隊的時候,小易老師正好去衛生間了。學生們終於有機會反擊了,於是學生們決定來一次瘋狂的佇列,他們定義乙個佇列的瘋狂值為每對相鄰排列學生身高差的絕對值總和。由於按照身高順序排列的佇列的瘋狂值是最小的,他們當然決定按照瘋狂值最大的順序來進行列隊。現在給出n個學生的身高,請計算出這些學生列隊的最大可能的瘋狂值。小易老師回來一定會氣得半死。
輸入描述:
輸入包括兩行,第一行乙個整數n(1 ≤ n ≤ 50),表示學生的人數
第二行為n個整數h[i](1 ≤ h[i] ≤ 1000),表示每個學生的身高
輸出描述:
輸出乙個整數,表示n個學生列隊可以獲得的最大的瘋狂值。
如樣例所示:
當佇列排列順序是: 25-10-40-5-25, 身高差絕對值的總和為15+30+35+20=100。
這是最大的瘋狂值了。
輸入例子1:
5
5 10 25 40 25
輸出例子1:
100
瘋狂值相當於乙個求和絕對值函式,展開後有(n-1)個加項和(n-1)個減項,讓最大的數作為加項,最小的書作為減項,再注意每個數最多做加項或減項兩次。
#include#include#include#include#include#include#include#include#include#includeusing namespace std;
int h[55]=;
int main()
sort(h+1,h+1+n);
int s=(n-1)/2;
int max=0;
for(int i=n;i>n-s;--i)
if(n%2==0)
cout<[程式設計題] 小易喜歡的數列
時間限制:1秒
空間限制:32768k
小易非常喜歡擁有以下性質的數列:
1、數列的長度為n
2、數列中的每個數都在1到k之間(包括1和k)
3、對於位置相鄰的兩個數a和b(a在b前),都滿足(a <= b)或(a mod b != 0)(滿足其一即可)
例如,當n = 4, k = 7
那麼,它的長度是4,所有數字也在1到7範圍內,並且滿足第三條性質,所以小易是喜歡這個數列的
但是小易不喜歡這個數列。小易給出n和k,希望你能幫他求出有多少個是他會喜歡的數列。
輸入描述:
輸入包括兩個整數n和k(1 ≤ n ≤ 10, 1 ≤ k ≤ 10^5)
輸出描述:
輸出乙個整數,即滿足要求的數列個數,因為答案可能很大,輸出對1,000,000,007取模的結果。
輸入例子1:
2 2
輸出例子1:
3
用動態規劃,dp[i][j]表示長為i且以j結尾的數列的個數。
#include#include#include#include#include#include#include#include#include#includeusing namespace std;
int n,k;
int dp[15][100005];
int mod=1000000007;
int main()
for(int j=1;j<=k;++j)
}} int ans=0;
for(int i=1;i<=k;++i)
cout
}
網易2018校招內推程式設計題 彩色磚塊
小易有一些彩色的磚塊。每種顏色由乙個大寫字母表示。各個顏色磚塊看起來都完全一樣。現在有乙個給定的字串s,s中每個字元代表小易的某個磚塊的顏色。小易想把他所有的磚塊排成一行。如果最多存在一對不同顏色的相鄰磚塊,那麼這行磚塊就很漂亮的。請你幫助小易計算有多少種方式將他所有磚塊排成漂亮的一行。如果兩種方式...
2018網易校招內推程式設計題 堆棋子
小易將n個棋子擺放在一張無限大的棋盤上。第i個棋子放在第x i 行y i 列。同乙個格仔允許放置多個棋子。每一次操作小易可以把乙個棋子拿起並將其移動到原格仔的上 下 左 右的任意乙個格仔中。小易想知道要讓棋盤上出現有乙個格仔中至少有i 1 i n 個棋子所需要的最少操作次數.輸入描述 輸入包括三行,...
網易校招2018程式設計題
小易將n個棋子擺放在一張無限大的棋盤上。第i個棋子放在第x i 行y i 列。同乙個格仔允許放置多個棋子。每一次操作小易可以把乙個棋子拿起並將其移動到原格仔的上 下 左 右的任意乙個格仔中。小易想知道要讓棋盤上出現有乙個格仔中至少有i 1 i n 個棋子所需要的最少操作次數.輸入描述 輸入包括三行,...