后面#10,11,12,13测试点都显示超时,怎么解决
查看原帖
后面#10,11,12,13测试点都显示超时,怎么解决
1121807
ZOECCCCCCCC楼主2024/1/18 17:06
#include "iostream"
#include "cmath"

using namespace std;
bool v[100005];
int n;
double ans=1e9,x[20],y[20];

double len(int i,int j){
    return sqrt(pow(x[i]-x[j],2)+pow(y[i]-y[j],2));
}
void dfs(int now,double sum, int step) {
    if (sum > ans) {
        return;
    }
    if (step == n ) {
        ans = sum;
        return;
    }
    for (int i = 1; i <= n; i++) {
        if (!v[i]) {
            v[i] = true;
            dfs(i, sum + len(now, i), step + 1);
            v[i] = false;
        }
    }
}
int main(){
    cin >> n;
    for(int i=1;i<=n;i++){
        cin >> x[i] >> y[i];
    }
    dfs(0,0,0);
    printf("%.2lf",ans);
    return 0;
}
2024/1/18 17:06
加载中...