%%%席位分配%%%
clear all
clc %惯例Q值法分配席位,wy为席位数,ps为人数总和,R为分配方案
wy=input('请输入席位数:wy=\n');
P=[10363343557612];%各组代表人数;%菜单选项
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
ifQ(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
ifr(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
ifr(i,j)==min
R1(i)=R1(i)+1;
k=k+1;%对剩余席位分配计数
break;
end
end
end
disp ('dhondt法席位分配:')
R1
end