牛客網 合唱團

2021-08-08 15:54:54 字數 684 閱讀 5252

有 n 個學生站成一排,每個學生有乙個能力值,牛牛想從這 n 個學生中按照順序選取 k 名學生,要求相鄰兩個學生的位置編號的差不超過 d,使得這 k 個學生的能力值的乘積最大,你能返回最大的乘積嗎?

每個輸入包含 1 個測試用例。每個測試資料的第一行包含乙個整數 n (1 <= n <= 50),表示學生的個數,接下來的一行,包含 n 個整數,按順序表示每個學生的能力值 ai(-50 <= ai <= 50)。接下來的一行包含兩個整數,k 和 d (1 <= k <= 10, 1 <= d <= 50)。
輸出一行表示最大的乘積。
示例1

3

7 4 7

2 50

49
f[i][j][0/1]表示選中第i個人後已經有j個人,0或1表示最大或最小乘積(要考慮到負數)
#include#includeusing namespace std;

long long f[51][51][2];

int a[55];

int main()

} ans=max(ans,max(f[i][k][0],f[i][k][1]));

} printf("%lld\n",ans);

return 0;

}

牛客網合唱團

n 3 arr 7,4,7 k,d 2,50 fm 0 n for i in range k k d fn 0 n for i in range k k d res 0 for i in range n fm 0 i arr i fn 0 i arr i for i in range n for k...

牛客網 動態規劃(C ) 合唱團

有 n 個學生站成一排,每個學生有乙個能力值,牛牛想從這 n 個學生中按照順序選取 k 名學生,要求相鄰兩個學生的位置編號的差不超過 d,使得這 k 個學生的能力值的乘積最大,你能返回最大的乘積嗎?include include include include using namespace std...

合唱團問題

問題 有 n 個學生站成一排,每個學生有乙個能力值,牛牛想從這 n 個學生中按照順序選取 k 名學生,要求相鄰兩個學生的位置編號的差不超過 d,使得這 k 個學生的能力值的乘積最大,你能返回最大的乘積嗎?輸入 每個輸入包含 1 個測試用例。每個測試資料的第一行包含乙個整數 n 1 n 50 表示學生...