報數序列是乙個整數序列,按照其中的整數的順序進行報數,得到下乙個數。其前五項如下:
1. 12. 11
3. 21
4. 1211
5. 111221
給定乙個正整數 n(1 ≤ n ≤ 30),輸出報數序列的第 n 項。
注意:整數順序將表示為乙個字串。
輸入: 1輸出: "1
"輸入:
4輸出:
"1211
"
理解題意:
首先我們還是列舉一下每個數的輸出吧
第幾次輸出11
211321
41211
5111221
6312211
713112221
81113213211
931131211131221
從上面我們可以看出來,對乙個數說出來有兩種情況:
那函式中重要的思想就是:
遍歷上一次的輸出
然後比較相鄰的數
如果是一樣的話,那就在找下一位
如果是不一樣的話,那就要新增到陣列中
核心**:
func say(bs byte) byte//第二個引數是指有多少個一樣的
//(這裡需要注意一點,一定要加上'0',不然位元組不對,'0'代表的位元組是48,
//如果不加上'0',byte(y-x)就是byte(1),這是不對的)
//第三個引數是指說出來的那個數0'
), bs[x])
//跳過相同的數
x =y
}return
result
}
當然我們肯定要一開始就設定第一次的輸出為'1'
func countandsay(n int) stringbs := byte
for i := 2; i <= n; i++
return
string
(bs)
}
為什麼要用位元組陣列呢?因為轉字串簡單呀!!!
python實現報數
報數序列 n 1 1 n 2 11 讀做 1個1,記為11 n 3 21 讀作 2個1,記為21 n 4 1211 讀作 1個2,1個1,記為1211 現在要求給定乙個n 1 n 30 輸出報數序列的第n項。一步一步來,分塊講解 實質上先統計個數 在統計元素。coding utf 8 題目簡述 報數...
佇列實現報數遊戲
問題描述 有m個人,從1到m編號,按照編號順序圍成一圈。從第乙個人開始報數 從1報到n 凡報到n的人退出圈子。然後下乙個小朋友會繼續從 1 開始報數,直到只剩乙個人為止 問 最後留下的人的編號是幾號。具體方法 的注釋已經很詳細了。開乙個佇列不斷刪除,很簡單,稍微想一下或畫個草圖就ok了 includ...
約瑟夫環的實現《報數遊戲》
面試中經常會被問到報數遊戲。遂實現一下。問題描述 設有n個人圍坐一圈並按順時針方向從1到n編號,從第s個人開始進行1到m報數,報數到第m個人時,此人出圈,再從他的下乙個人重新開始1到m的報數,如此進行下去直到所有的人都出圈為止。現要列印出出圈次序。輸入 n 遊戲總人數 s 報數的起始編號 m 報數的...