P1556 幸福的路

题目描述

每天,John都要为了农场里N(1≤N≤10)头牛的健康和幸福四处奔波。

每头牛的位置可以描述为一个二维坐标,John从坐标原点(0,0)出发。为了使路径更有趣,John决定只沿着平行于坐标轴的方向行走,这样只能沿着东西南北方向运动。而且只有到达某头牛的坐标后John才会改变行走的方向(当然,如果有必要,John也会穿过某头牛的坐标而不改变行走的方向。)

如果John改变行走的方向,他会原地转90°或者180°。John的路径必须保证检查完所有牛后返回原点。

John可以穿过某头牛的坐标而不改变方向任意次,请计算出有多少条路径满足John能检查完N头牛,在每头牛的坐标处恰好改变一次方向。同一条路径从不同方向经过要计算两次。

输入输出格式

输入格式:

第一行,整数N。

第2行到第N+1行,第i+1行是两个用空格隔开的整数x和y,表示第i头牛的坐标(-1000 ≤x, y ≤1000)

输出格式:

一行个整数,表示路径的量如果没有满足要求则输出 0。

输入输出样例

输入样例#1:

4
0 1
2 1
2 0
2 -5
输出样例#1:

2
/*
没什么难点,就几个细节需要注意一下
一个是dfs时需要记录下上一次改变的方向
第二个是千万不要忘了最后要返回(0,0)
*/
#include<iostream>
#include<cstdio>
#define maxn 11
using namespace std;
int n,ans;
bool vis[maxn];
struct node{
int x,y;
}a[maxn];
void dfs(int x,int y,int cnt,int pre){//pre:1上,2下,3左,4右
if(cnt==n){
if(x==&&y>&&pre!=){ans++;return;}
if(x==&&y<&&pre!=){ans++;return;}
if(y==&&x>&&pre!=){ans++;return;}
if(y==&&x<&&pre!=){ans++;return;}
}
for(int i=;i<=n;i++){
if(vis[i])continue;
if(a[i].x>x&&a[i].y==y&&pre!=){//正右方
vis[i]=;
dfs(a[i].x,a[i].y,cnt+,);
vis[i]=;
}
if(a[i].x<x&&a[i].y==y&&pre!=){//正左方
vis[i]=;
dfs(a[i].x,a[i].y,cnt+,);
vis[i]=;
}
if(a[i].x==x&&a[i].y<y&&pre!=){//正下方
vis[i]=;
dfs(a[i].x,a[i].y,cnt+,);
vis[i]=;
}
if(a[i].x==x&&a[i].y>y&&pre!=){//正上方
vis[i]=;
dfs(a[i].x,a[i].y,cnt+,);
vis[i]=;
}
}
}
int main(){
//freopen("Cola.txt","r",stdin);
scanf("%d",&n);
for(int i=;i<=n;i++)
scanf("%d%d",&a[i].x,&a[i].y);
dfs(,,,);
cout<<ans;
}

洛谷P1556 幸福的路的更多相关文章

  1. 洛谷 P1556 幸福的路

    P1556 幸福的路 题目描述 每天,John都要为了农场里N(1≤N≤10)头牛的健康和幸福四处奔波. 每头牛的位置可以描述为一个二维坐标,John从坐标原点(0,0)出发.为了使路径更有趣,Joh ...

  2. 洛谷 P3819 松江1843路

    题目描述 涞坊路是一条长L米的道路,道路上的坐标范围从0到L,路上有N座房子,第i座房子建在坐标为x[i]的地方,其中住了r[i]人. 松江1843路公交车要在这条路上建一个公交站,市政府希望让最多的 ...

  3. 洛谷P3819 松江1843路

    P3819 松江1843路 题目描述 涞坊路是一条长L米的道路,道路上的坐标范围从0到L,路上有N座房子,第i座房子建在坐标为x[i]的地方,其中住了r[i]人. 松江1843路公交车要在这条路上建一 ...

  4. 洛谷P2939 [USACO09FEB]改造路Revamping Trails

    题意翻译 约翰一共有\(N\))个牧场.由\(M\)条布满尘埃的小径连接.小径可 以双向通行.每天早上约翰从牧场\(1\)出发到牧场\(N\)去给奶牛检查身体. 通过每条小径都需要消耗一定的时间.约翰 ...

  5. 洛谷 P1807 最长路_NOI导刊2010提高(07)

    最长路 #include <iostream> #include <cstdio> #include <cstring> #include <queue> ...

  6. 洛谷——P3819 松江1843路

    https://www.luogu.org/problem/show?pid=3819 题目描述 涞坊路是一条长L米的道路,道路上的坐标范围从0到L,路上有N座房子,第i座房子建在坐标为x[i]的地方 ...

  7. 洛谷P1613 跑路

    题目描述 小A的工作不仅繁琐,更有苛刻的规定,要求小A每天早上在6:00之前到达公司,否则这个月工资清零.可是小A偏偏又有赖床的坏毛病.于是为了保住自己的工资,小A买了一个十分牛B的空间跑路器,每秒钟 ...

  8. 洛谷 P1807 最长路_NOI导刊2010提高(07)题解

    相当与一个拓扑排序的模板题吧 蒟蒻的辛酸史 题目大意:给你一个有向无环图,让你求出1到n的最长路,如果没有路径,就输出-1 思路:一开始以为是一个很裸的拓扑排序 就不看题目,直接打了一遍拓扑排序 然后 ...

  9. 洛谷 P2939 [USACO09FEB]改造路Revamping Trails 题解

    P2939 [USACO09FEB]改造路Revamping Trails 题目描述 Farmer John dutifully checks on the cows every day. He tr ...

随机推荐

  1. ZooKeeper原理及使用(转)

    原文地址 ZooKeeper是Hadoop Ecosystem中非常重要的组件,它的主要功能是为分布式系统提供一致性协调(Coordination)服务,与之对应的Google的类似服务叫Chubby ...

  2. 【python】使用python写windows服务

    背景 运维windows服务器的同学都知道,windows服务器进行批量管理的时候非常麻烦,没有比较顺手的工具,虽然saltstack和ansible都能够支持windows操作,但是使用起来总感觉不 ...

  3. jQuery:[2]百度地图开发平台实战

    jQuery:[2]百度地图开发平台实战 原文链接:   http://blog.csdn.net/moniteryao/article/details/51078779 快速开始 开发平台地址 ht ...

  4. map select reduce

    map: 针对每个element进行变换并返回整个修改后的map a.map do |item| a.upcase end a.map(&:upcase) 一样的效果, &:代表了it ...

  5. HDU - 1213 How Many Tables 【并查集】

    题目链接 http://acm.hdu.edu.cn/showproblem.php?pid=1213 题意 给出N个人 M对关系 找出共有几对连通块 思路 并查集 AC代码 #include < ...

  6. Linux Shell Script目录

    目录 Linux Shell基础 开始Shell编程 代码 示例代码查看:https://github.com/Furzoom/demo-C/tree/master/src/shell

  7. [BZOJ 1095] [ZJOI 2007]Hide 捉迷藏

    在BZ上连续MLE n次后,终于A了. 自己YY的动态点分写法,思路还是很清楚的,但是比较卡内存. 用到了MAP导致复杂度比其他的代码多了一个log,看来需要去借鉴一下别人怎么写的. updata i ...

  8. java--List判断是否为空

    list.isEmpty()和list.size()==0 没有区别 isEmpty()判断有没有元素,size()返回元素个数 如果判断一个集合有无元素,用isEmpty()方法. 这就相当与,你要 ...

  9. 鸟哥的linux私房菜 - 第三章 主机规划与磁盘分区

    各硬件装置在linux中的文件名 在linux系统中,每个装置都被当成一个档案来对待. 常见的装置与其在linux中的档名: 磁盘分区 磁盘链接的方式与装置文件名的关系 个人计算机常见的磁盘接口有两种 ...

  10. scala初步

    1 安装 http://scala-ide.org/ http://scala-lang.org/