@Metralix
2016-10-06T07:29:00.000000Z
字数 596
阅读 954
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);}
