大佬求调
  • 板块P1433 吃奶酪
  • 楼主ppchnb
  • 当前回复0
  • 已保存回复0
  • 发布时间2023/7/6 15:31
  • 上次更新2023/11/3 11:19:53
查看原帖
大佬求调
765562
ppchnb楼主2023/7/6 15:31

用next_permutation做的

样例都过不了,我感觉时计算距离出了问题

//那些输出的无用的调试的时候用到的不用管

#include<stdio.h>
#include<iostream>
#include<iomanip>
#include<algorithm>
#include<math.h>

using namespace std;

const int N=16;

struct point
{
  double x,y;  
}p[N];

bool cmp(point a,point b)
{
    return a.x>b.x;
}

int n;

int main()
{
    cin >> n;
    for(int i=0;i<n;i++)
    {
        cin >> p[i].x >> p[i].y;
    }
    double minn=1000000;
    int cm=0;
    int cnt=0;
    do{
        double sum=0;
        for(int i=1;i<n;i++)
        {
            sum+=sqrt(fabs((p[i].x-p[i-1].x)*(p[i].x-p[i-1].x))+fabs((p[i].y-p[i-1].y,2)*(p[i].y-p[i-1].y,2)));
        }
        if(sum<minn)
        {
            minn=sum;
            cm=cnt;
        }
        cout << sum << endl;
        for(int i=0;i<n;i++)
        {
            cout << p[i].x << " " << p[i].y << endl;
        }
        cout << endl;
        cnt++;
    }while(next_permutation(p,p+n,cmp));
    cout << cm << " " <<minn;
    return 0;
    
}

2023/7/6 15:31
加载中...