1. 程式人生 > >洛谷P1433 吃奶酪 DFS

洛谷P1433 吃奶酪 DFS

using class 類型 就會 stream style 變量定義 == 如果

題目中說了輸入的坐標是實數,所以最好把參與運算的變量定義成double類型

在搜索的過程中只要計算得到的路程大於最小的路程就return,然後搜索下一個坐標

#include<iostream>
#include<cmath>
#include<cstdio>
using namespace std;
struct pp
{
    double x,y;
}a[20];
int n,book[20];
double minn=999999.0;
void dfs(int x,double sum,double xx,double yy)
{
    int i;
    
if(x==n)minn=min(minn,sum); if(sum>minn)return;//如果沒有這句就會TLE for(i=1;i<=n;i++) if(book[i]==0) { book[i]=1; dfs(x+1,sum+sqrt((a[i].x-xx)*(a[i].x-xx)+(a[i].y-yy)*(a[i].y-yy)),a[i].x,a[i].y); book[i]=0; } } int main() { int i; cin
>>n; for(i=1;i<=n;i++) cin>>a[i].x>>a[i].y; dfs(0,0.0,0.0,0.0); printf("%.2lf\n",minn); }

洛谷P1433 吃奶酪 DFS