@Metralix
2016-10-06T15:29:00.000000Z
字数 596
阅读 803
LANGUAGE C
每两个相同长度的棍子能凑成一对,每两对能凑成一个框。
首先,找有多少对棍子,把所有长度输入一个数组,然后对这个数组排序;
从第一个数开始,如果下一个数和它相等,那么,记录h++,不等的话,跳到下一个长度,最终这个长度的对数应该是(h+1)/2............(这个公式是自己找规律的)
然后将h的值存入一个数组a[]={0},再把h清空,继续循环。
这个数组循环完了以后,所有长度的对数都在a[]中
然后用个for循环,将对数全部累加起来/2就是最终结果
#include<stdio.h>
int main()
{
int n,i,j,temp;
scanf("%d",&n);
int asd[n];
for(i=0;i<n;i++)
{
scanf("%d",&asd[i]);
}
for(i=0;i<n-1;i++)
{
for(j=i+1;j<n;j++)
{
if(asd[j]>asd[i])
{
temp=asd[j];
asd[j]=asd[i];
asd[i]=temp;
}
}
}
int g=0,h=0,sum=0,k;
int a[100]={0};
for(g=0;g<n;g++)
{
if(asd[g+1]==asd[g])
{
h++;
}
else
{
h=(h+1)/2;
a[g]=h;
h=0;
}
}
for(k=0;k<n;k++)
{
sum+=a[k];
}
printf("%d",sum/2);
}