| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1088 人关注过本帖, 1 人收藏
标题:用了递归会超时啊,能优化一下吗?
只看楼主 加入收藏
mahuaguan
Rank: 1
等 级:新手上路
帖 子:38
专家分:4
注 册:2011-9-13
收藏
得分:0 
楼主中大的?
2012-02-11 02:47
beyondyf
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:103
帖 子:3282
专家分:12654
注 册:2008-1-21
收藏
得分:0 
回复 8楼 Devil_W
昨天忙着吵架,没看你的代码。我想问一下,你的代码实际到OJ中提交过吗?
这里有个问题,你是如何确信每组数据的循环的起始点都是在第4项的呢?

重剑无锋,大巧不工
2012-02-11 09:29
laoyang103
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:内蒙古包头
等 级:贵宾
威 望:19
帖 子:3082
专家分:11056
注 册:2010-5-22
收藏
得分:0 
杭电得1005  既然知道了周期会出现在前49项之内  那就求出前49项来就行了然后查找周期是多少就行了

具体方法找到i 确定第i项等于等于第i-1等于1  然后i-2就是周期  剩下的就是用n对i-2求余输出指定项就行了
程序代码:
#include <iostream>
using namespace std;
int seq[50];
int main()           
{
    int A,B,n,i;
    while(scanf("%d%d%d",&A,&B,&n) && A+B+n)   
    {
        seq[1]=seq[2]=1;
        for(i=3;i<50;i++)   
        {
            seq[i]=(A*seq[i-1]+B*seq[i-2])%7;
            if(seq[i]==1 && seq[i-1]==1)
                break;
        }
        n%=(i-2);
        if(n==0)
            cout<<seq[i-2]<<endl;
        else
            cout<<seq[n]<<endl;
    }
    return 0;
}

 

                                         
===========深入<----------------->浅出============
2012-02-11 14:12
glglzb
Rank: 2
等 级:论坛游民
帖 子:47
专家分:22
注 册:2011-10-12
收藏
得分:0 
回复 11楼 mahuaguan
是啊  
2012-05-20 01:22
glglzb
Rank: 2
等 级:论坛游民
帖 子:47
专家分:22
注 册:2011-10-12
收藏
得分:0 
回复 11楼 mahuaguan
是啊
2012-05-31 13:52
快速回复:用了递归会超时啊,能优化一下吗?
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.014819 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved