求助大佬为什么一直报错
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;
}
多谢帮忙!!!