永发信息网

圆桌吃饭问题

答案:1  悬赏:70  手机版
解决时间 2021-07-28 17:51
  • 提问者网友:我们很暧昧
  • 2021-07-28 09:22
有6个人围着一张圆桌吃饭,按要求解决以下问题:

1.编写MATLAB程序,找出所有不同坐法,并把每种坐法作为矩阵大一行:(提示:把6个人视为图G大6个结点,由于每两个人可以相邻,即每两个节点都是相邻的,故图G是6个结点的完全图,每一种坐法是图G大一条哈密尔顿回路。)

2.运行程序,并写出前5种不同的坐法,再用size函数求出共有多少种不同的坐法;

3.若第一个人与第三个人,第二个人与第四个人,第三个人与第六个人不能相邻,编写MATLAB程序,找出所有不同的坐法;(提示:即在图G中去掉边(1,3),(3,1),(2,4),(4,2),(3,6),(6,3),可以只写出主程序,被调用的函数不变。)

4.运行程序,并写出所有不同的坐法。

我在考试,快点,,,,快点,,,快点,,,,
最佳答案
  • 五星知识达人网友:一把行者刀
  • 2021-07-28 10:25

MATLAB程序:


M=['ABCDEF']; %圆桌吃饭问题
M1=perms(M); %所有的坐法的排列组合
Total=size(M1,1); %所有坐法的数目
M2=M1(1:5,:); %前5种坐法
M3=ones(Total,1);
for i=1:1:Total
temp=find(M1(i,:)=='A');
temp2=find(M1(i,:)=='D');
if abs(temp2-temp)==1||abs(temp2-temp)==3
M3(i)=0;
end
temp=find(M1(i,:)=='B');
temp2=find(M1(i,:)=='E');
if abs(temp2-temp)==1||abs(temp2-temp)==3
M3(i)=0;
end
temp=find(M1(i,:)=='C');
temp2=find(M1(i,:)=='F');
if abs(temp2-temp)==1||abs(temp2-temp)==3
M3(i)=0;
end
end
M4=M1(find(M3),:); %符合条件的做法

我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯