
uj5u.com熱心網友回復:
有人嗎

uj5u.com熱心網友回復:
很快的,這兩題給你答案你要看懂的話一個下午就能自己寫出程式來了。但我很好奇,為啥偏偏是這兩道題?是C++課程的課設要求做出這兩道?約瑟夫環問題:
思路:
①首先想到的是用回圈鏈表,每次從鏈表洗掉一個節點,直到鏈表中剩下一個節點。但是鏈表的讀取速度很慢,每次訪問往后的第m個結點也是很費時的。
②然后想到用陣列,陣列讀取速度快,但洗掉一個元素后,移動剩下元素也要耗費大量時間。
③那有沒有用陣列但又不洗掉元素的方法呢。每洗掉一個數,就把這個元素值置為-1,每經過m個不為-1的數,就把這個數值置為-1,直到陣列中只剩下一個不為-1的元素,這個元素值就是答案。
第③種方法雖然有陣列的隨機訪問速度,也不用洗掉元素,但資料量大的時候,運行到后面陣列內有大量值為-1的元素,要進行多次回圈判斷,速度也很慢,提交后直接超時。速度最快的是數學方法,找出問題的遞回公式,幾行代碼解決。
④數學方法(遞推公式為 f(N,M)=(f(N?1,M)+M)%N ),公式推導可以去搜一下,CSDN上很多推導這個公式的文章。理解這個公式有點點難,但你要是為了做這道題而做的話,不用理解也沒關系,直接把這個遞推公式寫成遞回程式就可以了。以上幾種方法用C++寫成程式見https://blog.csdn.net/weixin_43222324/article/details/105216765
uj5u.com熱心網友回復:
是個作業,但是我的想法是說不是單純的搞懂這兩道,而是以后有了類似的題一樣可以做出來
uj5u.com熱心網友回復:
第一題,最大乘積:https://blog.csdn.net/weixin_43746343/article/details/90438122uj5u.com熱心網友回復:
好學生啊,想當初我的編程作業好些都是抄的,打包了別人的程式交上去,結果里面程式名字還是一室友名字命名的,老師一解壓作業看到是別人的名字。uj5u.com熱心網友回復:
好學生啊,想當初我的編程作業好些都是抄的,打包了別人的程式交上去,結果里面程式名字還是一室友名字命名的,老師一解壓作業看到是別人的名字。 很快的,這兩題給你答案你要看懂的話一個下午就能自己寫出程式來了。但我很好奇,為啥偏偏是這兩道題?是C++課程的課設要求做出這兩道?
約瑟夫環問題:
思路:
①首先想到的是用回圈鏈表,每次從鏈表洗掉一個節點,直到鏈表中剩下一個節點。但是鏈表的讀取速度很慢,每次訪問往后的第m個結點也是很費時的。
②然后想到用陣列,陣列讀取速度快,但洗掉一個元素后,移動剩下元素也要耗費大量時間。
③那有沒有用陣列但又不洗掉元素的方法呢。每洗掉一個數,就把這個元素值置為-1,每經過m個不為-1的數,就把這個數值置為-1,直到陣列中只剩下一個不為-1的元素,這個元素值就是答案。
第③種方法雖然有陣列的隨機訪問速度,也不用洗掉元素,但資料量大的時候,運行到后面陣列內有大量值為-1的元素,要進行多次回圈判斷,速度也很慢,提交后直接超時。速度最快的是數學方法,找出問題的遞回公式,幾行代碼解決。
④數學方法(遞推公式為 f(N,M)=(f(N?1,M)+M)%N ),公式推導可以去搜一下,CSDN上很多推導這個公式的文章。理解這個公式有點點難,但你要是為了做這道題而做的話,不用理解也沒關系,直接把這個遞推公式寫成遞回程式就可以了。以上幾種方法用C++寫成程式見https://blog.csdn.net/weixin_43222324/article/details/105216765
是個作業,但是我的想法是說不是單純的搞懂這兩道,而是以后有了類似的題一樣可以做出來
沒辦法啊,高中沒好好學習,現在準備考研考一個好學校
uj5u.com熱心網友回復:
好學生啊,想當初我的編程作業好些都是抄的,打包了別人的程式交上去,結果里面程式名字還是一室友名字命名的,老師一解壓作業看到是別人的名字。 很快的,這兩題給你答案你要看懂的話一個下午就能自己寫出程式來了。但我很好奇,為啥偏偏是這兩道題?是C++課程的課設要求做出這兩道?
約瑟夫環問題:
思路:
①首先想到的是用回圈鏈表,每次從鏈表洗掉一個節點,直到鏈表中剩下一個節點。但是鏈表的讀取速度很慢,每次訪問往后的第m個結點也是很費時的。
②然后想到用陣列,陣列讀取速度快,但洗掉一個元素后,移動剩下元素也要耗費大量時間。
③那有沒有用陣列但又不洗掉元素的方法呢。每洗掉一個數,就把這個元素值置為-1,每經過m個不為-1的數,就把這個數值置為-1,直到陣列中只剩下一個不為-1的元素,這個元素值就是答案。
第③種方法雖然有陣列的隨機訪問速度,也不用洗掉元素,但資料量大的時候,運行到后面陣列內有大量值為-1的元素,要進行多次回圈判斷,速度也很慢,提交后直接超時。速度最快的是數學方法,找出問題的遞回公式,幾行代碼解決。
④數學方法(遞推公式為 f(N,M)=(f(N?1,M)+M)%N ),公式推導可以去搜一下,CSDN上很多推導這個公式的文章。理解這個公式有點點難,但你要是為了做這道題而做的話,不用理解也沒關系,直接把這個遞推公式寫成遞回程式就可以了。以上幾種方法用C++寫成程式見https://blog.csdn.net/weixin_43222324/article/details/105216765
是個作業,但是我的想法是說不是單純的搞懂這兩道,而是以后有了類似的題一樣可以做出來
沒辦法啊,高中沒好好學習,現在準備考研考一個好學校
uj5u.com熱心網友回復:
加油,一般學完語法和資料結構就可以做這樣的題了uj5u.com熱心網友回復:
我覺得好難,每次看到這樣的題。就有未知力量迫使我用數學計算方式求解。
然,數學水平卻又十分不足
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/20697.html
標籤:新手樂園
上一篇:Notepad++ 打開大檔案非常快,是怎么做到的?
下一篇:空洞檔案的overflow問題。
