圖中下一行的數是什麼?


312211


想當年我還是一個ACMer。。去年某省賽遇到過這道題,當時有點焦頭爛額搞不懂套路,寫了好幾張算草紙也沒琢磨明白。各種思路各種順序摸不透。上了趟廁所回來腦洞大開恍然大悟,當時的心情我真是日了潛水艇了,出題人真坑爹
--------------------------------------------------------
首先第一行是數字1。接下來每一行都表示上一行的數字。格式為「幾個幾」。
因此第二行描述第一行,第一行是「一個1」,即11
下一行描述第二行的數字11,「兩個1」,即21
下一行描述上一行的數字21,也就是「一個2,一個1」,即1211
下一行描述上一行的1211,也就是「一個1,一個2,兩個1」,即111221
以此類推,得出下一行。
「三個1,兩個2,一個1」,即312211。

當時好像用模擬法寫的C++程序。

所以廁所一直是我靈光乍現腦洞大開的地方啊!


啊!那是我逝去的青春!


Look-and-say sequence

所以感覺第5行還有一個1在後面。


第一行:1
表達為:1個1
去掉漢字:1 1
—&>成為第二行

第二行:1 1
表達為:2個1
去掉漢字:2 1
—&>成為第三行

第三行:2 1
表達為:1個2和1個1
去掉漢字:1 2 1 1
—&>成為第四行

第四行: 1 2 1 1
表達為:1個1和1個2和2個1
去掉漢字:1 1 1 2 2 1
—&>成為第五行(感覺你漏了1)

第五行: 1 1 1 2 2 1
表達為:3個1和2個2和1個1
去掉漢字:3 1 2 2 1 1

so 第六行為 3 1 2 2 1 1

並不知道有啥意義的規律。


題主要的代碼,大嬸們求忽視,性能方面待優化。。:)

#include &
#include &
using namespace std;

#define MAX_LINE 20

int main() {
string pre;
string current;
int cnt = 0;
pre.push_back("1");
while (true) {
current.clear();
size_t sz = pre.size();
size_t i = 0;
while (i &< sz) { char item = pre[i]; size_t pos = pre.find_first_not_of(item, i); if (pos == string::npos) pos = sz; current.push_back(pos - i + "0"); current.push_back(item); i = pos; } cout &<&< pre &<&< endl; pre.swap(current); cnt++; if (cnt &>= MAX_LINE) break;
}

return 0;
}


Link:

最近看到的一個很可愛的題!
Yet another google puzzle


Leetcode原題Count and Say
Count and Say


所以下一個應該是 312211


我看到了高音1和四分附點音符2,估計下一行要進打擊樂了


就是把上面那一行讀出來而已


312211

3個1,2個2,1個1
試了下好像也沒看出森莫規律…
但應該永遠不會有4嗒

1
11
21
1211
111221
312211
13112221
1113213211
31131211131221
13211311123113112211
11131221133112132113212221
3113112221232112111312211312113211
1321132132111213122112311311222113111221131221
11131221131211131231121113112221121321132132211331222113112211
311311222113111231131112132112311321322112111312211312111322212311322113212221


這不是我當年考試題么
1
11
21
1211
111221
312211
13112221
……………
感覺我能一直寫下去


推薦閱讀:

世界上最短的數學論文研究的是個啥?
正態分布為什麼是鐘形曲線?
關於數學有什麼有趣的笑話?
猴子最多搬多少個香蕉?
24維空間中,單位球周圍最多能有多少個不互相重合的單位球與之相切?

TAG:數學 | 趣味數學 |