| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 9893 人关注过本帖
标题:[讨论]第一期题目
取消只看楼主 加入收藏
nuciewth
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:我爱龙龙
等 级:贵宾
威 望:104
帖 子:9786
专家分:208
注 册:2006-5-23
收藏
得分:0 

题目限制1S.你写递归一般就会超时,并且你的递归程序参数都不对.


倚天照海花无数,流水高山心自知。
2006-11-14 16:50
nuciewth
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:我爱龙龙
等 级:贵宾
威 望:104
帖 子:9786
专家分:208
注 册:2006-5-23
收藏
得分:0 

放在这已经好几天了,真正做题的还真没几个.
失望ing...


倚天照海花无数,流水高山心自知。
2006-11-16 17:19
nuciewth
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:我爱龙龙
等 级:贵宾
威 望:104
帖 子:9786
专家分:208
注 册:2006-5-23
收藏
得分:0 
以下是引用zhanghuan_10在2006-11-16 18:50:34的发言:

#include <stdio.h>

int a, b;
int main(void)
{
long n;
long sum( long n);

while(scanf("%d%d%ld", &a, &b, &n) == 3&&(a != 0||b != 0||n != 0))
{
printf("%ld\n", sum(n));
}

return 0;
}

long sum( long n)
{
if(n == 1||n == 2)
return 1;
else
return (a*sum(n - 1) + b*sum(n - 2))%7;
}
别的方法还没有想到啊!

这个肯定会超时.


倚天照海花无数,流水高山心自知。
2006-11-16 23:07
nuciewth
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:我爱龙龙
等 级:贵宾
威 望:104
帖 子:9786
专家分:208
注 册:2006-5-23
收藏
得分:0 
以下是引用我不是郭靖在2006-11-16 21:20:34的发言:

是不是帖子放的太高,大家没看到呢?

以前有小字报.那就取消置顶吧,看看帖子会不会沉下去.


倚天照海花无数,流水高山心自知。
2006-11-16 23:22
nuciewth
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:我爱龙龙
等 级:贵宾
威 望:104
帖 子:9786
专家分:208
注 册:2006-5-23
收藏
得分:0 

一般来说用递归都会超时.
既然楼上已经有递归式,那么改成递推或非递归会好一点.


倚天照海花无数,流水高山心自知。
2006-11-18 14:59
nuciewth
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:我爱龙龙
等 级:贵宾
威 望:104
帖 子:9786
专家分:208
注 册:2006-5-23
收藏
得分:0 

今天星期六,我把自己写的贴上来.

#include<stdio.h>
#define N 100
long count[N];
long is_in(long a[],long n)
{
long j;
for(j=n-1;j>=2;j--)
if(a[j]==a[n]&&a[j-1]==a[n-1])
return(n-j);
return(0);
}

int main()
{
#ifdef ONLINE_JUDGE
freopen ("Number Sequence.txt","r",stdin);
#endif
long n;
long a,b,i,t,d;
while(EOF!=(scanf("%ld%ld%ld",&a,&b,&n))&&!(a==0&&b==0&&n==0))
{
i=3;
count[1]=1;
count[2]=1;
while(1)
{
count[i]=(a*count[i-1]+b*count[i-2])%7;
t=is_in(count,i);
if(t!=0)
break;
i++;
}
i=i-t-1;
if(i>n)
printf("%ld\n",count[n]);
else
{
d=(n-i)%t;
if(d==0)
d=d+t;
d=d+i;
printf("%ld\n",count[d]);
}
}
return(0);
}


倚天照海花无数,流水高山心自知。
2006-11-18 15:01
nuciewth
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:我爱龙龙
等 级:贵宾
威 望:104
帖 子:9786
专家分:208
注 册:2006-5-23
收藏
得分:0 

steps


#include<stdio.h>

int main()
{
#ifndef ONLINE_JUDGE
freopen ("steps.txt","r",stdin);
#endif
long n1,n2,sum;
int i,j,flag;
while(EOF!=(scanf("%ld%ld",&n1,&n2)))
{
i=1;
sum=0;
flag=0;
j=0;
while((n2-n1)>sum)
{
sum=sum+i;
flag++;
if(flag==2)
{
i++;
flag=0;
}
j++;
}
printf("%d\n",j);
}
return(0);
}


倚天照海花无数,流水高山心自知。
2006-11-18 15:02
nuciewth
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:我爱龙龙
等 级:贵宾
威 望:104
帖 子:9786
专家分:208
注 册:2006-5-23
收藏
得分:0 
以下是引用smartwind在2006-11-20 12:32:03的发言:

这个超时了,输入0 2147483648(即2^31-1)试试

如果会超时我就不会把它帖出来了.


倚天照海花无数,流水高山心自知。
2006-11-24 13:39
nuciewth
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:我爱龙龙
等 级:贵宾
威 望:104
帖 子:9786
专家分:208
注 册:2006-5-23
收藏
得分:0 
求余

倚天照海花无数,流水高山心自知。
2007-01-18 21:17
nuciewth
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:我爱龙龙
等 级:贵宾
威 望:104
帖 子:9786
专家分:208
注 册:2006-5-23
收藏
得分:0 
以下是引用miaomiao0403在2007-2-23 18:38:39的发言:

为什么第一题用递归n大于1000不能运行.
递归层数太多,使得堆栈溢出.和函数调用机制有关.


倚天照海花无数,流水高山心自知。
2007-03-10 16:14
快速回复:[讨论]第一期题目
数据加载中...
 
   



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

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