POJ 2081 Recaman's Sequence

这是一道要打表的递推题。注意数组开得足够大就行。

 

#include<cstdio>

#include<cstring>

#include<cstdlib>



bool vis[4000000] = {false};//记录一个数是否出现在结果中

int a[500005];



void init()

{

    a[0] = 0;

    for( int i = 1; i <= 500000; i ++)

    {

        if( a[i - 1] - i > 0 && !vis[ a[i - 1] - i])

            a[i] = a[i - 1] - i;

        else

            a[i] = a[i - 1] + i;

        vis[ a[i] ] = true;

    }

}



int main()

{

    int k;

    init();

    while( scanf( "%d", &k), k != -1)

    {

        printf( "%d\n", a[k]);

    }

    return 0;

}

 

 

 

你可能感兴趣的:(sequence)