求助大佬
  • 板块P1433 吃奶酪
  • 楼主whisp1r
  • 当前回复3
  • 已保存回复3
  • 发布时间2022/1/28 23:33
  • 上次更新2023/10/28 10:27:36
查看原帖
求助大佬
542793
whisp1r楼主2022/1/28 23:33

求助大佬为什么一直报错


typedef typename _Iterator::iterator_category iterator_category;

165 53 C:\Program Files (x86)\Dev-Cpp\MinGW64\lib\gcc\x86_64-w64-mingw32\4.9.2\include\c++\bits\stl_iterator_base_types.h [Error] 'int' is not a class, struct, or union type (就这么报错的)


代码附上(学习的是题解大佬的方法)

#include<stdio.h>
#include<iostream>
#include<algorithm>
#include<math.h>
#include<cstring>
#define inf 0x7fffffff
using namespace std;
int n;
struct cheese{
	double x,y;
}c[18];
double distance(int v,int w){//计算v w两个奶酪之间的距离 
	return sqrt(c[v].x-c[w].x)*(c[v].x-c[w].x)+(c[v].y+c[w].y)*(c[v].y+c[w].y); 
}
double dp[20][20],a[20][20],ans;
int main()
{
	scanf("%d",&n);
	for(int i=1;i<=n;i++){
		scanf("%lf%lf",&c[i].x,&c[i].y);
	}
	memset(dp,inf,sizeof(dp));
	c[0].x=0;c[0].y=0;
	for(int i=0;i<=n;i++){
		for(int j=i+1;j<=n;j++){
			a[i][j]=distance(i,j);//初始化距离数组 
			a[j][i]=a[i][j];
		}
	}
	for(int i=1;i<=n;i++){
		dp[i][1<<(i-1)]=a[0][i];
		//在i点上且只有经过i点时距离是零点到i点的距离 
	}
	for(int k=1;k<(1<<n);k++){
	// (1<<n)即每1个点都到的二进制表示法 
		for(int i=1;i<=n;i++){//在前i个点中选取 
			if(k&(1<<(i-1))==0)//& 按位取与找一样的 
			continue;
			//i的位置没被走过 所以不需要继续计算了 ?
			for(int j=1;j<=n;j++){
				if(i==j)//同一个点 不用算了 
				continue;
				if(k&(1<<(j-1))==0){
					continue;//j的位置还没走到 
				} 
				dp[i][k]=min(dp[i][k],dp[j][k-(1<<(i-1))]+a[i][j]); 
			}
		} 
	} 
	for(int i=1;i<=n;i++){
		ans=min(ans,dp[i][(1<<n)-1]);
	}
	printf("%.2f\n",ans);
	return 0;
 } 

多谢帮忙!!!

2022/1/28 23:33
加载中...