数学建模的席位分配问题能给我个matlab程序吗

2025-05-24 10:54:04
推荐回答(1个)
回答1:

席位分配比例加惯例的matlab程序

p=[ 103 63 34] ; % 甲乙丙三系对应的人数存入向量中
Psum=sum(p) ; % 计算总人数
N=21 ; % 总席位
n=zeros(1,3) ; % 拟分配席位作为向量,分别对应甲乙丙
n(1)=fix(p(1)/Psum*N) ; % 甲系席位取整
n(2)=fix(p(2)/Psum*N) ; % 乙系席位取整
n(3)=fix(p(3)/Psum*N) ; % 丙系席位取整
yu=zeros(1,3) ; %分配存储小数部分的空间
yu(1)=p(1)/Psum*N-n(1) ; % 甲系的小数部分
yu(2)=p(2)/Psum*N-n(2) ; % 乙系的小数部分
yu(3)=p(3)/Psum*N-n(3) ; % 丙系的小数部分
if N-sum(n)>0 % 判断如果剩余席位数多余0个
for i=1:(N-sum(n)) % 循环命令
v=find(yu==max(yu)) ;%找出小数部分最大的位置
n(v)=n(v)+1 ; % 将席位分配给它
yu(v)=0 ; % 让它退出分配
end
end
n