首页 > 编程语言 >A Knight's JourneyC++

A Knight's JourneyC++

时间:2024-02-03 23:12:24浏览次数:27  
标签:cur int Knight visit C++ Journey && path

题目看半天看不懂。

題目把我恶心坏了。看网上说按字典顺序输出,到底是什么意思半天没搞懂。

#include<iostream>
#include<string>
using namespace std;

int d[8][2]={
        {-1,-2},{1,-2},{-2,-1},{2,-1},{-2,1},{2,1},{-1,2},{1,2}
};

int visit[8][8]={0};

bool DFS(int i,int j,int cur,string& path ,int p,int q){
    visit[i][j]=1;
    path+=j+'A';
    path+=i+'1';
    if(p*q==cur) return true;
    for(int x=0;x<8;x++){
        if(i+d[x][0]>=0 && j+d[x][1] >=0 && j+d[x][1] < q && i+d[x][0]<p && visit[i+d[x][0]][j+d[x][1]] ==0){
            if( DFS(i+d[x][0],j+d[x][1],cur+1,path,p,q) ){
                return true;
            }
        }
    }
    visit[i][j]=0;
    path.erase(path.size()-2,2);
    return false;
}

int main(){
    int n=0;
    cin >> n;
    for(int i=1;i<=n;i++){
        for(int x=0;x<8;x++){
            for(int j=0;j<8;j++){
                visit[x][j]=0;
            }
        }
        int cur=1;
        int p =0,q=0;
        cin >> p >> q;
        string path;
        if(DFS(0,0,cur,path,p,q)){
            cout << "Scenario #" << i <<':'<<'\n';
            cout << path <<'\n';
        }else{
            cout << "Scenario #" << i <<':'<<'\n';
            cout <<"impossible"<<'\n';
        }
        cout <<'\n';
    }
    return 0;
}

 

结果如下:

标签:cur,int,Knight,visit,C++,Journey,&&,path
From: https://www.cnblogs.com/llllmz/p/18005372

相关文章

  • CLion 2023: 一款专注于性能和效率的C/C++ IDE mac/win版
    JetBrainsCLion2023是一款专为C和C++开发人员打造的强大集成开发环境。这个版本致力于提供卓越的性能、强大的功能和一流的智能代码编辑支持,帮助您更高效地开发高质量的C和C++应用程序。→→↓↓载CLion2023mac+win版首先,CLion2023提供了对最新C和C++标准的全面支持。无论......
  • c++20模块化编程与传统区别
    传统:main.cpp+a.cpp(存放定义)+a.h(存放声明)c++20:main.cpp+a.cppm(存放定义,在定义前面写export即可)模块化编程好处:不再需要修改了函数到对应修改声明,两头跑编译更快,模块只在修改后才重新编译模块化编程举例://my_module.cppmimport<iostream>;exportm......
  • Find The MultipleC++
    这题就是找N的倍数m,M要求是由1和0组成且非0。可以用图来看,从1出发临边是1和0,然后广度遍历,第一个能能整除N的数输出就行。#include<iostream>#include<queue>usingnamespacestd;intmain(){intn=-1;while(cin>>n){if(n==0)break;longlon......
  • c++加速cin和关闭同步流
    signedmain(){ios::sync_with_stdio(0);cin.tie(0),cout.tie(0);intT=1;//cin>>T;while(T--)solve();return0;}一·ios::sync_with_stdio(false);01"c++是否兼容stdio(c)"的开关函数02默认参数为true:将输出流绑到一起保证......
  • 【C++】力扣101-平方数之和
    给定一个非负整数 c ,你要判断是否存在两个整数 a 和 b,使得 a2+b2=c 。使用双指针:#include<iostream>#include<math.h>usingnamespacestd;booljudge(longc){if(c<0)returnfalse;longa=0;longb=(int)sqrt(c);longsum=0;while......
  • 12. C++ 类其实也是一种作用域
    C++类其实也是一种作用域类其实也是一种作用域,每个类都会定义它自己的作用域。在类的作用域之外,普通的成员只能通过对象(可以是对象本身,也可以是对象指针或对象引用)来访问,静态成员既可以通过对象访问,又可以通过类访问,在类内用typedef定义的类型只能通过类来访问。下面的例子使......
  • 【C++】类和对象(一)[类的相关定义及this指针]
    C语言是面向过程的,关注的是过程,分析出求解问题的步骤,通过函数调用逐步解决问题。C++是基于面向对象的,关注的是对象,将一件事情拆分成不同的对象,靠对象之间的交互完成。C++在C语言的基础上增加了面向对象编程,C++支持面向对象程序设计。类是C++的核心特性,通常被称为用户定义的类......
  • Qt/C++音视频开发66-音频变速不变调/重采样/提高音量/变速变调/倍速播放/sonic库使用
    一、前言之前在做倍速这个功能的时候,发现快速播放会有滴滴滴的破音出现,正常1倍速没有这个问题,尽管这个破音间隔很短,要放大音量才能听到,但是总归是不完美的,后面发现,通过修改qaudiooutput的采样率,可以规避这个问题,破音不在出现了,但是音调变了,倍速越大变得越快,人声越发不清晰,变得尖......
  • 在 Windows 10 上使用 Visual Studio 2022 C++ 桌面开发
    工具下载链接:https://pan.quark.cn/s/c70b23901ccb环境介绍在今天的快速发展的软件开发行业中,选择合适的开发环境是非常关键的一步。对于C++开发人员来说,VisualStudio2022(VS2022)是一个强大的集成开发环境(IDE),特别是在Windows10操作系统中。安装VisualStudio2022本文将引导您......
  • C++编程练习||创建一个名为Rational的类,进行分数运算。
    题目:创建一个名为Rational的类,进行分数运算。创建一个名为Rational的类,进行分数运算。用整数变量表示类的private数据-numerator(分子)和denominator(分母)。提供一个带默认值的构造函数,并且它应该以简化的形式保存分数。例如分数2/4应在对象中保存为numerator为1,denominator为2的形式。......