公平的席位分配数学模型 程序实现
2004-07-28 13:38
519 查看
//公平的席位分配数学模型 程序实现
//作者:苗杰(nutting,逸天)2004.07.28 qq:12872678 e-mail:nutting@163.com
//摘自:数学模型(第二版) P32 姜启源 编 高等教育出版社 isbn 7-04-004502-2
//vc++5.0下通过,其他编译系统下请适当修改
const int N=3; //会议中共有 N 方
const int M=21; //会议中共有 M 个席位
#include <iostream.h>
void main()
{
float people[N+1]={0,103,63,34}; //各方参加会议的人数,p[0]不用
int seat[N+1]={0,1,1,1}; //各方被分配的席位数,初始1,然后程序自动调整
float q[N+1]; //各方的相对公平值
float q_max(0); //每增加一个席位时,各方相对公平值的最大的值
int i,j; //循环变量
int q_max_pos(0); //具有最大公平值的是第几方
int seat_sum(0); //计算机已完成分配的席位总数
while(seat_sum<M-1) //循环,直到M个席位分配完
{
seat_sum=0; //本次已分配席位总数清0
for(i=1;i<=N;i++)
seat_sum+=seat[i]; //求计算机本次已完成分配的席位总数
for(j=1;j<=N;j++)
q[j]=(people[j]*people[j])/(seat[j]*(seat[j]+1)); //计算各方的相对公平值
for(j=1,q_max=q[1],q_max_pos=1;j<=N;j++)
if (q[j]>q_max)
{
q_max=q[j];
q_max_pos=j;
} //找q[j]中的最大值,即哪方的相对公平值最大
seat[q_max_pos]++; //将这个席位分配给相对公平值最大的那方
}
for(i=1;i<=N;i++)
cout<<i<<" "<<seat[i]<<endl; //输出结果,各方得到的席位数
}
//作者:苗杰(nutting,逸天)2004.07.28 qq:12872678 e-mail:nutting@163.com
//摘自:数学模型(第二版) P32 姜启源 编 高等教育出版社 isbn 7-04-004502-2
//vc++5.0下通过,其他编译系统下请适当修改
const int N=3; //会议中共有 N 方
const int M=21; //会议中共有 M 个席位
#include <iostream.h>
void main()
{
float people[N+1]={0,103,63,34}; //各方参加会议的人数,p[0]不用
int seat[N+1]={0,1,1,1}; //各方被分配的席位数,初始1,然后程序自动调整
float q[N+1]; //各方的相对公平值
float q_max(0); //每增加一个席位时,各方相对公平值的最大的值
int i,j; //循环变量
int q_max_pos(0); //具有最大公平值的是第几方
int seat_sum(0); //计算机已完成分配的席位总数
while(seat_sum<M-1) //循环,直到M个席位分配完
{
seat_sum=0; //本次已分配席位总数清0
for(i=1;i<=N;i++)
seat_sum+=seat[i]; //求计算机本次已完成分配的席位总数
for(j=1;j<=N;j++)
q[j]=(people[j]*people[j])/(seat[j]*(seat[j]+1)); //计算各方的相对公平值
for(j=1,q_max=q[1],q_max_pos=1;j<=N;j++)
if (q[j]>q_max)
{
q_max=q[j];
q_max_pos=j;
} //找q[j]中的最大值,即哪方的相对公平值最大
seat[q_max_pos]++; //将这个席位分配给相对公平值最大的那方
}
for(i=1;i<=N;i++)
cout<<i<<" "<<seat[i]<<endl; //输出结果,各方得到的席位数
}
相关文章推荐
- 【数学建模】公平席位的分配问题
- 数学建模四 公平席位分配的比例+惯例法和Q值法
- C语言实现用程序数据段空间模拟内存的动态分配
- 证券统计套利(三)海龟模型以及程序实现
- GAM(广义相加模型)概要及R程序实现
- 实现server程序,支持多个client同时连接,为每一个client分配一个进程
- 自然语言处理基于java实现(4) 之 基于VSM模型的信息检索程序
- 对于c语言存储分配程序(malloc函数)实现的理解
- 任意两空间直角坐标系的转换的数学模型和算法实现
- 这是一道数学类的问题,对=于这类的问题,当然我们要列出数学公式,用程序实现它可以了
- socket实现C/S模型的通信程序
- 算法问题《Card Game》的数学模型和Java实现
- 对于c语言存储分配程序(malloc函数)实现的理解
- C语言动态分配数组程序实现
- c++实现基于单进程单客户编程模型的echo程序
- 数学模型 机器学习 系统聚类(system clustering) Python实现
- 将一个不含有纹理坐标信息的三维模型通过某种算法实现程序化生成纹理坐标
- 逻辑回归模型介绍和程序实现
- 相同概率的抽奖程序另类实现——使用数据库,无需数学原理
- 输出学生成绩。本题要求编写程序,根据输入学生的成绩,统计并输出学生的平均成绩、最高成绩和最低成绩。建议使用动态内存分配来实现。