zoukankan      html  css  js  c++  java
  • poj_2081

    Recaman's Sequence
    Time Limit: 3000MS   Memory Limit: 60000K
    Total Submissions: 19016   Accepted: 7963

    Description

    The Recaman's sequence is defined by a0 = 0 ; for m > 0, am = am−1 − m if the rsulting am is positive and not already in the sequence, otherwise am = am−1 + m. 
    The first few numbers in the Recaman's Sequence is 0, 1, 3, 6, 2, 7, 13, 20, 12, 21, 11, 22, 10, 23, 9 ... 
    Given k, your task is to calculate ak.

    Input

    The input consists of several test cases. Each line of the input contains an integer k where 0 <= k <= 500000. 
    The last line contains an integer −1, which should not be processed.

    Output

    For each k given in the input, print one line containing ak to the output.

    Sample Input

    7
    10000
    -1

    Sample Output

    20
    18658
    
    
    DP水题
    #include <iostream>
    #include <cstring>
    using namespace std;
    const int MAXN = 9999999;
    int a[MAXN];
    bool flag[MAXN];
    
    void DP()
    {
    	for(int i=1;i<=500000;i++)
    	{
    		if(a[i-1] - i > 0 && flag[a[i-1] - i] == false)
    		{
    			a[i] = a[i-1] - i;
    			flag[a[i-1] - i] = true;
    		}
    		else
    		{
    			a[i] = a[i-1] + i;
    			flag[a[i-1] + i] = true;
    		}
    	}
    }
    
    int main()
    {
    	memset(flag,false,sizeof(false));
    	a[0] = 0;
    	DP();
    	int k;
    	while(cin>>k)
    	{
    		if(k == -1) break;
    		cout<<a[k]<<endl;
    	}
    }


  • 相关阅读:
    逗号操作符使用小技巧
    字符解码?
    画图 wx.Window pen
    进程和线程
    内存管理
    简单的文本编辑器
    迭代器 Iterator
    文件操作
    ebay api学习
    一,wxpython入门
  • 原文地址:https://www.cnblogs.com/lgh1992314/p/5835273.html
Copyright © 2011-2022 走看看