当前位置:编程学习 > C/C++ >>

10911 - Forming Quiz Teams

[cpp] 
描述:集合题目,刘汝佳书上有这道题目,不过他的代码有点漏洞,需要改一点才能过 
#include <cstdio>  
#include <cstring>  
#include <cmath>  
int n,t=0; 
char str[1010]; 
double v[25][2],d[(1<<20)]; 
double min(double x,double y) 

    return x>y?y:x; 

double solve(int x,int y) 

    double a=v[x][0]-v[y][0],b=v[x][1]-v[y][1]; 
    return sqrt(a*a+b*b); 

int main() 

    //freopen("a.txt","r",stdin);  
    while(scanf("%d",&n)!=EOF) 
    { 
        if(!n) break; 
        n=n*2; 
        for(int i=0; i<n; i++) scanf("%s %lf %lf",str,&v[i][0],&v[i][1]); 
        d[0]=0; 
        for(int s=1; s<(1<<n); ++s) 
        { 
            d[s]=0x7fffffff; 
            int i,j; 
            for(i=0; i<n; ++i) if(s&(1<<i)) break; 
            for(j=i+1; j<n; ++j) 
                if(s&(1<<j)) d[s]=min(d[s],solve(i,j)+d[s^(1<<i)^(1<<j)]); 
        } 
        printf("Case %d: %.2lf\n",++t,d[(1<<n)-1]); 
    } 
    return 0; 
}* 
补充:软件开发 , C++ ,
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,