挑战编程-基本数据结构
在图书馆闲逛,发现了刘汝佳的这本书,听着这个名字就把书拿回来了,还没有系统的学习过数据结构,就以这本书为启蒙读物吧!
以解决问题的形式来说明各种基本数据结构的使用,这样不仅了解了这些数据结构也能够运用这些数据结构解决问题。
本书的题目是在uva上的选择的。没办法刚注册了账号。
题目A:http://www.programming-challenges.com/pg.php?page=downloadproblem&probid=110201&format=html
题目大意:给出我们一行数列元素数为n,如果满足两个连续的相邻元素的绝对值取遍所有从1到n的所有整数,那么就是一个jolly jumper,否则不是。
关于本题,我竭尽所能仍然
486472 | 13/04/10 04:01 | Solved | 0.006 secs. | CPP |
仍然达不到大牛们的0s啊!不过本题我的处理方法很传统很初级,就是把每两个的绝对值求出并以绝对值为下标标记,然后依次遍历1-n,如果所有的数都被标记则为jolly jumper!
求大牛指导,求0s!
PS : my code

1 #include<iostream> 2 #include<cstring> 3 #include<cstdio> 4 #include<cmath> 5 using namespace std; 6 int num[3005]; 7 int mark[3005]; 8 int main() 9 { 10 int n; 11 while(scanf("%d",&n)!=EOF) 12 { 13 int i; 14 memset(num,0,sizeof(num)); 15 memset(mark,0,sizeof(mark)); 16 scanf("%d",&num[0]); 17 for(i=1;i<n;i++) 18 { 19 scanf("%d",&num[i]); 20 mark[(int)abs(num[i]-num[i-1])]=1; 21 } 22 23 for(i=1;i<n;i++) 24 { 25 if(mark[i]==0) 26 break; 27 } 28 if(i>=n) 29 printf("Jolly\n"); 30 else 31 printf("Not jolly\n"); 32 } 33 return 0; 34 }