hdoj1032 3n+1问题
2014-05-26 12:16
190 查看
链接
http://acm.nyist.net/JudgeOnline/problem.php?pid=271
代码1 : 每次都要调用一次函数 有些浪费时间 !!
代码2: 再加一个函数 就解决了函数重复调用的问题 节约时间!
运行时间:2014-02-18 14:32:18 | 运行人:shengweisong
view source
print?
http://acm.nyist.net/JudgeOnline/problem.php?pid=271
代码1 : 每次都要调用一次函数 有些浪费时间 !!
View Code
Problem : 1032 (The 3n + 1 problem ) Judge Status : Accepted RunId : 10087220 Language : C Author : sws Code Render Status : Rendered By HDOJ C Code Render Version 0.01 Beta#include<stdio.h> int f(int x ) { int y = 1; while(x != 1 ) { y ++; if(x%2 ) x = 3*x+1; else x = x/2; } return y; } int main() { int i, j, maxn, m, k, n; while(scanf("%d%d",&i,&j)==2){ //只有当i,j都正确读入整数时(2项),才进行下一步 //scanf("%d%d", &i, &j ); maxn = 0; n = i; m = j; if(i>j) { k = i; i = j; j = k; } for(; i<=j; i ++ ) if(maxn < f(i) ) maxn = f(i); //n = n > m? n:m; printf("%d %d %d\n", n, m, maxn ); } return 0; } #include<stdio.h> int f(int x ) { int y = 1; while( x != 1 ) { y ++; if( x%2 ) x = 3*x+1; else x = x/2; } return y; } int main() { int i, j, maxn, m, k, n; while(scanf("%d%d",&i,&j)==2){ //只有当i,j都正确读入整数时(2项),才进行下一步 //scanf("%d%d", &i, &j ); maxn = 0; n = i; m = j; if( i>j) { k = i; i = j; j = k; } for(; i<=j; i ++ ) if( maxn < f(i) ) maxn = f(i); //n = n > m? n:m; printf( "%d %d %d\n", n, m, maxn ); } return 0; }
代码2: 再加一个函数 就解决了函数重复调用的问题 节约时间!
查看代码---运行号:724144----结果:Accepted
运行时间:2014-02-18 14:32:18 | 运行人:shengweisongview source
print?
01.
#include<stdio.h> //TL原因估计是每次都要调用函数
02.
#define MAX 10001
03.
int
a[MAX];
04.
int
f(
int
x )
05.
{
06.
int
y = 1;
07.
while
( x != 1 )
08.
{
09.
y ++;
10.
if
( x%2 )
11.
x = 3*x+1;
12.
else
13.
x = x/2;
14.
15.
}
16.
return
y;
17.
}
18.
void
CountA(){
19.
for
(
int
i = 1; i != MAX; ++i)
20.
a[i] = f(i);
21.
}
22.
int
main()
23.
{
24.
CountA(); // 如在前面加一个void 就不起作用了!! 就在这我纠结了半天!!
25.
register
int
i, j, maxn, m, k, n;
26.
27.
while
(
scanf
(
"%d%d"
,&i,&j)!=EOF ){
//只有当i,j都正确读入整数时(2项),才进行下一步
28.
//scanf( "%d%d", &i, &j );
29.
maxn = 0;
30.
n = i;
31.
m = j;
32.
if
( i>j)
33.
{
34.
k = i;
35.
i = j;
36.
j = k;
37.
}
38.
for
( ; i<=j; i ++ )
39.
if
( maxn < a[i] )
40.
maxn = a[i];
41.
//n = n > m? n:m;
42.
printf
(
"%d %d %d\n"
, n, m, maxn );
43.
}
44.
return
0;
45.
}
相关文章推荐
- UVA 100 && HDU 1032 The 3n+1问题 (扑街题)
- 1032 3n+1问题
- 杭电 1032 The 3n+1问题
- HDU 1032(3n+1问题)
- HDU-1032 The 3n+1 problem 模拟问题(水题)
- HDOJ1032 The 3n+1 problem
- Hdoj 1032 The 3n+1 problem (看题目很重要)
- HDOJ1032 The 3n+1 Problem(趣味数字——"角谷猜想"实现)
- HDOJ, 杭电1032, The 3n+1 problem. POJ, 北大OJ,1207....数学题。。又一发
- HDOJ 1032 The 3n+1 problem
- POJ 1207 HDOJ/HDU 1032 3n+1数链问题 绝对不水的解法
- HDOJ 最短路径问题
- hdoj 1207(解决n=64问题)解题报告
- HDOJ 3970 最短路径问题[Dijsktra算法的应用]
- HDOJ1031投票问题
- 1.6.1 3n+1问题 UVA100
- hdoj 2042 不容易系列之二 解题报告 (老汉牵羊过收费站问题)(超水递推)
- HDOJ1864背包问题.
- UVa 3n+1 问题
- HDOJ N皇后问题