题目描述
Problem C: Jolly Jumpers
A sequence of n > 0 integers is called a jolly jumper if the absolute values of the difference between successive elements take on all the values 1 through n-1. For instance,
1 4 2 3
is a jolly jumper, because the absolutes differences are 3, 2, and 1 respectively. The definition implies that any sequence of a single integer is a jolly jumper. You are to write a program to determine whether or not each of a number of sequences is a jolly jumper.
Each line of input contains an integer n < 3000 followed by n integers representing the sequence. For each line of input, generate a line of output saying "Jolly" or "Not jolly".
输入
暂无
输出
暂无
样例输入
4 1 4 2 3
5 1 4 2 -1 6
样例输出
Jolly
Not jolly
参考代码
#include <stdio.h>
#include <stdlib.h>
int people[1000];
int i,j,k,n,tot,best;
char cando[101][50000];
main()
{
scanf("%d",&n);
for (i=0;i<n;i++)
{
scanf("%d",&people[i]);
tot += people[i];
}
cando[0][0] = 1;
for (i=0;i<n;i++)
{
/* try every person */
for (j=n/2;j>=0;j--)
{
for (k=45000;k>=0;k--)
{
if (cando[j][k]) cando[j+1][k+people[i]]=1;
}
}
}
for (i=0;i<=45000;i++)
{
if (!cando[n/2][i]) continue;
if (abs(tot-2*i) < abs(tot-2*best)) best = i;
}
if (best > tot-best) best = tot-best;
printf("%d %dn",best,tot-best);
}
解析
暂无