资源简介

关于运输问题使用说明 1. 将单位运价表写入“in.txt”中,格式为:(拿书中P102页作业题为例) # 3 4 10 2 20 11 12 7 9 20 2 14 16 18 15 25 5 5 15 15 10 其中, 第一行的‘#’表示一个问题的开始,是必须要的; 第二行中的3 4(中间用空格隔开,后面不能有空格)表示m和n,即单位运价表的行和列; 第三行到第五行 10 2 20 11 12 7 9 20 2 14 16 18 表示单位运价表;(中间用空格或TAB隔开) 第六行 15 25 5 表示三个产地的产量; 第七行 5 15 15 10 表示四个销地的销量; 2. 程序将会把最有运输方案写在“out.txt”中,(该文件将由程序自动产生); 3. 改程序能解决平衡运输问题和平衡分配问题; 下面是书中部分运输问题和分配问题测试用例:(写入in.txt中) # 3 4 10 2 20 11 12 7 9 20 2 14 16 18 15 25 5 5 15 15 10 # 3 4 3 11 3 10 1 9 2 8 7 4 10 5 7 4 9 3 6 5 6 # 3 4 8 4 1 2 6 9 4 7 5 3 4 3 7 25 26 10 10 20 15 # 3 5 8 6 3 7 5 5 100 8 4 7 6 3 9 6 8 20 30 30 25 25 20 10 20 # 4 4 2 10 9 7 15 4 14 8 13 14 16 11 4 15 13 9 1 1 1 1 1 1 1 1

资源截图

代码片段和文件信息

/****************************************************** 
***********本文件里的main()方法是主函数****************
*******************************************************/ 

#include “iostream“
#include “stdio.h“
#define maxsize 10000
#define maxsize_n 100
#define max 1000                                         //实际问题中出现的运费不能超过max,即max为最大运费 
using namespace std;
typedef struct node
{
       int x;
       int y;
       int pre;                                                     //pre表示指向它的前一结点 
       int flag;                                                    //flag表示搜索行(或列)的状态,取值为0、1其中1表示行搜索,0表示列搜索。 
}sqtype;
FILE *fp1*fp2;                                             //宏定义
sqtype sq[maxsize];
int circle[maxsize_n][maxsize_n];   //二维数组存储数据位
int flag[maxsize_n][maxsize_n];     //用于存储判断circle对应位置的状态,0为初始状态,1表示基变量所在位置,2表示在进行最小元素法时被划去。
int frontrear;                     //队列的头指针和为指针。 

int base_array[maxsize_n][maxsize_n];                        //base_array矩阵用于存储物品的调运方案 
        
int mn;
typedef struct node1
{
     int x;                                         //x用于记录最小元素所在位置的行坐标 
     int y;                                         //y用于记录最小元素所在位置的列坐标 
     int min_flag;                                  //min_flag用于记录最小元素所在位置的状态,既将flag数组里的元素赋给min_flag 
}min_num;


/****************************************************** 
*本文件里的min_method()方法是利用最小元素法确定初始基 *
*******************************************************/ 

void min_method(int mint n)
{
     int ijk;
     min_num temp_mintemp_min1;
     for (i=1;i<=m;i++)                              //初始化 
     {
         for (j=1;j<=n;j++)
         {
             base_array[i][j]=0;
             flag[i][j]=0;                          //标记每个位置的元素都没有被处理 
         }
     } 
     for (k=1;k<=m+n-1;k++)                         //最多循环m+n-1次,因为基变量的个数为m+n-1; 
     {
         temp_min.min_flag=max;
         temp_min.x=0;
         temp_min.y=0;
         //下面的两重循环的作用是找到没有处理元素中的最小元素 
         for (i=1;i<=m;i++)
         {
             for (j=1;j<=n;j++)
             {
                 if ( (flag[i][j]==0) && (circle[i][j]                 {
                    temp_min.x=i;
                    temp_min.y=j;
                    temp_min.min_flag=circle[i][j];
                 }
             }
         }
         //下面对前面找到的最小元素所在的行或列进行处理
         if (circle[temp_min.x][n+1]>circle[m+1][temp_min.y])             //该最小元素所在位置的行元素(销量)比行元素(产量)大 
         {
             for (i=1;i<=m;i++)
             {
                 if (flag[i][temp_min.y]==0)                              //表示该位置没有被处理 
                 {
                    flag[i][temp_min.y]=2;                                //标记该列的所有元素划去 
                 }
             }
             flag[temp_min.x][temp_min.y]=1;                              //标记最小元素所在位置为基变量所在位置 
             base_array[temp_min.x][temp_min.y]=circle[m

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件       8896  2011-06-01 20:02  运输问题\function\close_loop.h

     文件       2160  2011-06-01 20:02  运输问题\function\close_method.h

     文件        315  2011-06-03 17:43  运输问题\function\in.txt

     文件       1221  2011-06-01 21:42  运输问题\function\main.cpp

     文件       5354  2011-06-01 20:02  运输问题\function\min_method.h

     文件       1967  2011-06-01 20:04  运输问题\function\myread.h

     文件       1033  2011-06-02 08:47  运输问题\function\my_define.h

     文件        315  2011-06-03 17:43  运输问题\in.txt

     文件        315  2011-06-03 17:43  运输问题\my_method\in.txt

     文件      20915  2011-06-05 21:57  运输问题\my_method\my_transport_problem.cpp

     文件     600036  2011-06-05 21:57  运输问题\my_method\my_transport_problem.exe

     文件        349  2011-06-05 21:57  运输问题\my_method\out.txt

     文件         23  2011-06-05 21:57  运输问题\my_method\temp_close.txt

     文件        349  2011-06-05 21:57  运输问题\out.txt

     文件        315  2011-06-03 17:43  运输问题\rear_one\in.txt

     文件         33  2011-06-03 18:01  运输问题\rear_one\out.txt

     文件         33  2011-06-03 18:01  运输问题\rear_one\temp_close.txt

     文件      19506  2011-06-05 21:51  运输问题\rear_one\transport_problem.cpp

     文件     598864  2011-06-03 18:00  运输问题\rear_one\transport_problem.exe

     文件      24348  2011-06-03 17:59  运输问题\rear_one\wl.cpp

     文件     598874  2011-06-03 17:59  运输问题\rear_one\wl.exe

     文件         23  2011-06-05 21:57  运输问题\temp_close.txt

     文件      20484  2011-06-05 21:57  运输问题\transport_problem1.cpp

     文件     599491  2011-06-05 21:57  运输问题\transport_problem1.exe

     文件      30208  2011-06-04 23:19  运输问题\说明.doc

     目录          0  2011-06-05 21:57  运输问题\function

     目录          0  2011-06-05 21:57  运输问题\my_method

     目录          0  2011-06-05 21:57  运输问题\rear_one

     目录          0  2011-06-05 21:57  运输问题

----------- ---------  ---------- -----  ----

............此处省略2个文件信息

评论

共有 条评论