用图语言描述一个智力题的求解过程

题目参考自 这个链接
% 问题描述:
% 小明和小强都是张老师的学生,张老师的生日是M月N日,2人都知道张老师的生日是下列10组中的一天,
% 3月4日 3月5日 3月8日
% 6月4日 6月7日% 9月1日 9月5日
% 12月1日 12月2日 12月8日
% 张老师把M值告诉了小明,把N值告诉了小强,张老师问他们知道他的生日是那一天吗?
% 小明说:如果我不知道的话,小强肯定也不知道。
% 小强说:本来我也不知道,但是现在我知道了。
% 小明说:哦,那我也知道了。
% 请根据以上对话推断出张老师的生日是哪一天?
%% 构建图
g=graph;
g=g.addnode({'3月','6月','9月','12月','1日','2日','4日','5日','7日','8日'});
g=g.addedge([1 1 1 2 2 3 3 4 4 4],[7 8 10 7 9 5 8 5 6 10]);
figure(1),plot(g)
%% 小明说:如果我不知道的话,小强肯定也不知道。
a=find(g.degree==1);
for i=1:length(a)
    g=g.rmedge(g.neighbors(a(i)),g.neighbors(g.neighbors(a(i))));
end
figure(2)
plot(g)
%% 小强说:本来我也不知道,但是现在我知道了。
g1=graph();
g1=g1.addnode(g.Nodes);
a=find(g.degree==1);
for i=1:length(a)
    g1=g1.addedge(a(i),g.neighbors(a(i)));
end
g=g1;
plot(g)
%% 小明说:哦,那我也知道了。
g1=graph();
g1=g1.addnode(g.Nodes);
a=find(g.degree==1);
c=false(size(a));
for i=1:length(c)
    if ~c(i)
        [isina,loc]=ismember(g.neighbors(a(i)),a);
        if isina
            c(loc)=true;
            g1=g1.addedge(a(i),a(loc));
        end
    end
end
g=g1;
figure
plot(g)


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值