微软在线测试之lucky string,有关斐波那契的题目都在此了

解决方案:

int _tmain(int argc,_TCHAR* argv[])
{
    size_t fib[] = {1,2,3,5,8,13,21,34};
    string str,tempstr;
    cin >> str;
    tempstr = str;
    auto it = unique(tempstr.begin(),tempstr.end());
    tempstr.erase(it,tempstr.end());    // 去重(已假定是有序的,如果无序则先排序)

    for (auto itstr = str.begin(); itstr != str.end();)    // 遍历输入数据
    {
        string s(itstr,str.end());
        for (int i = 0; i < 8;i++)
        {
            if (fib[i] <= tempstr.size())    // 符合FIB的不同字符有多少,则输出多少次
            {
                auto singlechar = tempstr[i];
                auto findchar = s.find(singlechar);
                for (auto itchar = s.begin() + findchar; itchar != s.end()&&*itchar == singlechar;itchar++)
                {    // 输出,相同字符连续输出
                    if (*s.begin() == singlechar)    // 每次去掉第一个相同的字符
                    {
                        itstr++;
                    }
                    cout << string(s.begin(),itchar+1) << endl;
                }
            }
            else
            {
                tempstr.erase(tempstr.begin());    // 字典输出需要
                break;
            }
        }
    }

    return 0;
}

讨论贴:

http://bbs.csdn.net/topics/391023839

后面碰见有关斐波那契数列的题目非常多,这块还有一个求期望的:

http://bbs.csdn.net/topics/391822110

正确答案:

http://blog.csdn.net/u010476094/article/details/48110405

这他妈的也太难算了吧

时间: 2024-07-31 18:05:26

微软在线测试之lucky string,有关斐波那契的题目都在此了的相关文章

内存管理-根据题目,编这个程序怎么会联想到用斐波那契数列?

问题描述 根据题目,编这个程序怎么会联想到用斐波那契数列? 4.编写-个函数,它返回函数自身被调用的次数,并在一个循环中测试之. #include int Fibonacci(int n); int count; int main(void) { int n; printf("input the max term of Fibonacci:"); while( scanf("%d",&n) == 1 ) { count = 0; Fibonacci(n);

UVa 10183 How Many Fibs? (统计斐波那契数个数&amp;amp;高精度)

10183 - How Many Fibs? Time limit: 3.000 seconds http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&category=115&page=show_problem&problem=1124 Recall the definition of the Fibonacci numbers:    f1 := 1    f2 := 2    fn :

输出斐波那契数列的算法

斐波那契数列(Fibonacci polynomial),又称黄金分割数列,指的是这样一个数列:0.1.1.2.3.5.8.13.21.-- 要求编程输出这样的一组数,比如输出10个数的序列 /** * @param i 第n个数 * @param j 第n+1个数 * @param n 输出个数 */ public static void ff( int i,int j,int n){ int m=1; System.out.print(i+","); while(m++<n)

代码-斐波那契数列的应用问题

问题描述 斐波那契数列的应用问题 著名的斐波那契数列:Fn = Fn-1 + Fn-2 (F1=F2=1),前几个斐波那契数为1123581321-.某一个整数可以拆成若干彼此不同的斐波那契数之和,比如13=1313=5+8,13=2+3+8:16=1+2+1316=1+2+5+816=3+1316=3+5+8现在求解这样一个问题,给定某个数值n,求有多少种方案可以把该数分解成若干彼此不同的斐波那契数之和.求各位大神帮忙,明天就要交代码了,现在还没思路...可以用数组存储吗? 解决方案 usin

java-关于斐波那契数列的求和问题的解答

问题描述 关于斐波那契数列的求和问题的解答 .有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一 对兔子,假如兔子都不死,问每个月的兔子总数为多少? 1.程序分析: 兔子的规律为数列1,1,2,3,5,8,....;求Java程序代码 解决方案 斐波那契数列及其求和 解决方案二: a[i]=a[i-1]+a[i-2]就行了呗,java难道难写吗 解决方案三: public class Test { public static void main(String[]

斐波那契数列-有一对兔子

/************************************************************************************************  题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,*  小兔子长到第三后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少? *  1.程序分析: 兔子(对)的规律为数列1,1,2,3,5,8,13,21....* @param args* [斐波那契数列]*********

递归解决斐波那契数列

1.什么是递归? 递归:递归是方法定义调用方法本身的现象.递归举例如下: <span style="font-size:14px;">public class DiGuiDemo { //递归方法举例 public void show() { show(); } } </span> 2.递归的注意事项? (1)递归一定要有出口.否则就会死递归. 上面举例用的递归就是一个死递归,方法永远都在进行自身调用,最终一定会陷入内存崩溃.所以递归要定义出口,就是结束递归的条

斐波那契数列(Fabonacci)兔子练习题

Java练习题:兔子问题       此问题又叫斐波那契数列(Fabonacci),是最先研究这个数列的人是比萨的列奥那多(又名费波那契),他描述兔子生长的数目时用上了这数列. 第一个月有一对刚诞生的兔子 第二个月之后它们可以生育 每月每对可生育的兔子会诞生下一对新兔子 兔子永不死去        假设在 n 月有新生及可生育的兔子总共 a 对,n+1 月就总共有 b 对.在 n+2 月必定总共有 a+b 对: 因为在 n+2 月的时候,所有在 n 月就已存在的 a 对兔子皆已可以生育并诞下 a

ava斐波那契堆-斐波那契堆JAVA实现的问题

问题描述 斐波那契堆JAVA实现的问题 最近在做用斐波那契堆改进Prim算法的作业.但是Java代码调试了两个周还是有问题,只能正确输出前3项. 还有几天就要提交作业了,在次跪求大神们帮忙瞧瞧代码. 代码如下: public class FibonacciNode { FibonacciNode child, left, right, parent; int vertex; float element; int degree; Boolean mark; /** Constructor **/