您的位置:首页 > 其它

微软第四题 给定cost能遍历的最大城市数

2015-09-09 22:27 267 查看
有向图中N*N矩阵 cost:M, 最多可以遍历的结点个数 例如A可以有0->1->2->0->1 代价:2+2+3+2=9<10 输出4

#include <iostream>
using namespace std;

int main(){
int N=3;int M=10;
int A[][3]={{0,2,3},{4,0,2},{3,4,0}};
int last_step[3];
int dist[3][3];

for(int i=0;i<N;i++)
{
for(int j=0;j<N;j++)
{
dist[i][j]=A[j][i];
}
}
for(int i=0;i<N;i++){last_step[i]=i;}
int Max=0;
for(int step=1;step-Max<=1;step++){
for(int j=0;j<N;j++){
int min=INT_MAX;int u;
for(int m=0;m<N;m++)
{
if(last_step[j]!=m&&dist[m][j]<min)
{
min=dist[m][j];
u=m;
}
}

last_step[j]=u;
for(int k=0;k<N;k++)
{
dist[k][j]=min+A[k][u];
if(dist[k][j]<=M)
{Max=step;}
}
}
}

cout<<Max<<endl;
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: