• P1747 好奇怪的游戏


    好奇怪的游戏

    题目背景

    《爱与愁的故事第三弹·shopping》娱乐章。

    调调口味来道水题。

    题目描述

    爱与愁大神坐在公交车上无聊,于是玩起了手机。一款奇怪的游戏进入了爱与愁大神的眼帘:***(游戏名被打上了马赛克)。这个游戏类似象棋,但是只有黑白马各一匹,在点x1,y1和x2,y2上。它们得从点x1,y1和x2,y2走到1,1。这个游戏与普通象棋不同的地方是:马可以走“日”,也可以像象走“田”。现在爱与愁大神想知道两匹马到1,1的最少步数,你能帮他解决这个问题么?

    输入格式

    第1行:两个整数x1,y1

    第2行:两个整数x2,y2

    输出格式

    第1行:黑马到1,1的步数

    第2行:白马到1,1的步数

    样例 #1

    样例输入 #1

    12 16
    18 10
    
    • 1
    • 2

    样例输出 #1

    8 
    9
    
    • 1
    • 2

    提示

    100%数据:x1,y1,x2,y2<=20

    一般的🐎都只能走日字,但是这个马与象相结合,能走日字和田字,所以偏移量数组就有12个,看到大佬有用数学公式推出来答案,直接跪了,tql,如果能回到过去,一定和自己说好好学数学,你想和过去的自己说什么呢?

    在这里插入图片描述

    #include
    #include
    #include
    #include
    #include
    using namespace std;
    int dx[12]={1,2,2,2,2,1,-1,-2,-2,-2,-2,-1};
    int dy[12]={2,2,1,-1,-2,-2,-2,-2,-1,1,2,2};
    const int N=30;
    int g[N][N];
    struct node{
    	int x,y,step;
    };
    int x1,y3,x2,y2;
    void bfs(int a,int b)
    {
    	queue<node> q;
    	q.push({a,b});
    	
    	while(!q.empty())
    	{
    		node st=q.front();
    		q.pop();
    		for(int i=0;i<12;i++)
    		{
    			int x=st.x+dx[i],y=st.y+dy[i];
    			if(x<1||y<1||x>30||y>30||g[x][y]==1)continue;
    			if(g[x][y]==0)
    			{
    				q.push({x,y,st.step+1});
    				g[x][y]=1;
    			}
    			if(x==1&&y==1)cout<<st.step+1<<endl;
    		}
    	}
    }
    int main()
    {
    	cin>>x1>>y3>>x2>>y2;
    	bfs(x1,y3);
    	memset(g,0,sizeof g);
    	bfs(x2,y2);
    	return 0;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44

    y1不能用,好像库函数里相冲突了

  • 相关阅读:
    C#面:解释什么是viewstate,能否禁用?是否所用控件都可以禁用
    零基础Linux_3(基本指令_下)目录/文件的复制移动查看打包+其它指令
    koa框架(一) 认识koa
    “SonarQube requires Java 11+ to run“ for java 1.8.0_221
    关于ElasticSearch日期格式不一致的异常,可以这么解决
    WMS手动配货和自动配货的区别
    LeetCode 1114 按序打印
    Spring IOC之@ComponentScan
    Vue中实现div的任意移动
    超越SD3,比肩MJ v6,文生图模型FLUX.1开源
  • 原文地址:https://blog.csdn.net/weixin_72368992/article/details/131741189