問題的來源是幫一個(gè)朋友改數(shù)據(jù)庫,要求是這樣的,60個(gè)題目,總分是100分,正確答案的分值有2分的 1.5分,其中分值的排列關(guān)系是隨機(jī)的,請(qǐng)問如何設(shè)置答對(duì)題目,使得答題總分剛好為一個(gè)數(shù)值,如82分
我的解決辦法是:
用一個(gè)集合記錄判斷是正確的2分題,當(dāng)發(fā)現(xiàn)期望總分和當(dāng)前累加總分差值小于1.5時(shí),因?yàn)樽钚挝皇?.5,在2分集合中退出一個(gè)正確的2分,然后繼續(xù)遍歷下去
雖然后來用上面辦法解決了這個(gè)問題,但是我覺得這個(gè)問題的解法不夠通用,有很多問題,對(duì)這個(gè)問題擴(kuò)展了一下,大家一起討論一下
一維的:和上面的題目一樣。用變量來描述一下這個(gè)問題
有m個(gè)元素,其中每個(gè)元素有1個(gè)value值,o<value>,value的取值有x,y,z...,按照value值m個(gè)元素排列是隨機(jī)的,問如何用一次遍歷m,而得到n個(gè)元素,這n個(gè)元素的value總和是W
二維的:其實(shí)就是俄羅斯方塊了,大家想象我們玩的俄羅斯方塊是不是這個(gè)道理
有m個(gè)元素,其中每個(gè)元素有1個(gè)value值對(duì),o<v1,v2>,value的取值有x,y,z...,按照value值m個(gè)元素排列是隨機(jī)的,問如何用一次遍歷m,而得到n個(gè)元素,這n個(gè)元素的value中,v1
的總和乘以v2的總和是W
n維的:不知道用什么現(xiàn)實(shí)中的情況來描述了
有m個(gè)元素,其中每個(gè)元素有1個(gè)value值對(duì),o<v1,v2,v3,...vn>,value的取值有x,y,z...,按照value值m個(gè)元素排列是隨機(jī)的,問如何用一次遍歷m,而得到n個(gè)元素,這n個(gè)元素的value中,v1
的總和乘以v2的總和乘以v3的總和...一直乘到vn的總和是W
呵呵,也許是我孤陋寡聞,上面這個(gè)題可能早有算法了,希望知道的朋友能告訴我一聲:)
發(fā)現(xiàn)我好像犯了一個(gè)邏輯死角的錯(cuò)誤,其實(shí)一次遍歷后拿到value的分布圖就很簡(jiǎn)單了。。。。
汗自己一個(gè),不刪除文章了,看看有沒有更好的算法,最好是不遍歷完就可以得到一個(gè)正確的結(jié)果