爸爸 妈妈 猎人和狗 有两男孩 两个女孩 。他们要过河,但猎人不在的时候,狗咬任何人,当爸爸不在的时候,妈妈打小男孩,妈妈不在的时候,爸爸打小女孩,他们怎么过去

本文主要是介绍爸爸 妈妈 猎人和狗 有两男孩 两个女孩 。他们要过河,但猎人不在的时候,狗咬任何人,当爸爸不在的时候,妈妈打小男孩,妈妈不在的时候,爸爸打小女孩,他们怎么过去,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

爸爸 妈妈 猎人和狗 有两男孩 两个女孩 。他们要过河,但猎人不在的时候,狗咬任何人,当爸爸不在的时候,妈妈打小男孩,妈妈不在的时候,爸爸打小女孩,他们怎么过去

 

有一天看到的一个网上题目,一时兴起便写了一下,o(^▽^)o

#include<stdio.h>#define N 10// 爸 妈 猎人 狼 两个儿子 两个女儿int dp[2][1<<N];
int path[2][1<<N];
int vis[2][1<<N];int ok(int cur)
{if((cur&(1<<0))&&((cur&(1<<6))||(cur&(1<<7)))&&!(cur&(1<<1))) return 0;if((cur&(1<<1))&&((cur&(1<<4))||(cur&(1<<5)))&&!(cur&(1<<0))) return 0;if((cur&(1<<3))&&!(cur&(1<<2))&&(cur^(1<<3))) return 0;return 1;
}int get_num(int x)
{int ans=0;while(x){ans++;x&=(x-1);}return ans;
}void print(int cur)
{if(cur&(1<<0)) printf("爸爸 ");if(cur&(1<<1)) printf("妈妈 ");if(cur&(1<<2)) printf("猎人 ");if(cur&(1<<3)) printf("狼 ");if(cur&(1<<4)) printf("儿子1 ");if(cur&(1<<5)) printf("儿子2 ");if(cur&(1<<6)) printf("女儿1 ");if(cur&(1<<7)) printf("女儿2 ");printf("\n");}void show(int side,int cur)
{int i,j;if((cur&path[side][cur])==0) return ;int all=(1<<8)-1;show(side^1,path[side][cur]);if(side) printf("去: ");else printf("来: ");print(cur&path[side][cur]);
}int dfs(int side,int cur)
{if(vis[side][cur]) return 0;vis[side][cur]=1;int all=(1<<8)-1;if(side==1&&cur==all) return 1;if(dp[side][cur]!=-1) return dp[side][cur];for(int to=1;to<=all;to++){if((cur&to)!=to) continue;int num=get_num(to);if(num>2) continue;if(!(to&(1<<0))&&!(to&(1<<1))&&!(to&(1<<2))) continue;if(!ok(to)) continue;if(!ok(cur^to)) continue;if(!ok(all^(cur^to))) continue;if(dfs(side^1,all^(cur^to))){path[side^1][all^cur^to]=cur;return dp[side][cur]=1;}}return dp[side][cur]=0;
}int main()
{int i,j;for(i=0;i<(1<<N);i++) dp[0][i]=dp[1][i]=-1;for(i=0;i<(1<<N);i++){vis[0][i]=vis[1][i]=0;path[0][i]=path[1][i]=0;}printf("%d\n",dfs(0,(1<<8)-1));show(1,(1<<8)-1);return 0;
}

这篇关于爸爸 妈妈 猎人和狗 有两男孩 两个女孩 。他们要过河,但猎人不在的时候,狗咬任何人,当爸爸不在的时候,妈妈打小男孩,妈妈不在的时候,爸爸打小女孩,他们怎么过去的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/254004

相关文章

[职场] 护理专业简历怎么写 #经验分享#微信

护理专业简历怎么写   很多想成为一名护理方面的从业者,但是又不知道应该怎么制作一份简历,现在这里分享了一份护理方面的简历模板供大家参考。   蓝山山   年龄:24   号码:12345678910   地址:上海市 邮箱:jianli@jianli.com   教育背景   时间:2011-09到2015-06   学校:蓝山大学   专业:护理学   学历:本科

Java面试八股之怎么通过Java程序判断JVM是32位还是64位

怎么通过Java程序判断JVM是32位还是64位 可以通过Java程序内部检查系统属性来判断当前运行的JVM是32位还是64位。以下是一个简单的方法: public class JvmBitCheck {public static void main(String[] args) {String arch = System.getProperty("os.arch");String dataM

电脑不小心删除的文件怎么恢复?4个必备恢复方法!

“刚刚在对电脑里的某些垃圾文件进行清理时,我一不小心误删了比较重要的数据。这些误删的数据还有机会恢复吗?希望大家帮帮我,非常感谢!” 在这个数字化飞速发展的时代,电脑早已成为我们日常生活和工作中不可或缺的一部分。然而,就像生活中的小插曲一样,有时我们可能会在不经意间犯下一些小错误,比如不小心删除了重要的文件。 当那份文件消失在眼前,仿佛被时间吞噬,我们不禁会心生焦虑。但别担心,就像每个问题

妈妈买鞋和衬衣一共花了356元

学习好就有前途的玩耍 今天的学习好就有前途的玩耍,初一的大摆手,没学问是一生,没学问的不也活过来了吗,可以放心大胆了,这只是一种生活的不同,到处躲藏,在湖北称年饭或团年饭,比妈妈买的合算。 过年怕债主逼债,时间多在正午或天亮前,打折时我再买,意思是,我听后,但妈妈你一开始刚想买双鞋,妈妈坚持说说她买得合算,糊糊涂涂一生,三十的玩耍躲猫儿。 妈妈买鞋和衬衣一共花了356元,小姨少花了18元看

ABAP怎么把传入的参数刷新到内表里面呢?

1.在执行相关的功能操作之前,优先执行这一段代码,把输入的数据更新入内表里面 DATA: lo_guid TYPE REF TO cl_gui_alv_grid.CALL FUNCTION 'GET_GLOBALS_FROM_SLVC_FULLSCR'IMPORTINGe_grid = lo_guid.CALL METHOD lo_guid->check_changed_data.CALL M

电子盖章怎么做_电子盖章软件

使用e-章宝(易友EU3000智能盖章软件)进行电子盖章的步骤如下: 一、准备阶段 软件获取: 访问e-章宝(易友EU3000智能盖章软件)的官方网站或相关渠道,下载并安装软件。账户注册与登录: 首次使用需注册账户,并根据指引完成注册流程。注册完成后,使用用户名和密码登录软件。 二、电子盖章操作 文档导入: 在e-章宝软件中,点击“添加”按钮,导入待盖章的PDF文件。支持批量导入多个文件,

说一说三大运营商的流量类型,看完就知道该怎么选运营商了!

说一说三大运营商的流量类型,看完就知道该怎么选运营商了?目前三大运营商的流量类型大致分为通用流量和定向流量,比如: 中国电信:通用流量+定向流量 电信推出的套餐通常由通用流量+定向流量所组成,通用流量比较多,一般都在100G以上,而且电信套餐长期套餐较多,大多无合约期,自主激活的卡也是最多的,适合没有通话需求的朋友办理。 中国移动:通用流量+定向流量 移动推出的套餐通常由通用流量+定向

剑指offer(C++)--和为S的两个数字

题目 输入一个递增排序的数组和一个数字S,在数组中查找两个数,使得他们的和正好是S,如果有多对数字的和等于S,输出两个数的乘积最小的。 class Solution {public:vector<int> FindNumbersWithSum(vector<int> array,int sum) {vector<int> result;int len = array.size();if(

剑指offer(C++)--两个链表的第一个公共结点

题目 输入两个链表,找出它们的第一个公共结点。 解法一 两个链表一定有交点的话,方法是指向短链表指针先走完,然后指向长链表,指向长链表指针后走完,指向短链表。所以,第二次走过,一定会在交点相遇。 class Solution {public:ListNode* FindFirstCommonNode( ListNode *pHead1, ListNode *pHead2) {ListN

两个基因相关性CPTAC蛋白组数据

目录 蛋白数据下载 ①蛋白数据下载 1,TCGA-选择泛癌数据  2,TCGA-TCPA 3,CPTAC(非TCGA) ②蛋白相关性分析 1,数据整理 2,蛋白相关性分析 PCAS在线分析 蛋白数据下载 CPTAC蛋白组学数据库介绍及数据下载分析 – 王进的个人网站 (jingege.wang) ①蛋白数据下载 可以下载泛癌蛋白数据:UCSC Xena (xena