最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(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)的評論 (共 條)

分享到微博請遵守國家法律
祁门县| 漠河县| 雅江县| 阜平县| 朝阳市| 海丰县| 鹤庆县| 吉首市| 且末县| 朝阳市| 宝鸡市| 铁岭县| 新田县| 乳山市| 繁峙县| 平乡县| 武宁县| 高州市| 厦门市| 牙克石市| 白河县| 临漳县| 济源市| 巴楚县| 河间市| 斗六市| 阆中市| 曲阜市| 浦城县| 辽宁省| 江山市| 百色市| 西平县| 日喀则市| 辽阳市| 河北区| 贡觉县| 白水县| 灵石县| 浦城县| 海丰县|