zoukankan      html  css  js  c++  java
  • 洛谷 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
    思路:搜索,主要是读懂题目吧!
    #include<iostream>
    #include<cstdio>
    #include<cstring>
    #include<algorithm>
    using namespace std;
    int n,ans,x[11],y[11],vis[11];
    void dfs(int px,int py,int num,int pre){
        if(num==n){
            if(px>0&&py==0&&pre!=4){ans++;return ;}
            if(px<0&&py==0&&pre!=3){ans++;return ;}
            if(px==0&&py>0&&pre!=1){ans++;return ;}
            if(px==0&&py<0&&pre!=2){ans++;return ;}
        }
        for(int i=1;i<=n;i++){
            if(x[i]==px&&y[i]<py&&!vis[i]&&pre!=1){
                vis[i]=1;
                dfs(x[i],y[i],num+1,1);
                vis[i]=0;
            }
            if(x[i]==px&&y[i]>py&&!vis[i]&&pre!=2){
                vis[i]=1;
                dfs(x[i],y[i],num+1,2);
                vis[i]=0;
            }
            if(x[i]>px&&y[i]==py&&!vis[i]&&pre!=3){
                vis[i]=1;
                dfs(x[i],y[i],num+1,3);
                vis[i]=0;
            }
            if(x[i]<px&&y[i]==py&&!vis[i]&&pre!=4){
                vis[i]=1;
                dfs(x[i],y[i],num+1,4);
                vis[i]=0;
            }
        }
    }
    int main(){
        scanf("%d",&n);
        for(int i=1;i<=n;i++)
            scanf("%d%d",&x[i],&y[i]);
        dfs(0,0,0,0);
        cout<<ans;
    }
     
    细雨斜风作晓寒。淡烟疏柳媚晴滩。入淮清洛渐漫漫。 雪沫乳花浮午盏,蓼茸蒿笋试春盘。人间有味是清欢。
  • 相关阅读:
    L2 L3 L4
    C 语言assert使用
    VIM 命令收藏
    C++继承实例
    关于 WinScp 的一点使用经验
    Boa服务器移植
    Android 去掉标题全屏显示
    sys下gpio操作
    linux下 XGCOM串口助手的安装
    linux中inittab文件详解
  • 原文地址:https://www.cnblogs.com/cangT-Tlan/p/7551934.html
Copyright © 2011-2022 走看看