導航:首頁 > 程序命令 > 微信程序員是否可以玩股票

微信程序員是否可以玩股票

發布時間:2023-11-18 05:01:19

程序員演算法實現-買賣股票的最佳時機系列問題

主要思路:因為只有一股可以交易,所以我們可以枚舉 必須以i位置作為賣出時機的情況下,得到的最大收益是多少。如果我們得到每個i位置的最大收益,那麼最大收益必是所有位置的最大收益的最大值

使用兩個變數:

min變數:表示遍歷到的位置之前的最小值是什麼。

max變數:表示當前收集到必須以i位置賣出的最大收益是多少。

遍歷數組一遍,在遍歷到i位置的時候,min和max的更新邏輯如下:

遍歷完數組,返回max的值就是最終答案。完整代碼見:

主要思路:由於可以進行任意次的交易,但是任何時候最多隻能持有一股股票,所以我們可以把股票曲線的所有 上升段 都抓取到,累加收益就是最大收益。遍歷數組,遍歷到的位置減去前一個位置的值,如果是正數,就收集,如果是負數,就把本次收益置為0(就等於沒有做這次交易),這樣遍歷一遍數組,就不會錯過所有的收益。

設置一個變數max,初始為0,用於收集最大收益值,來到i位置,max更新邏輯如下:

完整代碼如下:

由本題可以簡單得出一個結論: 如果數組元素個數為N,則最多執行N/2次交易就可以抓取所有的上升段的值(極端情況下,當前時刻買,下一個時刻賣,保持這樣的交易一直到最後,執行的交易次數就是N/2)

主要思路:

在第2種情況下,我們定義

其中dp[i][j]表示[0...i]范圍內交易j次獲得的最大收益是多少。如果可以把dp這個二維表填好,那麼返回dp[N-1][k]的值就是題目要的答案。

dp這個二維矩陣中,

第一行的值表示數組[0..0]范圍內,交易若干次的最大收益,顯然,都是0。

第一列的值表示數組[0...i]范圍內,交易0次獲得的最大收益,顯然,也都是0。

針對任何一個普遍位置dp[i][j]的值,

我們可以枚舉i位置是否參與交易,如果i位置不參與交易,那麼dp[i][j] = dp[i-1][j],如果i位置參與交易,那麼i位置一定是最後一次的賣出時機。

那最後一次買入的時機,可以是如下情況:

最後一次買入的時機在i位置,那麼dp[i][j] = dp[i][j-1] - arr[i] + arr[i]

最後一次買入的時機在i-1位置,那麼dp[i][j] = dp[i-1][j-1] - arr[i-1] + arr[i]

最後一次買入的時機在i-2位置,那麼dp[i][j] = dp[i-2][j-1] - arr[i-2] + arr[i]

...

最後一次買入的時機在0位置,那麼dp[i][j] = dp[0][j-1] - arr[0] + arr[i]

完整代碼如下:

上述代碼中包含一個枚舉行為

增加了時間復雜度,我們可以優化這個枚舉。

我們可以舉一個具體的例子來說明如何優化,

比如,

當我們求dp[5][3]這個值,我們可以枚舉5位置是否參與交易,假設5位置不參與交易,那麼dp[5][3] = dp[4][3],假設5位置參與交易,那麼5位置一定是最後一次的賣出時機。那最後一次買入的時機,可以是如下情況:

最後一次買入的時機在5位置,那麼dp[5][3] = dp[5][2] - arr[5] + arr[5]

最後一次買入的時機在4位置,那麼dp[5][3] = dp[4][2] - arr[4] + arr[5]

最後一次買入的時機在3位置,那麼dp[5][3] = dp[3][2] - arr[3] + arr[5]

最後一次買入的時機在2位置,那麼dp[5][3] = dp[2][2] - arr[2] + arr[5]

最後一次買入的時機在1位置,那麼dp[5][3] = dp[1][2] - arr[1] + arr[5]

最後一次買入的時機在0位置,那麼dp[5][3] = dp[0][2] - arr[0] + arr[5]

我們求dp[4][3]這個值,我們可以枚舉4位置是否參與交易,假設4位置不參與交易,那麼dp[4][3] = dp[3][3],假設4位置參與交易,那麼4位置一定是最後一次的賣出時機。那最後一次買入的時機,可以是如下情況:

最後一次買入的時機在4位置,那麼dp[4][3] = dp[4][2] - arr[4] + arr[4]

最後一次買入的時機在3位置,那麼dp[4][3] = dp[3][2] - arr[3] + arr[4]

最後一次買入的時機在2位置,那麼dp[4][3] = dp[2][2] - arr[2] + arr[4]

最後一次買入的時機在1位置,那麼dp[4][3] = dp[1][2] - arr[1] + arr[4]

最後一次買入的時機在0位置,那麼dp[4][3] = dp[0][2] - arr[0] + arr[4]

比較dp[5][3]和dp[4][3]的依賴關系,可以得到如下結論:

假設在求dp[4][3]的過程中,以下遞推式的最大值我們可以得到

dp[4][2] - arr[4]

dp[3][2] - arr[3]

dp[2][2] - arr[2]

dp[1][2] - arr[1]

dp[0][2] - arr[0]

我們把以上式子的最大值定義為best,那麼

dp[5][3] = Math.max(dp[4][3],Math.max(dp[5][2] - arr[5] + arr[5], best + arr[5]))

所以dp[5][3]可以由dp[4][3]加速得到,

同理,

dp[4][3]可以通過dp[3][3]加速得到,

dp[3][3]可以通過dp[2][3]加速得到,

dp[2][3]可以通過dp[1][3]加速得到,

dp[1][3]可以很簡單得出,dp[1][3]有如下幾種可能性:

可能性1,1位置完全不參與,則

可能性2,1位置作為最後一次的賣出時機,買入時機是1位置

可能性3,1位置作為最後一次的賣出時機,買入時機是0位置

此時,best的值為

然後通過dp[1][3]加速dp[2][3],通過dp[2][3]加速dp[3][3]......,所以二維dp的填寫方式是按列填,

先填dp[1][0],dp[1][2]一直到dp[1][k],填好第一列;

然後填dp[2][0],dp[2][1]一直到dp[2][k],填好第二列;

...

依次填好每一列,直到填完第N-1列。

枚舉行為被優化,優化枚舉後的完整代碼如下:

主要思路:上一個問題中,令k=2就是本題的答案。

主要思路:因為有了冷凍期,所以每個位置的狀態有如下三種:

定義三個數組,分別表示i位置這三種情況下的最大值是多少

顯然有如下結論:

針對一個普遍位置i

最大收益就是如上三種方式的最大值。完整代碼見:

由於三個數組有遞推關系,所以可以用三個變數替換三個數組,做空間壓縮,優化後的代碼如下:

主要思路:由於沒有冷凍期,所以在i位置的時候,狀態只有兩種

針對0位置

針對普遍位置i

完整代碼如下:

同樣的,兩個數組都有遞推關系,可以做空間壓縮,簡化後的代碼如下:

原文鏈接:買賣股票的最佳時機系列問題 - Grey Zeng - 博客園

❷ 認識很多會炒股的程序員,他們炒股有什麼優勢嗎

我覺得程序員炒股票有一定的優勢,同時也有一定的劣勢,總體來說劣勢會大於優勢,大致的理由如下。

程序員的劣勢

1、程序員由於自身職業的特點,平時更多是與計算機打交道,與人接觸交流相對會比較少,在對外溝通交流方面可能會存在一些障礙,炒股票需要經常跟相關人員進行討論、研究,這樣才能提高個人的金融水平,想要程序員做到這一點可能會比較困難。

2、程序員對金融方面的知識儲備不夠,由於程序員本身更多的關注在IT技術方面,在金融方面的知識會比較薄弱,而炒股票需要了解企業經營、行業發展方向、股票的走勢分析等,對金融方面的專業知識要求比較高,因此有很多程序員可能在這方面會有所欠缺。

股票

當然或許有的人可能會認為一些程序員智商比較高,但是程序員智商是否一定高,這個或許還要具體的判斷,另外就算一個人智商真的特別高,哪怕是頂尖的科學家,如果去投資股票,也不一定就能夠把投資股票做好,或者獲得很大的投資的成功,所謂術業有專攻,不同的行業或者領域可能需要不同的專業能力,即使是智商再高的人,對於自己不了解或者陌生的領域,可能都會缺乏相應的專業能力,或許也很難把其他領域的事情做好。

❸ 35歲程序員炒Luna幣千萬資產3天歸零,此事給予了我們哪些教訓

35歲程序員炒Luna幣千萬資產3天歸零,此事給予了我們哪些教訓?

我歷來都相信一句話,投資有風險炒股需謹慎,很多家庭都是因為炒股投資,最後搞得家破人亡,因為自己的不甘心和不滿足,導致我們不能及時收手,這也是大家很多人的心理,最後連本金都收不回來賠的底朝天。

其實小額投資和小額的炒股,我們可以當它是一個生活的樂趣,如果家裡也不富裕的話,我們拿出來一兩千塊錢謹慎地選擇一下圖個開心就好,對於這種一夜暴富的餡餅不可能就落在我們平凡人的頭上。我們不是富豪沒有過多的錢財,來進行揮霍,能做到的就只有腳踏實地一步一個腳印,所以我從來不相信,奇跡,更不相信奇跡也可以平白無故地砸在自己的頭上,所以我們可以將其當成一種樂趣,而不是把這種當作自己掙錢的方式隨便玩玩開心就好,不要過於認真,更不要將自己的所有錢財都去購買股票基金。

閱讀全文

與微信程序員是否可以玩股票相關的資料

熱點內容
r1234yf汽車空調壓縮機 瀏覽:143
ftp伺服器地址欄 瀏覽:898
linux圖形分區 瀏覽:963
安徽到遼寧源碼 瀏覽:575
libs安卓的文件夾叫什麼 瀏覽:869
生意圈app是什麼意思 瀏覽:395
linuxarcgisserver 瀏覽:234
加密pdf怎麼修改文件 瀏覽:138
紅米刷機無命令怎麼辦 瀏覽:356
啥叫美國谷歌外包程序員 瀏覽:260
雲伺服器管家婆 瀏覽:440
發郵件命令 瀏覽:354
程序員好做嗎工作好嗎 瀏覽:886
雲電腦伺服器維護一個月多少錢 瀏覽:882
有沒有什麼app數學題型較多 瀏覽:341
政策pdf 瀏覽:295
有什麼好玩的文娛app 瀏覽:811
python教學合集 瀏覽:959
有什麼好用的小眾app嗎 瀏覽:118
芋道app源碼 瀏覽:448