【求助】谁有pudn的号,帮忙下载个程序,谢谢!

flying_ 2009-04-25 02:57:20
谁有pudn的号,帮忙下个程序,万分感谢!!
地址http://www.pudn.com/downloads37/sourcecode/math/detail125648.html
...全文
90 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
lingyin55 2009-04-25
  • 打赏
  • 举报
回复
看看这个能不能下载
http://www.dssz.com/45309.html
flying_ 2009-04-25
  • 打赏
  • 举报
回复
可是程序都不是很完整啊!
  • 打赏
  • 举报
回复

/* distance.cpp 读取城市坐标信息,计算两两城市之间的距离,生成距离文件*/
#include <IOSTREAM>
#include <FSTREAM>
#include <STRING>
#include <CMATH>
using namespace std;

int main()
{
//申明和初始化变量
char city_name[20];
float city_x[20], city_y[20];
float city_distance[20][20];
float max_distance, min_distance;
int i=0, k, j;
string filename;
ifstream sensor;
ofstream inform;


//请求用户输入文件名
cout<<"enter the name of the data file:(it should be 'data.txt' here) ";
cin>>filename;

//打开文件读取数据信息
sensor.open(filename.c_str());
if(sensor.fail())
{
cout<<"Error opening input file\n";
}
else
{
//没有到达文件末尾时循环读取数据

while(!sensor.eof())
{
sensor>>city_name[i]>>city_x[i]>>city_y[i];
i++;
}
}


//计算任意两城市之间的距离,求出最大、最小距离

//初始化最大、最小距离值
max_distance=sqrt(pow(city_x[1]-city_x[0],2)+pow(city_y[1]-city_y[0],2));
min_distance=max_distance;

for(k=0;k<I-1;K++) if(min_distance } max_distance="city_distance[k][j];" { if(max_distance<city_distance[k][j]) city_distance[k][j]="sqrt(pow(city_x[j]-city_x[k],2)+pow(city_y[j]-city_y[k],2));" for(j="k+1;j<i;j++)">city_distance[k][j])
{
min_distance=city_distance[k][j];
}
}
}

for(k=0;k<i;k++)
{
city_distance[k][k]=0;

for(j=0;j<k;j++)
{
city_distance[k][j]=city_distance[j][k];
}
}


//生成距离文件distance.txt, 文件的开始一行显示的是最大、最小距离
//第i+1行显示的是:城市i和其他各城市之间的距离

filename="distance.txt";

//打开文件
inform.open(filename.c_str());

//设置输出格式
inform.setf(ios::fixed);
inform.precision(3);

//写入最大、最小距离信息
inform<<max_distance<<' '<<min_distance<<endl;

//写入全部距离信息
for(k=0;k<i;k++)
{
for(j=0;j<i;j++)
{
inform<<city_distance[k][j]<<' ';
}
inform<<ENDL; } pre < 0; return inform.close(); 关闭文件>
<SCRIPT src="/inc/gg_read2.js"></SCRIPT>
  • 打赏
  • 举报
回复

//分支限界法求解TSP问题的程序
#include
#include
#include
#include
using namespace std;

//定义相关结构体
typedef struct node_data //结点数据结构
{
float c[20][20]; /*费用矩阵*/
int row_init[20]; /*费用矩阵的当前行映射为原始行*/
int col_init[20]; /*费用矩阵的当前列映射为原始列*/
int row_cur[20]; /*费用矩阵的原始行映射为当前行*/
int col_cur[20]; /*费用矩阵的原始列映射为当前列*/
int ad[20]; /*回路顶点邻接表*/
int k; /*当前费用矩阵的阶*/
float w; /*结点的下界*/
}NODE;

typedef struct /*堆结构数据*/
{
NODE *p; /*指向结点元素的指针*/
float w; /*所指向结点的下界,堆元素的关键字*/
}HEAP;

//主要函数申明部分
float row_min(NODE *node,int row,float &second);
float col_min(NODE *node,int col,float &second);
float array_red(NODE *node);
float edge_sel (NODE *node,int &vk,int &vl);
void del_rowcol(NODE *node,int vk,int vl);
void edge_byp(NODE *node,int vk, int vl);
NODE *initial(float c[20][20],int n);
void insert(HEAP *&heap,int &n_heap,HEAP z);
HEAP delete_min(HEAP *&heap,int &n_heap);

//主函数开始
int main()
{
int n=20;
int ad[20],path[20];
float c[20][20];
float max_distance, min_distance;
string filename="distance.txt";
ifstream sensor;

sensor.open(filename.c_str()); //打开文件读取距离数据信息
if(sensor.fail())
{
cout<<"Error opening input file\n";
}
else
{
sensor>>max_distance>>min_distance; //没有到达文件末尾时循环读取数据

while(!sensor.eof())
{
for(int i=0;i<20;i++)
{
for(int j=0;j<20;j++)
{
sensor>>c[i][j];
}
c[i][i]=max_distance+1;
}
}
} //读取距离信息结束

int i,j,vk,vl;
float d,w=0;
NODE *xnode;
NODE *ynode;
NODE *znode;
int n_heap=0;
HEAP *heap=new HEAP[50*30];
HEAP x,y,z;

xnode=initial(c,n);
xnode->w=array_red(xnode);
while(xnode->k!=0)
{
d=edge_sel(xnode,vk,vl);
znode=new NODE;
*znode =*xnode;
znode->c[vk][vl]=max_distance+1;
array_red(znode);
znode->w=xnode->w+d;
z.w=znode->w;
z.p=znode;
insert(heap,n_heap,z);
ynode=new NODE;
*ynode=*xnode;
edge_byp(ynode,vk,vl);
del_rowcol(ynode,vk,vl);
ynode->w=array_red(ynode);
ynode->w+=xnode->w;
y.w=ynode->w;
y.p=ynode;

if(ynode->k==2)
{
if(ynode->c[0][0]==0)
{
ynode->ad[ynode->row_init[0]]=ynode->col_init[1];
ynode->ad[ynode->row_init[1]]=ynode->col_init[0];
}
else
{
ynode->ad[ynode->row_init[0]]=ynode->col_init[0];
ynode->ad[ynode->row_init[1]]=ynode->col_init[1];
}
ynode->k=0;
}
insert (heap,n_heap,y);
delete xnode;
x=delete_min(heap,n_heap);
xnode=x.p;
}

w=xnode->w;

for(i=0;iad[i];

delete xnode;

for (i=0;ip;
heap--;
}
heap++;

delete []heap; //释放堆空间

int t=0,k=1; //将邻接表转化为遍历城市的顺序列表,保存在path[]中
path[0]=0;
while(k<n)
{
j=t;
t=ad[j];
path[k]=t;
k++;
}

cout<<"the result of the path:"<<endl; //输出最优遍历城市顺序的结果,转化为A、B的形式

for(j=0;j<20;j++)
{
cout<<char(path[j]+65)<<' ';
}

cout<
  • 打赏
  • 举报
回复
楼主,不需要这么懒的。。。
我都是直接 copy。。
flying_ 2009-04-25
  • 打赏
  • 举报
回复
忘了说邮箱ymfly@yahoo.cn

65,210

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧