悬赏找不同
查看原帖
悬赏找不同
540822
HotDogSeller楼主2022/7/4 12:03

这两份代码有啥不同的,为啥上面一份AC下面一份WA。。。。。。

#include <cstdio>
#include <cstring> 
#include <cmath> 

#define min(a,b) (((a)<(b))?(a):(b)) 

double ans;
double a[20][20],x[20],y[20],F[18][34000];
int N,i,j,k; 

double distance(int v,int w){
	return sqrt((x[v]-x[w])*(x[v]-x[w])+(y[v]-y[w])*(y[v]-y[w]));
}

int main(){
	
	memset(F,127,sizeof(F));
	ans=F[0][0];
	scanf("%d",&N);
	for(i=1;i<=N;i++){
		scanf("%lf%lf",&x[i],&y[i]);
	}
	x[0]=0;y[0]=0;
	
	for(i=0;i<=N;i++){
		for(j=i+1;j<=N;j++){
			a[i][j]=distance(i,j);
			a[j][i]=a[i][j];
		}
	} 
	for(i=1;i<=N;i++){
		F[i][(1<<(i-1))]=a[0][i];
	}
	
	for(k=1;k<(1<<N);k++){
		for(i=1;i<=N;i++){
			if((k&(1<<(i-1)))==0){
				continue;	
			}
			for(j=1;j<=N;j++){
				if(i==j){
					continue;
				}
				if((k&(1<<(j-1)))==0){
					continue;
				} 
				F[i][k]=min(F[i][k],F[j][k-(1<<(i-1))]+a[i][j]);
			} 
		} 
	} 
	
	for(i=1;i<=N;i++){
		ans=min(ans,F[i][(1<<N)-1]);
	}
	printf("%.2f\n",ans);
	return 0;
}
#include<iostream>
#include<algorithm>
#include<queue>
#include<set>
#include<cmath>
#include<memory.h>
#include<map>

//#define int long long
#define min(a,b) (((a)<(b))?(a):(b)) 

using namespace std;

int n;
double ans;
double x[20],y[20];
double dp[20][34000];
double d[20][20];

double dis(int a,int b){
	return sqrt((y[a]-y[b])*(y[a]-y[b])+(x[a]-x[b])*(x[a]-x[b]));
}

signed main(){

	memset(dp,127,sizeof(dp));
	ans=dp[0][0];
	
	cin>>n;
	
	for(int i=1;i<=n;i++){
		cin>>x[i]>>y[i];
	}
	x[0]=0;
	y[0]=0;
	
	for(int i=0;i<=n;i++){
		for(int j=i+1;j<=n;j++){
			d[i][j]=dis(i,j);
			d[j][i]=d[i][j];
		}
	}
	
	for(int i=1;i<=n;i++){
		dp[i][1<<(i-1)]=d[0][i];
	}
	
	for(int k=1;k<(1<<n);k++){
		for(int i=1;i<=n;i++){
			if((k&(1<<(i-1)))==0){
				continue;
			}
			for(int j=1;j<=n;j++){
				if(j==i){
                	continue;
				}
				if((k&(1<<(j-1)))==0){
					continue;
				}
				dp[i][k]=min(dp[i][k],dp[j][k-(1<<(i-1))]+d[i][j]);
			}
		}
	}
	
	for(int i=1;i<=n;i++){
		ans=min(ans,dp[i][(1<<n)-1]);
	}
	cout<<ans<<endl;
	return 0;
}
2022/7/4 12:03
加载中...