摘  要

学校超市选址问题,一般需要考虑各个单位到它的综合距离最近,并结合不同单位的人员前往超市的频度也不同。其实质是找一个综合权数最小的地点,但是手工求解会造成很大的麻烦。

随着计算机科学的不断进步,为我们找到了计算的途径,大大地节约劳动资源。其中计算机图形学地发展,为我们提供了很多科学有效地算法,使得计算快速、准确、方便。

关键词:超市选址  链表  图形学  权值  邻接矩阵

章  绪  论

  1. 问题的提出

1.1.1 问题分析

对于某一学校超市,其他各单位到其的距离不同,同时各单位人员去超市的频度也不同。请为超市选址,要求实现总体代价最优。

说到求解一个地点,实现总体最优。就需要找到一个度量优、劣的标准。我们将各个单位到选址地的距离与该单位人员去超市频度的乘积作为单位的权数,再把各单位总权数相加所得的和作为该选址的一个优、劣度量标准。于是,权数和最小的为最优选址。

1.1.2 设计要求

(1)设计该问题的核心算法;

(2)设计程序能有效指出学校超市可设立的地点和各单位的位置以及它们之间的有效路径;

(3)程序能自动计算出最优设立点,并显示出最优设立点。

  1. 国内外研究的现状

不仅超市选址,其他诸多重要的设施在建立前都需要对其地点作出最优的抉择。该问题归根到底,就是要我们运用图的原理对其找到一个离各个单位综合最近的地点。随着数学方法,当今的数学的图的理论,已经较为完善,这位我们运用计算机解决该类问题提供了条件。

第二章  程序的主要功能

2.1 输入功能

输入学校的单位总数;

输入学校各单位的名称;

输入学校各单位人员去超市频度;

输入学校各单位间的距离(用无向图的邻接矩阵表示)

2.2 求权值的功能

求出将超市设在各个单位时,所得总的权值,返回用数组存储。

2.3 求最优功能 

从上述的各个权值中,选出最小值为最优,并将最优值和对应的选址储存在链表中,返回头指针。

2.4 显示功能

显示最优地址的地点、总权数以及各单位到它的距离。

第三章  程序运行平台

Windows 操作系统

Visual C++

第四章  总体设计

第五章  模块分析

5.1 输入功能

1.定义一个整型变量,储存输入的单位数,为矩阵等输入确定阶;

2.定义一个二维的字符指针,用来存储输入的各个单位的名称,其中行数等于单位数。因为一个单位名称不超过20个字符,所以列数取定值20;

3.定义一个一维的浮点型指针,用来储存输入的各单位人员去超市的频度;

4.定义一个二维的浮点型指针,用来储存各单位间的距离,其中到自己的距离规定为0.

注:各个单位的名称、去超市频度以及它们间的距离输入顺序要一致。

5.2 求权值功能

对于每个单位来说,他们被选中时,所得权数就等于各个单位到它的距离乘以各个单位人员去超市频度的积,再分别相加便是总权数。

需要传入的参数是:指向单位间的距离矩阵的指针、指向单位人员去超市的频度的指针、单位数量。

需要返回的是:指向求得的权数的指针值。

5.3 求最优功能

在各个总权值中,最小的就是最优权值,我们将最优权值保留在第一个链表结点。由于输入是按统一的顺序,所以最优权值在数组中的位置对应的单位就是最优选址。我们把与最优值相等的权值在数组中的位置(即下标)保留在后续结点中。

5.4 显示功能

由于上述,最优权值在数组中的位置对应的单位就是最优选址,我们假设它在数组中的位置是i,那么单位名称数组中的第i个字符串就是最优选址的名称。距离矩阵中第i列元素是各个单位到选址超市的距离,距离矩阵中第i列各元素与频度数组中与该元素所在行的下标相同的值相乘就是相应单位到选址超市的权数。掌握这个规律,一一计算后输出便是需要的结果。

程序代码

#include<stdio.h>
#include<stdlib.h>
struct ZY //定义链表结构体,储存最优信息
{
double min;
int n;
ZY *next;
};
double*work_sum(float **A,float *B,int N)//求各单位被选中后的总权值
{
int n=N;
float **a=A;
float *b=B;
int i,j;
double s,*sum;
sum=(double *)malloc(n*sizeof(double));//分配内存空间
for(i=0;i<n;i++)
{
s=0.00;
for(j=0;j<n;j++) //求每个单位被选中后的权值
s=s+a[j][i]*b[j];
sum[i]=s;//储存每个单位被选中后的权值
}
return sum;//返回 sum
}
ZY *work_min(double *Sum,int N)//求最优选址
{
double *sum=Sum;
double min=sum[0];
int i;
int n=N;
ZY *head,*p;
head=(ZY *)malloc(sizeof(struct ZY));//分配内存空间
head->next=NULL;//尾指针置空
for(i=0;i<n;i++)
if(sum[i]<=min)
min=sum[i];
head->min=min;//求最优权值
for(i=0;i<n;i++)
if(sum[i]==min)
{
p=(ZY *)malloc(sizeof(struct ZY));
p->n=i;//记录最优选址点
p->next=head->next;
head->next=p;//尾指针置空
}
return head;
}
void print(ZY *Head,char **Dw,int N,float **A,float *B)//显示数据
{
ZY *head=Head;
ZY *p;
char **DW=Dw;
int i,k,n=N;
float **a=A;
float *b=B;
double min;
p=head->next;
min=head->min;
printf("最优选址如下:(总权重:%f)\n\n",min);
while(p)//显示最优选址信息
{
k=p->n;
printf("超市设立地点:%s\n",DW[k]);
for(i=0;i<n;i++)
printf("%s 到超市的有效路径为:%f 权重为:%f\n\n",DW[i],a[i][k],a[i][k]*b[i]);
p=p->next;
}
}
void input(int &n,float** &a,float* &b,char** &DW)//输入信息
{
int i,j;
printf("请输入单位数量:");
scanf("%d",&n);//输入单位数量
printf("\n");
a=(float **)malloc(n*sizeof(float*));//分配内存空间
for(i=0;i<n;i++)
a[i]=(float *)malloc(n*sizeof(float));//分配内存空间
b=(float *)malloc(n*sizeof(float));//分配内存空间
DW=(char **)malloc(n*sizeof(char *));//分配内存空间
for(i=0;i<n;i++)
DW[i]=(char *)malloc(20*sizeof(char));//分配内存空间
printf("请输入各单位的名称:\n");
for(i=0;i<n;i++)
scanf("%s",DW[i]);//输入各单位名称
printf("请输入各单位人员去超市的频度:\n");
for(i=0;i<n;i++)
scanf("%f",b+i);//输入各单位人员去超市频度
printf("请输入各单位间的距离矩阵:\n");
for(i=0;i<n;i++)//输入各单位间的距离矩阵
for(j=0;j<n;j++)
scanf("%f",a[i]+j);
}
int main()
{
float **a;
float *b;
double *sum;
int n;
ZY *head;
char **DW;
input(n,a,b,DW);
sum=work_sum(a,b,n);
head=work_min(sum,n);
print(head,DW,n,a,b);
}

基于数据结构知识解决学校超市选址问题相关推荐

  1. JAVA编写学校超市选址问题_学校超市选址问题课程设计

    内容介绍 学校超市选址问题课程设计 问题描述 对于某一学校超市,其他各单位到其的距离不同,同时各单位人员去超市的频度也不同.请为超市选址,要求实现总体最优. 1.需求分析 核心问题: 求最短路径(选址 ...

  2. JAVA编写学校超市选址问题_中小型超市商品管理系统设计与实现【开题报告+文献综述+毕业论文】.docx...

    本科毕业论文开题报告信息管理与信息系统中 小 型 超 市 商 品 管 理 系 统 设 计 与 实 现一.立论依据 1.研究意义.预期目标随着中国经济的不断发展,计算机的普及率越来越高,超市的管理手段发 ...

  3. c语言超市选址问题实验报告,数据结构课程设计-超市选址问题.doc

    数据结构 课程设计报告 设计题目:学校超市选址问题 专 业 计算机科学与技术 班 级 10计本2班 学 生 朱冬 学 号 联系方式 年 学期 问题描述 对于某一学校超市,其他各单位到其的距离不同,同时 ...

  4. 算法课程设计——超市选址问题

    学校超市选址问题 设计内容 设计要求 设计核心 涉及知识 相关代码 弗洛伊德算法 计算路径总和 运行结果 运行结果 用Graphviz软件画出的图 源代码 main.cpp file file.h f ...

  5. 数据结构超市选址、最短路径查询、地址信息查询

    设计河北师范大学的校园平面图,至少包括15个以上的地点,每两个地点间可以有不同的路,且路长可能不同.以图中顶点表示校内各地点,存放名称.代号.简介等信息:用边表示路径,存放路径长度等相关信息. 2.提 ...

  6. GitHub标星3w+的项目,全面了解算法和数据结构知识

    作者 | 程序员小吴 来源 | 五分钟学算法(ID: CXYxiaowu) 导语:今天分享一个开源项目,里面汇总了程序员技术面试时需要了解的算法和数据结构知识,并且还提供了相应的代码,目前 GitHu ...

  7. 基于SSM框架+MySQL的超市订单管理系统【源码+文档+PPT】

    目录 1.系统需求分析 1.1 系统功能分析 1.2 系统功能需求 1.3 系统性能需求 2.数据库设计 2.1 数据库需求分析 3.数据库物理结构设计 4.各功能模块的设计与实现 4.1 开发框架 ...

  8. 基于微信平台的“快递超市”设计

      毕业设计说明书     基于微信平台的"快递超市"设计               基于微信平台的"快递超市"设计 摘   要 通过对当今快递信息管理的分析 ...

  9. 超市选址如何用大数据软件了解商圈内用户画像,竞品分布等要素

    超市的选址是否正确是超级市场经营成败的一个关键,因为店铺开发最重要的问题是设备投资能否在预定的期限之内顺利回收,而店址选择的好坏直接影响到投资的收益,所以要开办一家超市,放在首位的工作便是挑选一个合适 ...

最新文章

  1. SpringBoot集成Swagger-Bootstrap-UI,页面更清爽!
  2. Analysis Services基础知识——深入SQL Server 2008
  3. python描述图片内容_深度学习实现图像中文描述
  4. 5G时代谁的天下???
  5. 牛客网剑指offer编程实践21-30题
  6. bootstrap 模态框满屏_解决Ueditor在bootstarp 模态框中全屏问题
  7. 2-5:套接字(Socket)编程之从内核角度深入理解套接字
  8. http请求requestUtils
  9. python解析nginx配置文件_Nginx情景分析之配置文件解析
  10. 借助CSS来管理js事件
  11. 51CTO专访:谈谈SOC安全管理平台
  12. 切换IP配置的bat批处理命令
  13. java中map是不是有序_Map中有序存储
  14. k3服务器重装系统,金蝶K3安装教程07:K3 WEB系统配置工具
  15. Unity资源加载简析(一)Resources
  16. 单台电脑jmeter压力测试最大值
  17. css网站样式表是什么,什么是css样式表
  18. 基于ruoyi+vue+elementUI实现列表,新增,附件上传,tab+springBoot+mybatis+oracle序列+批量新增
  19. 密码学数学基础——群、环、域
  20. Excel中自定义选项中没有内容,如何解决?

热门文章

  1. 社区化会成就无线门户下一个高峰吗?
  2. 网站优化长尾关键字词库的挖掘与整理
  3. 【四足机器人】学习笔记 足端轨迹规划和步态规划
  4. arctanx麦克劳林公式推导过程_点到线的距离公式推导过程
  5. C#读写NFC系列Ntag2x芯片源码
  6. Android中使用Volley开源库进行Http网络请求(GET方式)
  7. 长期表现决定了最终结果--leo看赢在中国第三季(8)大结局
  8. allegro差分信号走线_高速PCB设计软件allegro16.6演示差分规则的设置
  9. Makefile 出现./simv up to date.如何解决?
  10. 美团校招php笔试题,【美团点评】2020校招数据分析方向笔试题