jam的計數法

2021-10-03 05:51:59 字數 1455 閱讀 2694

因為剛開始不太會寫,參考了這篇部落格,然後轉成python

題目:jam是個喜歡標新立異的科學怪人。他不使用阿拉伯數字計數,而是使用小 寫英文本母計數,他覺得這樣做,會使世界更加豐富多彩。在他的計數法中,每個數字的位數都是相同的(使用相同個數的字母),英文本母按原先的順序,排在前 面的字母小於排在它後面的字母。我們把這樣的「數字」稱為jam數字。在jam數字中,每個字母互不相同,而且從左到右是嚴格遞增的。每次,jam還指定 使用字母的範圍,例如,從2到10,表示只能使用這些字母。如果再規定位數為5,那麼,緊接在jam數字 「bdfij」之後的數字應該是「bdghi」。(如果我們用u、v依次表示jam數字「bdfij」與「bdghi」,則u〈v,且不存在jam數字 p,使u〈p〈v)。你的任務是:對於從檔案讀入的乙個jam數字,按順序輸出緊接在後面的5個jam數字,如果後面沒有那麼多jam數字,那麼有幾個就 輸出幾個。

input

2 10 5

bdfij

output

bdghi

bdghj

bdgij

bdhij

befgh

解釋一下啥意思,剛開始我居然沒看懂題目。。。。

其實就是jam給一些連續的字母,然後再給乙個起始「數」,拿這些字母來組成一系列的嚴格遞增的「數」

例如:輸入 2,10,5

這裡的2和10對應著26個字母,所以就是b和j,b到j之間有c、d、e、f、g、h、i

然後從這9個字母中取5個字母組成「數」

比如,bdfij

然後他後面緊跟著的是bdghi,為啥是這個呢,

先看一下另一組:

bdghj bdgij

其實是從最後一位,也就是個位,開始比較,上面兩個,個位都是j,而且都是最大的乙個字母了,所以後乙個比前乙個大只能十位比前乙個大,h所以在程式設計時從最後一位開始看,如果最後一位最大,則往前面開始找。

注意的是,某一位確定之後,後面的應比其大(遞增狀態)

步驟:判斷末尾位是否最大

如果不是,就直接加一

如果是,則看倒數第二位是否是最大(注意這裡的最大,是倒數第二位的最大,倒數第二位的最大,比倒數第一位的最大少一,也就是說,如果最後一位是j,則倒數第二位的最大應該是i)

如果倒數第二位不是最大,就加一,同時,倒數第一位的值應比倒數第二位大一

如果是最大,則繼續向前看【可以看到,如果某一位是最大的時候,就一直向前找,這裡就開始了遞迴】

s = 2

t = 10

w = 5

def jams_count(num,index,heigh,flag,count):

if count == 5 or index==-1:

exit(0) #注意這裡是exit,而不是return,用return的話是返回上乙個呼叫它的函式

k=ord(num[index])-97 #這裡是計算當前位置的字母對應的索引

if k

Jam的計數法

題目描述 jam是個喜歡標新立異的科學怪人。他不使用阿拉伯數字計數,而是使用小寫英文本母計數,他覺得這樣做,會使世界更加豐富多彩。在他的計數法中,每個數字的位數都是相同的 使用相同個數的字母 英文本母按原先的順序,排在前面的字母小於排在它後面的字母。我們把這樣的 數字 稱為 jam數字。在 jam數...

Jam的計數法

jam是個喜歡標新立異的科學怪人。他不使用阿拉伯數字計數,而是使用小 寫英文本母計數,他覺得這樣做,會使世界更加豐富多彩。在他的計數法中,每個數字的位數都是相同的 使用相同個數的字母 英文本母按原先的順序,排在前 面的字母小於排在它後面的字母。我們把這樣的 數字 稱為jam數字。在jam數字中,每個...

JAM的計數法

經典的題目了,自己想了個新方法 方法 先從低位往高位找到乙個可以加的位數,然後把後面的數變為前面那個數加1 建議先從主程式開始看。本人蒟蒻,不好請原諒 方法 先從低位往高位找到乙個可以加的位數,然後把後面的數變為前面那個數加1 建議先從主程式開始看。include include include u...