五月天青色头像情侣网名,国产亚洲av片在线观看18女人,黑人巨茎大战俄罗斯美女,扒下她的小内裤打屁股

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

Python巧解數(shù)字變換問題,有點意思(65)

2023-06-27 07:00 作者:和貓妹學(xué)Python  | 我要投稿

小朋友們好,大朋友們好!

我是貓妹,一名愛上Python編程的小學(xué)生。

和貓妹學(xué)Python,一起趣味學(xué)編程。

今日主題

如何用Python解決數(shù)字變換問題

比如:

對于一對正整數(shù)a和b,對a只能進行加1,減1,乘2操作,問最少對a進行幾次操作能得到b?

a=3,b=11,3*2*2-1=11,3次操作得到11

編程思路

數(shù)字變換問題屬于狀態(tài)遷移圖問題,可以用廣度優(yōu)先搜索,尋找a到b狀態(tài)遷移最短路徑。

對于每個狀態(tài)s,可以轉(zhuǎn)換到是s+1、s-1、s*2。

編程步驟:

1.把初始狀態(tài)a入隊

2.出隊一個狀態(tài)s,然后把s+1,s-1,s*2入隊

3.反復(fù)循環(huán)2,直到狀態(tài)s為b

今日主題

代碼實現(xiàn)(代碼見同名公眾號,次條推文):

代碼邏輯:

3行:函數(shù)atob的參數(shù)a和b,表示起始數(shù)據(jù)a,終點數(shù)據(jù)b,返回值c表示經(jīng)過的變換次數(shù)。

4行:創(chuàng)建一個隊列,隊列元素為元組。元組中第一個元素為當(dāng)前數(shù)字、第二個元素為經(jīng)過的變換次數(shù)。

5行:已經(jīng)經(jīng)過判斷過但是不符合的數(shù)字,需要將其過濾掉。

避免重復(fù)判斷,比如+1-1無限循環(huán)。

6~21行:依次從隊列中取出一個元素,判斷是否滿足要求。

如果滿足要求,退出循環(huán)。否則,將其變換值(+1,-1,*2)加入隊列。

7行:從隊列中彈出一個元素,該元素為元組。s,c分別表示當(dāng)前數(shù)字,經(jīng)過變換的次數(shù)。

8~9行:經(jīng)過的變換等于預(yù)期值,退出循環(huán)。

11~17行:當(dāng)前數(shù)字小于預(yù)期值時,允許它向大處變換。

新的狀態(tài)值之前沒有被判斷過,才可以加入隊列,才可以加入已判斷集合。

18~21行:當(dāng)前數(shù)字大于預(yù)期值時,允許它向小處變換。

新的狀態(tài)值之前沒有被判斷過,才可以加入隊列,才可以加入已判斷集合。

22行:返回經(jīng)過的變換次數(shù)。

怎么樣?

你理解了嗎?

好了,我們今天就學(xué)到這里吧!

如果遇到什么問題,咱們多多交流,共同解決。

我是貓妹,咱們下次見!


Python巧解數(shù)字變換問題,有點意思(65)的評論 (共 條)

分享到微博請遵守國家法律
闸北区| 新巴尔虎右旗| 任丘市| 峨边| 潞西市| 定边县| 清镇市| 泰州市| 子洲县| 化隆| 通河县| 靖州| 佛教| 兴山县| 山东省| 龙州县| 曲水县| 津南区| 邳州市| 桂林市| 万盛区| 栾川县| 永仁县| 武汉市| 清丰县| 义马市| 唐河县| 马关县| 阆中市| 綦江县| 田林县| 讷河市| 松潘县| 吉安县| 子长县| 仁寿县| 三门县| 乡宁县| 若羌县| 明光市| 岳普湖县|