• 大小: 597KB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2021-06-03
  • 语言: C/C++
  • 标签: 华中  数模  

资源简介

在—个遥远的国家,Sark Mevo 所领导的政党最终击败了Reguel Tekris王子领导的联合党派。Mevo希望巩固他在首都地区的席位。首都由14个街区组成,这些街区将分组为多个选区。下图是首都地区的示意图。在图中用数字1到14对这些街区进行了编号。每个街区中的另外两个数字是预计该街区会投票给Mevo的选民数和该街区的选民总数。所有选民都必须投票,且选举胜出方必须得到绝对多数选票。一个选区可以由多个相邻的街区组成,且选区内总选民数应在30,000到100,000之间。如果两个街区不相邻,例如12和13,则它们不能组成一个选区。如果某个街区选民人数不少于50,000,则允许此街区单独作为一个选区。但是由于Mevo本人就居住在街区10内,因此迫于舆论压力,他不能将这个街区单独作为一个选区。 请设计出一个将首都划分为5个选区的方案,以使Mevo得到的席位数最多。如果这样做有困难,可以尝试划分为6个选区。

资源截图

代码片段和文件信息

#include 
#include 
#include 

#define MaxStackSize 14//最大栈容量

char re_choose[]={“\n选择非法,请输入正确的编号...\n“};

typedef struct Street
{
int SNum;
int Num;
}Street;//定义街区结构体

Street str[MaxStackSize];//定义结构体长度


int l[MaxStackSize][MaxStackSize]={ {01001000000000}
{00101000000000}
{00011000000000}
{00001000010000}
{00000100010000}
{00000011000000}
{00000001100000}
{00000000111000}
{00000000001100}
{00000000001010}
{00000000000110}
{00000000000001}
{00000000000001}
{00000000000000}};//表示相邻街区的矩阵,1表示相邻。0表示不相邻


int b[50][MaxStackSize];//用来存储所有选区,1表示存在,初始全为0


void AddData()//添加街区信息
{

str[0].SNum = 17500;
str[1].SNum = 15000;
str[2].SNum = 14200;
str[3].SNum = 42000;
str[4].SNum = 18000;
str[5].SNum = 9000;
str[6].SNum = 12000;
str[7].SNum = 10000;
str[8].SNum = 26000;
str[9].SNum = 34000;
str[10].SNum = 2500;
str[11].SNum = 27000;
str[12].SNum = 29000;
str[13].SNum = 15000;

str[0].Num = 30000;
str[1].Num = 50000;
str[2].Num = 20000;
str[3].Num = 70000;
str[4].Num = 20000;
str[5].Num = 40000;
str[6].Num = 30000;
str[7].Num = 30000;
str[8].Num = 40000;
str[9].Num = 60000;
str[10].Num = 10000;
str[11].Num = 60000;
str[12].Num = 40000;
str[13].Num = 40000;

}


typedef struct
{
int  *element;  //一维数组
int top; //指向堆栈栈顶元素 
int MaxSize;  //可存储的最多数据元素 
} Stack;

Stack SS1S2;


void CreatStack (Stack &S) // 构造一个最大容量为MaxStackSize 的堆栈S
{
    S.MaxSize = MaxStackSize;
    S.element = new int [S.MaxSize];
   S.top = -1;
}

void CreatStack2 (Stack &S) // 构造一个最大容量为50 的堆栈S
{
    S.MaxSize = 50;
    S.element = new int [S.MaxSize];
   S.top = -1;
}

int JudgeS(int k)//判断街区是否相邻,返回1表示相邻
{
for(int p=S.top;p>-1;p--)
{
if(l[S.element[p]][k])
{
return 1;
}
}
return 0;
}

bool IsEmpty(Stack &S)// 判断堆栈S是否为空
{
if (S.top == -1)   
{
return true;
}

return  false;
}
bool IsFull(Stack &S)// 判断堆栈S是否为满
{
if (S.top >= S.MaxSize-1)  
return true;
return  false;
}


bool Push(Stack &S  int &x)// x进s栈,返回进栈后的状态值
{
if (IsFull(S))
return false;
S.top++;
S.element[S.top] = x;
    return true;
}


bool Pop(Stack &S  int &x)// 将s栈顶的值取至x中,返回出栈后的状态值
{
if (IsEmpty(S))   
return false;
x = S.element[S.top];
S.top--;
   return true;
}


void Devide(int w[] int s[]int T)//分选区
{
int   k = 0;
int   i = 0;
int   t = 0;
int j=S.top;
float f=0;
do                                              //满足总人数不大于100000人则进栈
{                                                                                                   

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

     文件      50176  2011-04-17 18:41  选区划分 last\Debug\vc60.idb

     文件      61440  2011-04-17 18:41  选区划分 last\Debug\vc60.pdb

     文件     254050  2011-04-17 18:41  选区划分 last\Debug\分选区  last.exe

     文件     307644  2011-04-17 18:41  选区划分 last\Debug\分选区  last.ilk

     文件      43907  2011-04-17 18:41  选区划分 last\Debug\分选区  last.obj

     文件     307000  2011-04-17 17:38  选区划分 last\Debug\分选区  last.pch

     文件     615424  2011-04-17 18:41  选区划分 last\Debug\分选区  last.pdb

     文件      41984  2011-04-10 23:29  选区划分 last\分选区\Debug\vc60.idb

     文件      53248  2011-04-10 23:29  选区划分 last\分选区\Debug\vc60.pdb

     文件     180278  2011-04-10 23:15  选区划分 last\分选区\Debug\分选区.exe

     文件     213624  2011-04-10 23:15  选区划分 last\分选区\Debug\分选区.ilk

     文件      13056  2011-04-10 23:29  选区划分 last\分选区\Debug\分选区.obj

     文件     220944  2011-04-10 22:36  选区划分 last\分选区\Debug\分选区.pch

     文件     476160  2011-04-10 23:15  选区划分 last\分选区\Debug\分选区.pdb

     文件       9211  2011-04-11 00:20  选区划分 last\分选区\分选区.cpp

     文件       4286  2011-04-11 00:05  选区划分 last\分选区\分选区.dsp

     文件        537  2011-04-10 22:04  选区划分 last\分选区\分选区.dsw

     文件      41984  2011-04-11 00:21  选区划分 last\分选区\分选区.ncb

     文件      49664  2011-04-11 00:21  选区划分 last\分选区\分选区.opt

     文件        647  2011-04-10 23:29  选区划分 last\分选区\分选区.plg

     文件      18531  2011-05-12 17:37  选区划分 last\分选区  last.cpp

     文件       3475  2011-04-17 17:38  选区划分 last\分选区  last.dsp

     文件        532  2011-04-17 21:23  选区划分 last\分选区  last.dsw

     文件      41984  2011-05-12 17:36  选区划分 last\分选区  last.ncb

     文件      48640  2011-05-12 17:36  选区划分 last\分选区  last.opt

     文件       1208  2011-04-17 18:41  选区划分 last\分选区  last.plg

     文件     384512  2010-11-29 17:04  选区划分 last\选区划分.doc

     目录          0  2011-10-24 10:48  选区划分 last\分选区\Debug

     目录          0  2011-10-24 10:48  选区划分 last\Debug

     目录          0  2011-10-24 10:48  选区划分 last\分选区

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

评论

共有 条评论