无码av一区二区三区无码,在线观看老湿视频福利,日韩经典三级片,成 人色 网 站 欧美大片在线观看

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

分享到微博請遵守國家法律
罗田县| 赞皇县| 平江县| 锡林浩特市| 沅陵县| 康乐县| 镇巴县| 光泽县| 凤翔县| 始兴县| 绥德县| 漾濞| 布拖县| 松原市| 永靖县| 张家港市| 贵溪市| 普陀区| 蓝田县| 南安市| 丰镇市| 河北省| 左贡县| 贡觉县| 农安县| 锦屏县| 出国| 肃宁县| 万载县| 云南省| 四川省| 拉萨市| 来宾市| 九龙坡区| 营山县| 中宁县| 涡阳县| 新乡县| 十堰市| 江陵县| 邳州市|