席位分配问题——惯例Q值法和d'hondt法的MATLAB程序
2017-07-26 09:21
387 查看
本篇博文为追忆以前写过的算法系列第四篇
温故知新
本篇于2009年发表于百度博客,当时还没接触CSDN。所以是文学和技术博客混淆,只是这个程序博文訪问量突破2000,有不少网友评论互动。应该对非常多人有一定的帮助。
程序介绍了数学建模中经典问题的两种解法,即席位分配问题!
原博文地址:http://hi.baidu.com/gujinjin2008/item/659fdb8a33c37354e73d1931
本篇博文为追忆以前写过的算法系列第四篇
温故知新
本篇于2009年发表于百度博客,当时还没接触CSDN。所以是文学和技术博客混淆,只是这个程序博文訪问量突破2000,有不少网友评论互动。应该对非常多人有一定的帮助。
程序介绍了数学建模中经典问题的两种解法,即席位分配问题!
%适用于全部情况 BY Gu clear all clc %惯例Q值法分配席位,wy为席位数。ps为人数总和,R为分配方案 wy=19; P=[103 63 34] %菜单选项 MENUN=menu('选择方法','惯例Q值法','dhondt法','都用'); %惯例Q值法 if (MENUN==1||MENUN==3)==1 n=size(P,2); ps=sum(P); RS=0; for i=1:n R(i)=fix(P(i)/ps*wy); RS=RS+R(i); end wy1=wy-RS; for i=1:wy1 for j=1:n Q(j,i)=P(j).^2/(R(j)*(R(j)+1)); end t=Q(1,i); a=1; for m=2:n if Q(m,i)>t t=Q(m,i); a=m; end end R(a)=R(a)+1; end disp('惯例Q值法席位分配为:') R end %d'hondt法………………………………………………………………………………$$ if (MENUN==2||MENUN==3)==1 zs=P; n=size(zs,2); for i=1:n for j=1:wy r(i,j)=zs(i)/j; end end t=r(:)'; T=sort(t,'descend'); min=T(wy); R1=zeros(1,n); for i=1:n for j=1:wy if r(i,j)>min R1(i)=R1(i)+1; end end end rest=wy-sum(R1);%剩余席位 %对剩余席位的分配处理 k=0; for i=1:n if k>=rest%席位分配完成,结束循环 break; end for j=1:wy if r(i,j)==min R1(i)=R1(i)+1; k=k+1;%对剩余席位分配计数 break; end end end disp ('dhondt法席位分配:') R1 end
原博文地址:http://hi.baidu.com/gujinjin2008/item/659fdb8a33c37354e73d1931
相关文章推荐
- 席位分配问题——惯例Q值法和d'hondt法的MATLAB程序
- Matlab精度,sprintf('%.40g',7/10)的问题
- C#开发的GDAL程序部署遇到的问题 (无法加载 DLL“gdal_wrap” Unable to load DLL 'gdal_wrap')
- 关于MATLAB函数不可用问题。??? Undefined function or method 'minfo' for input arguments of type 'double'.
- Android 程序无法运行ADB server didn't ACK问题
- UNIX环境高级编程中的11章程序11-2编译问题---undefined reference to `pthread_create'
- 解决unix网络编程(第三版)第一个程序connect dennied.问题&Open 'daytiime' service
- Android 程序无法运行ADB server didn't ACK问题
- 关于导入Android程序提示:Unable to resolve target 'android-10'的问题
- MATLAB: xcb_xlib.c:50: xcb_xlib_unlock: Assertion `c->xlib.lock' failed问题
- 如何解决 X-code5.0中的iOS7.0SDK运行程序时,出现的以下问题:“Could not find a storyboard named 'Main' in bundle NSBundle”
- ubuntu下 GCC编译程序出现 undefined reference to `std::ios_base::Init::Init()'问题
- 解决:Labview 中程序框图中选取仪器I/O助手时出现提示'I/O助手未安装问题'
- 程序bug调试以及java.sql.SQLException:Value '0000-00-00' can not be represented as java.sql.Date问题
- 无法启动程序'...debug/abc.exe',系统找不到指定文件"的问题
- 在程序中写了一段代码向数据库中插入数据,出现了data too long for column 'name' at row 1的问题。
- Visual C++ 程序设计(王明福、高教版)4.2章节___开发MyCalculator程序中的error C2065: 'UpdateDisplay' : undeclared identifier问题
- ubuntu下 GCC编译程序出现 undefined reference to `std::ios_base::Init::Init()'问题
- vs 错误1------"无法启动程序'...debug/abc.exe',系统找不到指定文件"的问题!
- eclipse运行android程序提示“Please ensure ..... /sdk/platform-tools/adb' and can be executed”问题的解决