PTA(Basic Level) 1065:单身狗(C语言实现)
分析:
①将伴侣的ID放在对应的下标的数组里,表示为一对,例如11111 22222,s[11111]=22222、s[22222]=11111。
②将参加派对的人的ID放在数组 a 中并按从小到大排序。
③对a顺序查找,出现伴侣就置为-1作为标记。
④输出,记得输出格式为%05d
#include <stdio.h>
#include <stdlib.h>
int cmp(const void *a,const void *b)
{
return *(int*)a-*(int*)b;//升序
}
int main()
{
int s[100000]={0},a[10001]={0};
int n,m,a1,a2,i,j,count=0;
scanf("%d",&n);
for(i=0; i<n; i++)
{
scanf("%d%d",&a1,&a2);
s[a1]=a2;//存储伴侣
s[a2]=a1;
}
scanf("%d",&m);
for(i=0; i<m; i++)
scanf("%d",&a[i]);
qsort(a,m,sizeof(a[0]),cmp);
for(i=0; i<m; i++)
{
if(a[i] != -1)
{
for(j=i+1; j<m; j++)//查找a[j]的伴侣
{
if(s[a[i]] == a[j])//伴侣参加派对
{
a[i]=-1;
a[j]=-1;
break;
}
}
if(j == m)//没有伴侣或者伴侣没有参加派对
count++;
}
}
printf("%d\n",count);
for(i=0; i<m; i++)
if(a[i] != -1)
{
count==1?printf("%05d",a[i]):printf("%05d ",a[i]);//注意格式
count--;
}
return 0;
}