P1556 幸福的路

  emmm……

  为啥没一次AC呢?

  因为一堆if后面一个else,else对应的只是它上面那一个if。

  ……

  其余的暴力即可…

  还是把代码贴出来:

#include<cstdio>
#include<cstring>
using namespace std;
int n;
struct xy
{
    int x;
    int y;
    int b;
    int dir;
} c[15];
int ans;
bool s;
int last;
int now;
void dfs(int x,int y,int t)
{
    if(t==0)
    {
        if(x==0||y==0)
        {
            if(x<0)
                now=1;
            if(x>0)
                now=3;
            if(y<0)
                now=2;
            if(y>0)
                now=4;
            if(now==last)
                return ;
            ans++;
        }
        return ;
    }
    for(int i=1; i<=n; i++)
    {
        if(c[i].x==x||c[i].y==y)
        {
            if((c[i].x==x&&c[i].y==y)||c[i].b==1)
                continue;
            else
            {
                if(c[i].x>x)
                {
                    c[i].dir=1;
                }
                if(c[i].x<x)
                {
                    c[i].dir=3;
                }
                if(c[i].y>y)
                {
                    c[i].dir=2;
                }
                if(c[i].y<y)
                {
                    c[i].dir=4;
                }
                if(last==c[i].dir)
                    continue ;
                int qwq=last;
                last=c[i].dir;
                //printf("**********%d %d %d\n",c[i].x,c[i].y,c[i].dir);
                c[i].b=1;
                dfs(c[i].x,c[i].y,t-1);
                last=qwq;
                c[i].b=0;
                c[i].dir=0;
            }
        }
    }
    return ;
}
int main()
{
    scanf("%d",&n);
    for(int i=1; i<=n; i++)
    {
        scanf("%d%d",&c[i].x,&c[i].y);
        c[i].b=0;
    }
    dfs(0,0,n);
    printf("%d",ans);
    return 0;
}

 

posted @ 2018-11-27 19:13  paopo  阅读(143)  评论(0编辑  收藏  举报