学校共1000名学生,235人住在A楼,333人住在B楼,432人住在c楼。学生要组织一个10人委员会,试用最大剩余方法和Q值方法分配各楼的委员数用MATLAB求解的代码是什么
时间: 2023-06-12 13:05:42 浏览: 35
最大剩余方法的MATLAB代码:
```
% 学生数
n = 1000;
% 每个楼的学生数
a = 235;
b = 333;
c = 432;
% 委员会人数
m = 10;
% 最大剩余方法
x = zeros(1, 3);
for i = 1:m
[~, j] = max([n-a, n-b, n-c]);
x(j) = x(j) + 1;
if j == 1
a = a - 1;
elseif j == 2
b = b - 1;
else
c = c - 1;
end
n = n - 1;
end
% 输出结果
disp(['A楼委员数:' num2str(x(1))]);
disp(['B楼委员数:' num2str(x(2))]);
disp(['C楼委员数:' num2str(x(3))]);
```
Q值方法的MATLAB代码:
```
% 学生数
n = 1000;
% 每个楼的学生数
a = 235;
b = 333;
c = 432;
% 委员会人数
m = 10;
% Q值方法
x = zeros(1, 3);
for i = 1:m
q = [a/n, b/n, c/n];
[~, j] = max(q);
x(j) = x(j) + 1;
if j == 1
a = a - 1;
elseif j == 2
b = b - 1;
else
c = c - 1;
end
n = n - 1;
end
% 输出结果
disp(['A楼委员数:' num2str(x(1))]);
disp(['B楼委员数:' num2str(x(2))]);
disp(['C楼委员数:' num2str(x(3))]);
```