五月天青色头像情侣网名,国产亚洲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)的評論 (共 條)

分享到微博請遵守國家法律
伽师县| 革吉县| 阳东县| 修武县| 遂宁市| 吉木乃县| 叙永县| 延长县| 喀什市| 台中县| 邢台县| 祁东县| 西充县| 花垣县| 通许县| 连江县| 蓬溪县| 山西省| 台中县| 莲花县| 丰镇市| 拜城县| 昆山市| 夏河县| 临澧县| 黄浦区| 德令哈市| 宣汉县| 南投市| 肥西县| 黔南| 白河县| 武穴市| 徐汇区| 吉水县| 大埔区| 兖州市| 尉犁县| 上思县| 轮台县| 司法|