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

来源:互联网 发布:兄弟连php网站 编辑:程序博客网 时间:2024/06/07 01:29
题目参考自这个链接
% 问题描述:% 小明和小强都是张老师的学生,张老师的生日是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))));endfigure(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)));endg=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    endendg=g1;figureplot(g)


0 0