poj 4044 Score Sequence(暴力,12年金华邀请赛A题)

本文详细解析了一道ACM竞赛中的A题,强调了在解决问题前先删除序列中重复元素的重要性,并通过C语言实现了一个具体的解决方案。代码中使用了qsort函数进行排序并去除重复项,最终找出最长的相同子序列。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

这题很简单,本来不打算写题解,不过想想D题都写了,A题也顺带写一下。

唯一需要注意的地方是要在求解之前先删除序列中相同的元素,而不是之后。

units digit是个位的意思。

#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#define N 105
int a[N],b[N];
struct node
{
	int x,y;
}s[N];
int cmp(const void *a,const void *b)
{
	return *(int *)b-*(int *)a;
}
int cmp1(const void *a,const void *b)
{
	node *c,*d;
	c=(node *)a;
	d=(node *)b;
	if(c->y!=d->y)
		return c->y-d->y;
	else
		return c->x-d->x;
}
int main()
{
	int T;
	scanf("%d",&T);
	while(T--)
	{
		int n1,n2;
		scanf("%d%d",&n1,&n2);
		int i,j;
		for(i=1;i<=n1;i++)
			scanf("%d",&a[i]);
		for(i=1;i<=n2;i++)
			scanf("%d",&b[i]);
		qsort(a+1,n1,sizeof(a[0]),cmp);
		qsort(b+1,n2,sizeof(b[0]),cmp);
		int max,start,end;
		max=0;
		j=2;
		a[1]=a[1];
		for(i=2;i<=n1;i++)
		{
			if(a[i]!=a[i-1])
				a[j++]=a[i];
		}
		n1=j-1;
		j=2;
		b[1]=b[1];
		for(i=2;i<=n2;i++)
		{
			if(b[i]!=b[i-1])
				b[j++]=b[i];
		}
		n2=j-1;
		for(i=1;i<=n1;i++)
		{
			for(j=1;j<=n2;j++)
			{
				if(a[i]==b[j])
				{
					int x,y,temp;
					x=i;y=j;
					while(x<=n1&&y<=n2)
					{
						if(a[x]==b[y])
						{
							x++;
							y++;
						}
						else
							break;
					}
					temp=x-i;
					if(temp>max)
					{
						start=i;
						end=x-1;
						max=temp;
					}
				}
			}
		}
		if(max==0)
		{
			printf("NONE\n");
			continue;
		}
		int c[N];
		j=1;
		c[0]=a[start];
		for(i=start+1;i<=end;i++)
		{
			if(a[i]!=a[i-1])
				c[j++]=a[i];
		}
		for(i=0;i<j-1;i++)
			printf("%d ",c[i]);
		printf("%d\n",c[i]);
		for(i=0;i<j;i++)
		{
			s[i].x=c[i];
			s[i].y=c[i]%10;
		}
		qsort(s,j,sizeof(s[0]),cmp1);
		for(i=0;i<j-1;i++)
			printf("%d ",s[i].x);
		printf("%d\n",s[i].x);
	}
	return 0;
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值