有 n 個學生站成一排,每個學生有乙個能力值,牛牛想從這 n 個學生中按照順序選取 k 名學生,要求相鄰兩個學生的位置編號的差不超過 d,使得這 k 個學生的能力值的乘積最大,你能返回最大的乘積嗎?
每個輸入包含 1 個測試用例。每個測試資料的第一行包含乙個整數 n (1 <= n <= 50),表示學生的個數,接下來的一行,包含 n 個整數,按順序表示每個學生的能力值 ai(-50 <= ai <= 50)。接下來的一行包含兩個整數,k 和 d (1 <= k <= 10, 1 <= d <= 50)。
輸出一行表示最大的乘積。示例1
37 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 表示學生...