@sensitive-cs
        
        2016-10-06T04:26:39.000000Z
        字数 639
        阅读 906
    给出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]++;}elsebreak;}j++;}for (i = 0;i < n;i++){if (b[i] >= 2)b[i] /= 2;elseb[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;}}}