@sensitive-cs
2016-10-06T12:26:39.000000Z
字数 639
阅读 764
给出n条具有一定长度的边,问最多可构成多少个矩形。
先对n条边进行排序,然后从第一条边开始,对每一种不同的长度的边的数量进行统计。最后,同一种边的数量小于2的直接舍去,若是不小于2的,直接除以2,累加到sum上,最后sum / 2就是矩形的数量。
#include <stdio.h>
void sortion(int n,int a[]);
int main()
{
int a[110];
int b[110];
int n;
while (scanf("%d",&n) != EOF)
{
int i,j = 0;
int sum = 0;
for (i = 0;i < n;i++)
scanf("%d",&a[i]);
sortion(n,a);
for (i = 0;i < n;i++)
b[i] = 0;
i = 0;
while (i < n)
{
int temp = a[i];
while (i < n)
{
if (temp == a[i])
{
i++;
b[j]++;
}
else
break;
}
j++;
}
for (i = 0;i < n;i++)
{
if (b[i] >= 2)
b[i] /= 2;
else
b[i] = 0;
}
for (i = 0;i < n;i++)
sum += b[i];
printf("%d\n",sum/2);
}
return 0;
}
void sortion(int n,int a[])
{
int i,j;
for (i = 0;i < n;i++)
for (j = i+1;j < n;j++)
{
if (a[i] > a[j])
{
int temp = a[i];
a[i] = a[j];
a[j] = temp;
}
}
}