中国IT动力,最新最全的IT技术教程
最新100篇 | 推荐100篇 | 专题100篇 | 排行榜 | 搜索 | 在线API文档
首 页 | 程序开发 | 操作系统 | 软件应用 | 图形图象 | 网络应用 | 精文荟萃 | 教育认证 | 硬件维护 | 未整理篇 | 站长教程
ASP JS PHP工程 ASP.NET 网站建设 UML J2EESUN .NET VC VB VFP 网络维护 数据库 DB2 SQL2000 Oracle Mysql
服务器 Win2000 Office C DreamWeaver FireWorks Flash PhotoShop 上网宝典 CorelDraw 协议大全 网络安全 微软认证
硬件维护  CPU  主板  硬盘  内存  显卡  显示器  键盘鼠标  声卡音箱  打印机  机箱电源  BIOS  网卡  C#  Java  Delphi  vs.net2005
  当前位置:> 程序开发 > Web开发 > JavaScripts > 综合文章
公平的席位分配数学模型程序实现
作者:佚名 时间:2005-03-22 11:03 出处:互连网 责编:chinaitpower
              摘要:公平的席位分配数学模型程序实现

//公平的席位分配数学模型 程序实现
//作者:苗杰(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;  //输出结果,各方得到的席位数
}

 

关闭本页
 
首页 | 投资与合作 | 服务条款 | 隐私政策 | 收藏本站 | 设为首页 | 新用户注册 | 免责声明 | 使用帮助
Copyright ©2005-2008 chinaitpower.com All rights reserved. www.chinaitpower.com 版权所有