華為od機(jī)試-緩存需要最少金幣數(shù) /靜態(tài)掃描
靜態(tài)掃描可以快速識別源代碼的缺陷,靜態(tài)掃描的結(jié)果以掃描報(bào)告作為輸出:
1、文件掃描的成本和文件大小相關(guān),如果文件大小為N,則掃描成本為N個(gè)金幣
2、掃描報(bào)告的緩存成本和文件大小無關(guān),每緩存一個(gè)報(bào)告需要M個(gè)金幣
3、掃描報(bào)告緩存后,后繼再碰到該文件則不需要掃描成本,直接獲取緩存結(jié)果給出源代碼文件標(biāo)識序列和文件大小序列,求解采用合理的緩存策略,最少需要的金幣數(shù)
輸入描述
第一行為緩存一個(gè)報(bào)告金幣數(shù)M,L<= M <= 100
第二行為文件標(biāo)識序列: F1,F2,F3,....,Fn。
第三行為文件大小序列: S1,S2,S3,....,Sn。
備注:
1 <= N <= 10000
1 <= Fi <= 1000
1 <= Si <= 10
輸出描述
采用合理的緩存策略,需要的最少金幣數(shù)
示例1:
5
1 2 2 1 2 3 4
1 1 1 1 1 1 1
輸出
7
說明
文件大小相同,掃描成本均為1個(gè)金幣。緩存任意文件均不合算,因而最少成本為7金幣。
示例2:
輸入
5
2 2 2 2 2 5 2 2 2
3 3 3 3 3 1 3 3 3
輸出
9
————————————————
版權(quán)聲明:本文為CSDN博主「MISAYAONE」的原創(chuàng)文章,遵循CC 4.0 BY-SA版權(quán)協(xié)議,轉(zhuǎn)載請附上原文出處鏈接及本聲明。
原文鏈接:https://renjie.blog.csdn.net/article/details/128502753
Java 實(shí)現(xiàn):https://renjie.blog.csdn.net/article/details/128502753
Python實(shí)現(xiàn):https://renjie.blog.csdn.net/article/details/128502798
C++ 實(shí)現(xiàn):https://renjie.blog.csdn.net/article/details/128502803
JavaScript、C語言版本持續(xù)更新中