标题:高手帮忙解决个小问题(C语言描述,VC++环境)
只看楼主
xichong
Rank: 7Rank: 7Rank: 7
来 自:四川南充
等 级:黑侠
威 望:2
帖 子:146
专家分:582
注 册:2009-6-10
结帖率:100%
已结贴  问题点数:50 回复次数:5 
高手帮忙解决个小问题(C语言描述,VC++环境)
Description


A先生有很多双筷子。确切的说应该是很多根,因为筷子的长度不一,很难判断出哪两根是一双的。这天,A先生家里来了K个客人,A先生留下他们吃晚饭。加上A先生,A夫人和他们的孩子小A,共K+3个人。每人需要用一双筷子。A先生只好清理了一下筷子,共N根,长度为T1,T2,T3,……,TN。现在他想用这些筷子组合成K+3双,使每双的筷子长度差的平方和最小。(怎么不是和最小??这要去问A先生了,呵呵)


Input


共有两行,第一行为两个用空格隔开的整数,表示N,K(1≤N≤100,0<K<50),第二行共有N个用空格隔开的整数。


Output

仅一行。如果凑不齐K+3双,输出-1,否则输出长度差平方和的最小值。

Sample Input

10 1
1 1 2 3 3 3 4 6 10 20


Sample Output

5


Hint


第一双 1 1

第二双 2 3

第三双 3 3

第四双 4 6

(1-1)^2+(2-3)^2+(3-3)^2+(4-6)^2=5

搜索更多相关主题的帖子: C语言 环境 描述 
2010-06-03 22:29
南国利剑
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:29
帖 子:1165
专家分:3536
注 册:2010-4-12
得分:0 
不是很理解什么意思?

南国利剑
2010-06-05 15:26
NOMIPS
Rank: 7Rank: 7Rank: 7
等 级:黑侠
帖 子:86
专家分:537
注 册:2010-3-31
得分:50 
试试这个
程序代码:
#include <stdio.h>
#include <math.h>

void bubble(int a[],int n);
int  mincount(int a[],int num_people);

int main(int argc, char *argv[])
{
    int t[100];
    int n,k;
    int num_people;
    int i;
    int result;
    printf("please input number of n and k :\n");
    scanf("%d %d",&n,&k);
    printf("please  n members of array:\n");
    for(i=0;i<n;i++)
    scanf("%d",&t[i]);


    num_people=k+3;

    if(n<(k+3)*2)
    {
        printf("-1 \n");
        return 0;
    }

    bubble(t,n);

   result=mincount(t,num_people);
       printf("%d\n",result);
    return 0;
}



void bubble(int a[],int n)
{
    int i,j;
    int temp;
    for(i=0;i<n;i++)
    {
        for(j=0;j<n-i-1;j++)
        {
            if (a[j]>a[j+1])
            {
                temp=a[j+1];
                a[j+1]=a[j];
                a[j]=temp;
            }
        }
    }
}


int  mincount(int a[],int num_people)
{
    int i;
    int temp;
    int sum=0;

    for(i=0;i<num_people;i++)
    {
     temp=a[2*i]-a[2*i+1];
         temp=temp*temp;
          sum=sum+temp;
    }

    return sum;
}


[ 本帖最后由 NOMIPS 于 2010-6-5 17:25 编辑 ]
2010-06-05 17:23
starjun14
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:266
专家分:136
注 册:2009-4-26
得分:0 
什么呀~
2010-06-07 21:36
BlueGuy
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:29
帖 子:4476
专家分:4055
注 册:2009-4-18
得分:0 
回复 3楼 NOMIPS
看样子是对的,简单的贪心,/

我就是真命天子,顺我者生,逆我者死!
2010-06-07 21:39
cherryunix
Rank: 1
等 级:新手上路
威 望:1
帖 子:7
专家分:4
注 册:2010-9-10
得分:0 
这题无论如何贪心都过不了全部的解,如果你觉得是贪心只能说贪心在部分条件下可行,请好好学习一下DP再下结论
2010-09-10 11:19



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-309220-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.160636 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved