zoukankan      html  css  js  c++  java
  • poj 1207 The 3n + 1 problem 解题报告

    题意:

    给出一个区间,求区间内每一个数按规则(奇数取3n+1,偶数取n/2)变换最后变成1的步数,求最大的一个步数。

    思路:

    这道题在poj上很快就是水过了,用的是一般的笨方法,后来看到学校的oj也有这道题,就复制粘贴过去,结果WA了,好诡异。然后改了一些细节,TLE了,顿时无语。然后经过各种优化啊,记忆优化啊,有木有!!优化到不能再优化啊,还是TLE啊。没办法了,只能试试其他的方法了。很简单就能想到打表,把题目要求的数据范围内所有的步数都求出来,然后就可以顺利的水了,水过后看见别人做的,用记忆的过了啊,有木有!!我怎么就没过呢~~更多的还是打表~~我的时间有点慢,不解释。。。。顺便说一下,这道题还是很阴险的,做的时候要细心呀。。。

    代码:


    #include
    <iostream>
    #include
    <cstring>
    #include
    <cstdio>
    using namespace std;

    int d[10003];

    int main()
    {
    //freopen("input.txt","r",stdin);
    int i,j,t;
    memset(d,
    0,sizeof(d));
    for(int k=2;k<10003;k++)//打表
    {
    t
    =k;
    while(1!=t)
    {
    if(t&1)
    {
    t
    =t*3+1;
    }
    else t>>=1;
    d[k]
    ++;
    }
    }
    while(cin>>i>>j)
    {

    int max=0,t=0;
    cout
    <<i<<" "<<j<<" ";
    if(i>j)
    {
    i
    ^=j;j^=i;i^=j;
    }
    for(int k=i;k<=j;k++)
    {


    if(max<d[k])
    max
    =d[k];
    }


    cout
    <<max+1<<endl;
    }
    return 0;
    }
  • 相关阅读:
    37. Sudoku Solver(js)
    36. Valid Sudoku(js)
    35. Search Insert Position(js)
    34. Find First and Last Position of Element in Sorted Array(js)
    33. Search in Rotated Sorted Array(js)
    32. Longest Valid Parentheses(js)
    函数的柯里化
    俞敏洪:我和马云就差了8个字
    vue路由传值params和query的区别
    简述vuex的数据传递流程
  • 原文地址:https://www.cnblogs.com/andyidea/p/poj1207.html
Copyright © 2011-2022 走看看