給定乙個長度為n的陣列,以及乙個乘積值b,每次只能對乙個數增大或減少乙個單位,問最少多少次使得陣列乘積為b
【思路】
要使得調整的次數最少,那麼最開始調整的那個數字,應該是最小的數。
貪心策略:選最小的數調整,其它部分數乘積最大(自己需要調整的偏移值就盡可能小)
先對原先陣列從小到大排序。
對於k 如果 b%k==0 =》 b=b/k 即如果能整除,那麼直接整除
如果b%k!=0 =》 不能整除 那麼 a[k]-- (即調整一次 因為最差情況下a[k] 調整為1 那麼一定能整除)
直到k=>n
int fun(vectorarr,int b)
else
}cout<}
}
LintCode 最小調整代價
給乙個整數陣列,調整每個數的大小,使得相鄰的兩個數的差小於乙個給定的整數target,調整每個數的代價為調整前後的差的絕對值,求調整代價之和最小是多少。樣例對於陣列 1,4,2,3 和target 1 最小的調整方案是調整為 2,3,2,3 調整代價之和是2。返回2。注意 你可以假設陣列中每個整數都...
91 最小調整代價
2017.9.7 設定二維陣列 dp i j 表示 將第 i 個數調整到 j 時,當前最小的調整代價總和。那麼初始化時,將第0 個元素調整到 j 時,dp 0 j 就為 abs j arr 0 的值。在之後的運算中,將第 i 個元素調整到 j 時 其前乙個元素的變化範圍為 j targer j ta...
lintcode練習 91 最小調整代價
給乙個整數陣列,調整每個數的大小,使得相鄰的兩個數的差不大於乙個給定的整數target,調整每個數的代價為調整前後的差的絕對值,求調整代價之和最小是多少。對於陣列 1,4,2,3 和target 1,最小的調整方案是調整為 2,3,2,3 調整代價之和是2。返回2。你可以假設陣列中每個整數都是正整數...