有 n 個學生站成一排,每個學生有乙個能力值,牛牛想從這 n 個學生中按照順序選取 k 名學生,要求相鄰兩個學生的位置編號的差不超過 d,使得這 k 個學生的能力值的乘積最大,你能返回最大的乘積嗎?
輸入描述:
每個輸入包含 1 個測試用例。每個測試資料的第一行包含乙個整數 n (1 <= n <= 50),表示學生的個數,接下來的一行,包含 n 個整數,按順序表示每個學生的能力值 ai(-50 <= ai <= 50)。接下來的一行包含兩個整數,k 和 d (1 <= k <= 10, 1 <= d <= 50)。
輸出描述:
輸出一行表示最大的乘積。
輸入例子:
37 4 7
2 50
輸出例子:
49
動態規劃:考慮正負,需儲存乘積最大值和乘積最小值。dp0[i][j]表示選中第i個數長度為j的乘積最大,
dp1[i][j]表示選中第i個數長度為j的乘積最小。
長度為j的乘積由長度為j-1轉化而來,即dp[m][j-1]*a[i] m的取值為[max(1,i-d),i-1]。
#include using namespace std;typedef long long ll;
ll dp0[51][11];
ll dp1[51][11];
int a[51];
ll ans;
int main()
cin>>k>>d;
for(int i=1;i<=n;i++)
}ans=max(ans,dp0[i][k]);
cout<}
cout
}
參考:
網易2017內推筆試題
如果乙個數字序列逆置之後跟原序列是一樣的就稱這樣的數字串行為回文序列。例如 是回文序列,不是回文序列。現在給出乙個數字序列,允許使用一種轉換操作 選擇任意兩個相鄰的數,然後從序列移除這兩個數,並用這兩個數字的和插入到這兩個數之前的位置 只插入乙個和 現在對於所給序列要求出最少需要多少次操作可以將其變...
網易2023年內推筆試題
小易有乙個圓心在座標原點的圓,小易知道圓的半徑的平方。小易認為在圓上的點而且橫縱座標都是整數的點是優雅的,小易現在想尋找乙個演算法計算出優雅的點的個數,請你來幫幫他。例如 半徑的平方如果為25 優雅的點就有 3,4 4,3 0,5 5,0 一共12個點。輸入描述 輸入為乙個整數,即為圓半徑的平方,範...
2017網易校招內推筆試題
本人筆試的計算機視覺方向,程式設計題和其他研發崗位類似。歡迎小夥伴們一起討論出正確答案。共20個選擇題,3個程式設計題,1個簡答題 1.linux中,提供tcp ip包過濾功能的軟體叫什麼?a.iptables b.route c.rarp d.filter 2.設一組初始關鍵字序列為,則第4趟氣泡...