码迷,mamicode.com
首页 > 编程语言 > 详细

noj算法 迷宫问题 回溯法

时间:2018-09-30 22:39:37      阅读:194      评论:0      收藏:0      [点我收藏+]

标签:xxx   clu   ...   回溯法   int   style   stdio.h   字符   search   

描述:

 

给一个20×20的迷宫、起点坐标和终点坐标,问从起点是否能到达终点。

输入:

 

多个测例。输入的第一行是一个整数n,表示测例的个数。接下来是n个测例,每个测例占21行,第一行四个整数x1,y1,x2,y2是起止点的位置(坐标从零开始),(x1,y1)是起点,(x2,y2)是终点。下面20行每行20个字符,’.’表示空格;’X’表示墙。

输出:

 

每个测例的输出占一行,输出Yes或No。

输入样例:

 

2
0 0 19 19
....................
XXXXXXXXXXXXXXXXXXXX
....................
....................
....................
....................
....................
....................
....................
....................
....................
....................
....................
....................
....................
....................
....................
....................
....................
....................
0 0 19 19
....................
XXXXXXXXXXXXXXXXXXX.
....................
.XXXXXXXXXXXXXXXXXXX
....................
XXXXXXXXXXXXXXXXXXX.
....................
.XXXXXXXXXXXXXXXXXXX
....................
XXXXXXXXXXXXXXXXXXX.
....................
.XXXXXXXXXXXXXXXXXXX
....................
XXXXXXXXXXXXXXXXXXX.
XXXXXXXXXXXXXXXXXXX.
XXXXXXXXXXXXXXXXXXX.
XXXXXXXXXXXXXXXXXXX.
....................
.XXXXXXXXXXXXXXXXXXX
....................

输出样例:

 

No
Yes

 

代码:

#include <iostream>
#include <string.h>
#include <stdio.h>
#include <math.h>

using namespace std;
int num[22];
bool used[22];
int couse=1;

bool check(int x,int y)
{
    int k=2,i=x+y;
    while(k<=sqrt(i)&&i%k!=0) k++;
    if(k>sqrt(i)) return true;
    return false;
}

void print()
{
    printf("%d",num[1]);
    for(int i=2;i<=20;i++)
        printf(" %d",num[i]);
    printf("\n");
}

void Search(int x)
{
    for(int i=1;i<=20;i++)
    {
        if(!used[i]&&check(num[x-1],i)&&couse==1)
        {
            num[x]=i;
            used[i]=true;
            if(x==20&&check(num[1],num[20])&&couse==1)
                {print();couse++;return ;}
            Search(x+1);
            used[i]=false;
        }
    }
}


int main()
{
    Search(1);
    return 0;
}

 

 

 

 

noj算法 迷宫问题 回溯法

标签:xxx   clu   ...   回溯法   int   style   stdio.h   字符   search   

原文地址:https://www.cnblogs.com/y1040511302/p/9733408.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!