本文共 1067 字,大约阅读时间需要 3 分钟。
char* countAndSay(int n) { char s1[10000]="1", s2[10000]="1";//动态数组不会,c++的话直接用string push_back(),刚开始用的100,1000 提示run time,//char *s 指向常量字符串,内容不能修改,初始化后即确定大小,出现了stack around the variable 's' was corrupted数组越界问题;char s[] 指向栈空间; int i = 0, j, k, m; int temp;// *(s1 + 0) = '1';// *(s1 + 1) = '\0'; while (i < n-1)//判断是否迭代了Nth { j = 0;//遍历s1 k = 0;//生成s1 的s2 while (*(s1 + j) != '\0') { m = 1;//s1数字重复个数 temp = *(s1 + j)-48;//字符和数字的关系 小心忘记 j++; while ((*(s1 + j)-48) == temp) { m++; j++; } if (m){ *(s2 + k) = m + 48; k++; } *(s2 + k) = temp+48; k++; } *(s2 + k) = '\0'; k = 0; /* while (*(s2 + k) != '\0') { *(s1 + k) = *(s2 + k); k++; } k++; *(s1 + k) = '\0';一堆废话*/ strcpy(s1,s2); i++; } return s1;}The count-and-say sequence is the sequence of integers beginning as follows:
1, 11, 21, 1211, 111221, ...
1
is read off as "one 1"
or 11
.
11
is read off as "two 1s"
or 21
.
21
is read off as "one 2
, then one 1"
or 1211
.
Given an integer n, generate the nth sequence.
首先,推理一下规律,很简单,就是重复的数字的个数+重复的数字。但是只能写出脑残的程序。
转载地址:http://yhovi.baihongyu.com/