码迷,mamicode.com
首页 > 其他好文 > 详细

poj 杂题 - 2081 Recaman's Sequence

时间:2015-05-11 16:08:36      阅读:145      评论:0      收藏:0      [点我收藏+]

标签:poj

这道题目一开始就能知道考点在如何缩短查找时间。所以加快查找是我们的重点。但是在大数据面前,查找算法都不够快,所以我们用简单的hash思想来做。

我们开一个数组a,当出现了一个数b时,把该数作为下标调整值,即a[b] = -1,下一次出现该值的时候直接去找这个值作为下标的a值是否为-1即可。

#include<stdio.h>
#include<string.h>
#define MAX 5000010
int p[MAX]={0};
int s[MAX]={0};

int main(){
	int n,i;
	p[0]=0;
	s[0]=-1;
	for(i=1;i<=500000;i++){
		p[i]=p[i-1]-i;
		if(p[i]<0 || s[p[i]]==-1){
			p[i] = p[i-1]+i;
		}		
		s[p[i]]=-1;
	}
	while(scanf("%d",&n)&&n!=-1){
		printf("%d\n",p[n]);
	}
	return 0;
}


poj 杂题 - 2081 Recaman's Sequence

标签:poj

原文地址:http://blog.csdn.net/u010006643/article/details/45644737

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!