资源简介
在—个遥远的国家,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个文件信息
- 上一篇:中国地质大学C++课件6
- 下一篇:PTA基础编程答案
评论
共有 条评论