noj算法 迷宫问题 回溯法

Posted y1040511302

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了noj算法 迷宫问题 回溯法相关的知识,希望对你有一定的参考价值。

描述:

 

给一个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("
");
}

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算法 迷宫问题 回溯法的主要内容,如果未能解决你的问题,请参考以下文章

noj算法 装载问题 回溯法

noj算法 8皇后打印 回溯法

noj算法 素数环 回溯法

noj算法 踩气球 回溯法

算法————回溯法--迷宫问题(残缺)

兔年之兔子走迷宫 用一个小游戏对回溯法进行实现 | C++