工作流:小明和小强都是张老师的学生......

article/2025/9/22 15:36:44

好久没上网了发贴了,看到有人发这道题,就用工作流的解决方式作一下吧

小明和小强都是张老师的学生,张老师的生日是M月N日,
2人都知道张老师的生日是 下列10组中的一天,张老师把M值告诉了小明,
把N值告诉了小强,张老师问他们知道 他的生日是哪一天

3月4日 3月5日 3月8日
6月4日 6月7日
9月1日 9月5日
12月1日 12月2日 12月8日

小明说:如果我不知道的话,小强肯定也不知道
小强说:本来我也不知道,但是现在我知道了
小明说:哦,那我也知道了
==========================分析===================================

1.小明说:如果我不知道的话,小强肯定也不知道
小明能肯定小强不知道,那就说明小强拿到的肯定不是7和2(因为7和2直接可以确定是6月7日和12月2日);
小明能肯定小强拿到的不是7和2,那么他自己拿到的肯定不是6和12

(以上推算我假设小强有与我一样的智商,将所有的6月与12月排除)

3月4日 3月5日 3月8日
9月1日 9月5日

2.小强说:本来我也不知道,但是现在我知道了
当小强知道了小明拿到的是3或者9,他马上就知道了准确日期,所以小强拿到的不可能是5,只能是1,4,8中的一个

(以上推算我假设小明有与我一样的智商,范围变为)
3月4日  3月8日
9月1日 

3.小明说:哦,那我也知道了

小明知道了,我的代码也算出来了
(如果有维一的月份,则小明能确定)
维一的月份是9

None.gif
None.gif    
class  begin
ExpandedBlockStart.gifContractedBlock.gif    
dot.gif {
InBlock.gif    
InBlock.gif        
static void Main()
ExpandedSubBlockStart.gifContractedSubBlock.gif        
dot.gif{
InBlock.gif            
//初始化生日集合
InBlock.gif
          
InBlock.gif            生日集合 srjh
=new 生日集合();
InBlock.gif
InBlock.gif            srjh.Add(
new 生日类(3,4));
InBlock.gif            srjh.Add(
new 生日类(3,5));
InBlock.gif            srjh.Add(
new 生日类(3,8));
InBlock.gif            srjh.Add(
new 生日类(6,4));
InBlock.gif            srjh.Add(
new 生日类(6,7));
InBlock.gif            srjh.Add(
new 生日类(9,1));
InBlock.gif            srjh.Add(
new 生日类(9,5));
InBlock.gif            srjh.Add(
new 生日类(12,1));
InBlock.gif            srjh.Add(
new 生日类(12,2));
InBlock.gif            srjh.Add(
new 生日类(12,8));
InBlock.gif           
InBlock.gif            
//开始工作流
InBlock.gif

InBlock.gif            工作流.BEG(srjh);
InBlock.gif            
InBlock.gif            System.Console.Read();
ExpandedSubBlockEnd.gif        }

InBlock.gif
InBlock.gif    
ExpandedBlockEnd.gif    }

None.gif
None.gif
// 工作流
None.gif
     class  工作流
ExpandedBlockStart.gifContractedBlock.gif    
dot.gif {
ExpandedSubBlockStart.gifContractedSubBlock.gif        
/**//*    开始结点
InBlock.gif         *     ↓
InBlock.gif         *    结点A:如果我不知道的话 →结点X:小明知道(该节点分支略)
InBlock.gif         *     ↓
InBlock.gif         *    结点B:小强肯定也不知道
InBlock.gif         *     ↓
InBlock.gif         *    结点C: 小强说:现在我知道了
InBlock.gif         *     ↓
InBlock.gif         *    结点D:小明说:哦,那我也知道了
InBlock.gif         *     ↓
InBlock.gif         *    结束结点
InBlock.gif         * 
ExpandedSubBlockEnd.gif         
*/

InBlock.gif      
InBlock.gif
InBlock.gif        
public static void BEG(生日集合 obj)
ExpandedSubBlockStart.gifContractedSubBlock.gif        
dot.gif{
InBlock.gif            
if(obj !=null)
ExpandedSubBlockStart.gifContractedSubBlock.gif            
dot.gif{   
InBlock.gif                A(obj);
//下一结点
ExpandedSubBlockEnd.gif
            }

ExpandedSubBlockEnd.gif        }

InBlock.gif
InBlock.gif        
//结点A:如果我不知道的话
InBlock.gif
        private static void A(生日集合 obj)
ExpandedSubBlockStart.gifContractedSubBlock.gif        
dot.gif{
InBlock.gif            生日集合 jh
=AI.小明分析(obj);
InBlock.gif
InBlock.gif            
if(jh.Count==0)
ExpandedSubBlockStart.gifContractedSubBlock.gif            
dot.gif{
InBlock.gif                B(obj); 
//下一结点
ExpandedSubBlockEnd.gif
            }

InBlock.gif            
else
ExpandedSubBlockStart.gifContractedSubBlock.gif            
dot.gif{
InBlock.gif                
//小明可以光凭月知道的集合
InBlock.gif                
//该节点分支略
ExpandedSubBlockEnd.gif
            }

ExpandedSubBlockEnd.gif        }

InBlock.gif
InBlock.gif        
//结点B:小强肯定也不知道
InBlock.gif
        private static void B(生日集合 obj)
ExpandedSubBlockStart.gifContractedSubBlock.gif        
dot.gif{
InBlock.gif            
//得到小强光凭日期就能知道的集合
InBlock.gif
            生日集合 小强知道的集合=AI.小强分析(obj);
InBlock.gif
InBlock.gif            
//小明之所以知道小强肯定不知道,
InBlock.gif            
//是因为小明知道的月份不是小强光凭日期就能知道的
InBlock.gif
                     
InBlock.gif            生日集合 排除的集合
=new 生日集合();
InBlock.gif            
foreach(生日类 temp in 小强知道的集合)
ExpandedSubBlockStart.gifContractedSubBlock.gif            
dot.gif{
InBlock.gif                
foreach(生日类 tp in obj)
ExpandedSubBlockStart.gifContractedSubBlock.gif                
dot.gif{
InBlock.gif                    
if(temp.月==tp.月)
ExpandedSubBlockStart.gifContractedSubBlock.gif                    
dot.gif{
InBlock.gif                        排除的集合.Add(tp);
ExpandedSubBlockEnd.gif                    }

ExpandedSubBlockEnd.gif                }

ExpandedSubBlockEnd.gif            }

InBlock.gif
InBlock.gif            集合操作.排除(obj,排除的集合);
InBlock.gif
InBlock.gif            C(obj);
//下一结点
ExpandedSubBlockEnd.gif
        }

InBlock.gif    
InBlock.gif        
//结点C: 小强说:现在我知道了
InBlock.gif
        private static void C(生日集合 obj)
ExpandedSubBlockStart.gifContractedSubBlock.gif        
dot.gif{
InBlock.gif            生日集合 小强知道的集合
=AI.小强分析(obj);
InBlock.gif            D(小强知道的集合); 
//下一结点
ExpandedSubBlockEnd.gif
        }

InBlock.gif
InBlock.gif        
//结点D:小明说:哦,那我也知道了
InBlock.gif
        private static void D(生日集合 obj)
ExpandedSubBlockStart.gifContractedSubBlock.gif        
dot.gif{
InBlock.gif            生日集合 小明知道的集合
=AI.小明分析(obj);
InBlock.gif            END(小明知道的集合);
//下一结点
ExpandedSubBlockEnd.gif
        }

InBlock.gif
InBlock.gif        
//完成结点:
InBlock.gif
        private static void END(生日集合 obj)
ExpandedSubBlockStart.gifContractedSubBlock.gif        
dot.gif{
InBlock.gif            
//完成,输出到屏幕
InBlock.gif
            foreach(生日类 temp in obj)
ExpandedSubBlockStart.gifContractedSubBlock.gif            
dot.gif{
InBlock.gif                System.Console.WriteLine(temp.月.ToString() 
+"-" +temp.日.ToString());
ExpandedSubBlockEnd.gif            }

ExpandedSubBlockEnd.gif        }

InBlock.gif
ExpandedBlockEnd.gif    }

None.gif
None.gif
None.gif    
// 功能扶助类
None.gif

None.gif    
class  集合操作
ExpandedBlockStart.gifContractedBlock.gif    
dot.gif {
InBlock.gif        
public static void 排除(生日集合 s,生日集合 v)
ExpandedSubBlockStart.gifContractedSubBlock.gif        
dot.gif{
InBlock.gif            
foreach(生日类 temp in v)
ExpandedSubBlockStart.gifContractedSubBlock.gif            
dot.gif{
InBlock.gif                s.Remove(temp);
InBlock.gif
ExpandedSubBlockEnd.gif            }

InBlock.gif
ExpandedSubBlockEnd.gif        }

ExpandedBlockEnd.gif    }

None.gif
None.gif    
None.gif    
class  生日类
ExpandedBlockStart.gifContractedBlock.gif    
dot.gif {
InBlock.gif        
public int 日=0;
InBlock.gif        
public int 月=0;
InBlock.gif        
public 生日类(int y,int r)
ExpandedSubBlockStart.gifContractedSubBlock.gif        
dot.gif{
InBlock.gif            日
=r;
InBlock.gif            月
=y;
ExpandedSubBlockEnd.gif        }

InBlock.gif
ExpandedBlockEnd.gif    }

None.gif
None.gif    
None.gif    
class  生日集合:System.Collections.ArrayList
ExpandedBlockStart.gifContractedBlock.gif    
dot.gif {
InBlock.gif        
public void 添加(生日类 v)
ExpandedSubBlockStart.gifContractedSubBlock.gif        
dot.gif{
InBlock.gif            
this.Add(v);
ExpandedSubBlockEnd.gif        }

InBlock.gif
InBlock.gif        
public void 移除(生日类 v)
ExpandedSubBlockStart.gifContractedSubBlock.gif        
dot.gif{
InBlock.gif            
this.Remove(v);
ExpandedSubBlockEnd.gif        }

InBlock.gif
ExpandedBlockEnd.gif    }

None.gif
None.gif
None.gif    
class  AI
ExpandedBlockStart.gifContractedBlock.gif    
dot.gif {
InBlock.gif        
public static 生日集合 小明分析(生日集合 v)
ExpandedSubBlockStart.gifContractedSubBlock.gif        
dot.gif{
InBlock.gif            
//AI,如果有维一的月份,则小明能确定
InBlock.gif            
//月份为1到12
InBlock.gif

InBlock.gif            生日集合 jh
=new 生日集合();
InBlock.gif
InBlock.gif            
int n=0;//记数器,如果n=1表示有
InBlock.gif

InBlock.gif            
for(int i=1;i<=12;i++)
ExpandedSubBlockStart.gifContractedSubBlock.gif            
dot.gif{
InBlock.gif                生日类 x
=null;
InBlock.gif                
foreach(生日类 temp in v)
ExpandedSubBlockStart.gifContractedSubBlock.gif                
dot.gif{
InBlock.gif                    
if(temp.月==i)
ExpandedSubBlockStart.gifContractedSubBlock.gif                    
dot.gif{
InBlock.gif                        n
=n+1;
InBlock.gif                        x
=temp;
ExpandedSubBlockEnd.gif                    }

InBlock.gif                   
ExpandedSubBlockEnd.gif                }

InBlock.gif                    
if(n==1)
ExpandedSubBlockStart.gifContractedSubBlock.gif                    
dot.gif{
InBlock.gif                        jh.Add(x);
ExpandedSubBlockEnd.gif                    }

InBlock.gif
InBlock.gif                n
=0;
InBlock.gif
ExpandedSubBlockEnd.gif            }

InBlock.gif
InBlock.gif            
return jh;
InBlock.gif
InBlock.gif
ExpandedSubBlockEnd.gif        }

InBlock.gif
InBlock.gif
InBlock.gif
InBlock.gif        
public static 生日集合 小强分析(生日集合 v)
ExpandedSubBlockStart.gifContractedSubBlock.gif        
dot.gif{
InBlock.gif            
//AI,如果有维一的日,则小强能确定
InBlock.gif            
//日为1到31
InBlock.gif

InBlock.gif            生日集合 jh
=new 生日集合();
InBlock.gif
InBlock.gif            
int n=0;//记数器,如果n=1表示有
InBlock.gif

InBlock.gif            
for(int i=1;i<=31;i++)
ExpandedSubBlockStart.gifContractedSubBlock.gif            
dot.gif{
InBlock.gif                生日类 x
=null;
InBlock.gif                
foreach(生日类 temp in v)
ExpandedSubBlockStart.gifContractedSubBlock.gif                
dot.gif{
InBlock.gif                    
if(temp.日==i)
ExpandedSubBlockStart.gifContractedSubBlock.gif                    
dot.gif{
InBlock.gif                        n
=n+1;
InBlock.gif                        x
=temp;
ExpandedSubBlockEnd.gif                    }

InBlock.gif    
ExpandedSubBlockEnd.gif                }

InBlock.gif                
if(n==1)
ExpandedSubBlockStart.gifContractedSubBlock.gif                
dot.gif{
InBlock.gif                    jh.Add(x);
ExpandedSubBlockEnd.gif                }

InBlock.gif
InBlock.gif                n
=0;
InBlock.gif
ExpandedSubBlockEnd.gif            }

InBlock.gif
InBlock.gif            
return jh;
ExpandedSubBlockEnd.gif        }

InBlock.gif
ExpandedBlockEnd.gif    }

None.gif
None.gif
None.gif
None.gif

http://chatgpt.dhexx.cn/article/LKpGXGGb.shtml

相关文章

工作流:小明和小强都是张老师的学生

工作流:小明和小强都是张老师的学生 好久没上网了发贴了&#xff0c;看到有人发这道题&#xff0c;就用工作流的解决方式作一下吧 小明和小强都是张老师的学生&#xff0c;张老师的生日是M月N日&#xff0c; 2人都知道张老师的生日是 下列10组中的一天&#xff0c;张老师把M值告…

小强和小明猜生日(20min)

今天碰到一道有点意思的智力题&#xff0c;想通了其实还是很简单的&#xff1a; 小明和小强都是张老师的学生&#xff0c;张老师的生日是M月N日&#xff0c; 2人都知道张老师的生日是下列10组中的一天&#xff0c; 张老师把M值告诉了小明&#xff0c;把N值告诉了小强&#xff…

逻辑推理:张老师的生日

题目描述 小明和小强都是张老师的学生&#xff0c;张老师的生日是M月N日&#xff0c;2人都知道张老师的生日是下列10组中的一天&#xff1a; 3月4日 3月5日 3月8日6月4日 6月7日9月1日 9月5日12月1日 12月2日 12月8日张老师将M值告诉了小明&#xff0c;将N值告诉了小强&#x…

E盘显示无法访问位置不可用的资料找回办法

磁盘打不开位置不可用&#xff0c;是因为这个I盘的文件系统内部结构损坏导致的。要恢复里面的数据就必须要注意&#xff0c;这个盘不能格式化&#xff0c;否则数据会进一步损坏。具体的恢复方法看正文工具/软件&#xff1a;流星数据恢复软件 步骤1&#xff1a;先下载并解压软件…

在加入域时又出现了“不能访问网络位置”的错误 的解决

错误信息&#xff1a; 当您尝试加入域时&#xff0c;出现Network Location Cannot be Reached&#xff08;不能访问网络位置&#xff09;错误信息 症状 当您尝试使用域的完全限定的域名称 (FQDN) 错误原因&#xff1a; TCP/IP NetBIOS Helper Service 服务没有启动 解决办法…

windows自动更新导致:无法访问网络位置*:\Program Files(x86)

windows又一次自动更新了&#xff0c;真的是非常的奇怪&#xff0c;已经将windows update service禁用了&#xff0c;但是仍然阻止不了其更新 结果更新完成后&#xff0c;大量软件报错无权限&#xff0c;大量软件报错&#xff1a;无法访问网络位置*:\Program Files(x86) 解决…

WSL2 网络异常排查 [ping 不通、网络地址异常、缺少默认路由、被宿主机防火墙拦截]

最近在使用的 wsl2 的时候突然发现 wsl2 无法正常联网&#xff0c;即 ping 不通外网以及宿主机的 wsl 网卡。但是将 wsl 版本设置为 1 就可以联网了。 如果你是正常使用的时候&#xff0c;并且自己没有手动修改过 主机 和 WSL2 的网络配置&#xff0c;然后就忽然发现 WSL2 不能…

怎么查找计算机上的网络路径,找不到网络路径怎么办

不到网络路径怎么办?通过\\ip或\\访问任何计算机时都会出现“找不到网络路径”的错误提示,无法正常访问网络资源,但可以访问外部网页。最终的解决方法可以通过重置TCP/IP各组件恢复到初始状态,下面将会具体演示解决找不到网络路径的问题。 1、键盘上按下Win+R快捷键调出【运…

win10如何设置计算机网络访问,win10系统设置允许或拒绝从网络中访问本地电脑的操作方法...

win10系统设置允许或拒绝从网络中访问本地电脑的操作方法? 很多win10用户在使用电脑的时候&#xff0c;会发现win10系统设置允许或拒绝从网络中访问本地电脑的的现象&#xff0c;根据小编的调查并不是所有的朋友都知道win10系统设置允许或拒绝从网络中访问本地电脑的的问题怎么…

添加网络位置(共享目录)

给美术同学和策划同学提供的文档 0X01 添加网络位置 1.双击我的电脑 2.在下面空白处右键&#xff0c;选择添加网络位置 3.弹出添加向导&#xff0c;点击下一步 4.点击选择自定义网络位置&#xff0c;双击 5.地址栏输入网络地址,然后点击下一步 这里输入自己要用的网络位置…

matlab安装出现“无法访问所在网络位置”的正确解决办法

今天安装matlab时出现了如下错误&#xff1a;无法访问您试图使用的功能所在的网络位置&#xff0c;单击“确认”重试或者在下面输入包含“vcredist.msc”的文件夹路径。 &#xff08;由于我修改之前没有截图&#xff0c;这张图是从别人那里下载的&#xff09; 像往常一样&…

网络访问计算机无法访问,电脑已连接网络却无法访问互联网怎么办

电脑已连接网络却无法访问互联网怎么办 电脑明明连接着网络,却无法访问互联网,该怎么办呢?只要进入在IPV4协议中,设置为自动获得ip地址,自动获得DNS服务器地址即可解决。一起来看看吧。 1. 首先打开电脑,进入桌面,点击左下角的开始图标,在打开的菜单中,点击左下方的齿…

访问不了共享文件夹提示“网络错误“的解决方法

创建好的一个共享文件夹后&#xff0c;另一台win10系统共享文件夹无法访问&#xff0c;会出现有些电脑可以访问&#xff0c;有些电脑会出现“网络错误”&#xff0c;提示网络错误&#xff0c;你没有权限访问\\*.*.*.8(IP地址)。请与网络管理员联系请求访问权限。或提示&#xf…

WSL无法访问网络的解决办法

今天在用WSL的时候突然网络抽风&#xff0c;域名解析出了问题&#xff0c;apt update都用不了 网上查了很多方法&#xff0c;什么vEthernet的IP啊&#xff0c;ifconfigip啊&#xff0c;ip route add default啥的&#xff0c;都不管用。最后还是看了一下/etc/resolv.conf的配置…

Windows 7及以上操作系统无法访问网络位置的问题

起因是这样的&#xff0c;程序需要访问网络文件&#xff0c;我就用资源管理器映射了网络驱动器。程序还需要访问数据库等操作&#xff0c;而操作系统是Windows 7&#xff0c;所以以管理员身份运行此程序&#xff0c;否则无法访问数据库。然而&#xff0c;程序竟然报系统找不到指…

错误代码:0x800704cf 不能访问网络位置(win7 连不上smb了)

smb一直用得好好的&#xff0c;加入突然有一天&#xff0c;win7上提示&#xff0c;错误代码&#xff1a;0x800704cf 不能访问网络位置&#xff0c;那多半是下面的原因造成的。 如果您的 win 7 机器某一天突然出现这样的情况&#xff1a;即您的 win7机器可以看到自己的共享文件…

错误代码:0x800704cf 不能访问网络位置

转自&#xff1a;http://blog.zol.com.cn/4114/article_4113322.html 如果您的win 7 机器某一天突然出现这样的情况&#xff1a;即您的win7机器可以看到自己的共享文件夹&#xff0c;但是无法打开&#xff0c;打开时出现“错误代码&#xff1a;0x800704cf 不能访问网络位置”等…

错误代码:0x800704cf 不能访问网络位置(win7 访问不了局域网电脑)

昨天&#xff0c;电脑突然不能访问局域网电脑&#xff0c;弹出对话框如下&#xff1a; 开始以为是网卡的问题&#xff0c;重装网卡驱动&#xff0c;问题依旧&#xff0c;网上告诉最简单的方式是重装电脑&#xff0c;我去&#xff0c;动不动就重装电脑&#xff0c;这不好吧&…

加域“不能访问网络位置”处理

1. 一直提示不能访问网络位置&#xff0c;重启了服务的“”之后也无效&#xff0c;重启电脑等等操作都做了&#xff01;而且把WinSockFix和LSPFix也搬出来了&#xff0c;也没用&#xff01; 2. 后来技术支持人员要求只勾选适配器的这四项&#xff0c;其他几项不能勾选&#xf…

0x800704cf(0x800704cf 不能访问网络位置)

Win10系统提示代码0x800704cf怎么处理&#xff1f; 操作步骤&#xff1a; 1、WinR后输入services.msc&#xff0c;看下列表里有一个叫Microsoft Account sign-in Assistant的服务&#xff0c;重启一下&#xff0c;再看看当前该服务是否处于正常运行的状态。 2、如果你安装了第三…