CSU1511-残缺的棋盘-模拟/BFS

本文探讨了残缺棋盘问题的两种解决方法:一种基于数学推导,另一种采用BFS算法。通过实例代码展示了如何求解从起点到终点经过障碍物最少的步数。

G: 残缺的棋盘

题目也是中文的,然后也没什么歧义,就不多说了。
这道题专门写下题解是因为这个题有BFS和数学推导两种思路,而且都没什么难度,放个代码供新入门的看看啦

#include <stdio.h>
#include <stdlib.h>
int main()
{
    int x0,y0,x1,y1,x2,y2,d1,d2,i=0;
    while(scanf("%d %d %d %d %d %d",&x0,&y0,&x1,&y1,&x2,&y2)!=EOF){
        d1=abs(x0-x1),d2=abs(y0-y1);
        if(d1!=d2){
            printf("Case %d: %d\n",++i,d1>d2?d1:d2);
        }else if(((x2>x1&&x2<x0)||(x2>x0&&x2<x1))&&((y2>y1&&y2<y0)||(y2>y0&&y2<y1))&&(abs(x2-x0)==abs(y2-y0))){
            printf("Case %d: %d\n",++i,d1+1);
        }else{
            printf("Case %d: %d\n",++i,d1);
        }
    }
}

直接推论是这样的:一般情况下步数就等于max(行差绝对值,列差绝对值),只有起点和终点为一条斜线并且洞在这条斜线两点中间上的时候数量为行差绝对值+1(想想为什么)

#include <bits/stdc++.h>
#define N 10100
#define INF 0x3f3f3f3f
#define LL long long
#define mem(a,n) memset(a,n,sizeof(a))
#define fread freopen("in.txt","r",stdin)
#define fwrite freopen("out.txt","w",stdout)
using namespace std;
const int op[8][2]={{1,0},{1,-1},{0,-1},{-1,-1},{-1,0},{-1,1},{0,1},{1,1}};
int mp[10][10]; 
int main()
{
    ios::sync_with_stdio(false);
    int r1,c1,r2,c2,c3,r3,kase=0;
    queue<pair<pair<int,int>,int> > q;
    while(cin>>r1>>c1>>r2>>c2>>r3>>c3){
        while(!q.empty()){
            q.pop();
        }
        mem(mp,0);
        q.push(make_pair(make_pair(r1,c1),0));
        mp[r1][c1]=mp[r3][c3]=1;
        while(!q.empty()){
            int tempx=q.front().first.first,tempy=q.front().first.second,tempcnt=q.front().second;
            q.pop(); 
            if(tempx==r2&&tempy==c2){
                cout<<"Case "<<++kase<<": "<<tempcnt<<endl;
                break;
            }
            for(int i=0;i<8;++i){
                if(tempx+op[i][0]>0&&tempx+op[i][0]<9&&tempy+op[i][1]>0&&tempy+op[i][1]<9&&!mp[tempx+op[i][0]][tempy+op[i][1]]){
                    q.push(make_pair(make_pair(tempx+op[i][0],tempy+op[i][1]),tempcnt+1));
                    mp[tempx+op[i][0]][tempy+op[i][1]]=1;
                }
            }
        }
    }
    return 0;
}

BFS这个就是典型的走迷宫模板了,就不多说啥啦,不会的体会一下吧

x86_64_aarch64-linux-gnu/bin/aarch64-linux-gnu-strings malloc-multi-thread-performance-g lhl@DESKTOP-29NBL3B:~/work/test/mt$ /home/lhl/ga/repo_code/prebuilts/gcc/linux-x86/aarch64/gcc-linaro-7.5.0-2019.12-x86_64_aarch64-linux-gnu/bin/aarch64-linux-gnu-strings malloc-multi-thread-performance-g | grep glibc Fatal error: glibc detected an invalid stdio handle glibc-ld.so.cache1.1 /home/tcwg-buildslave/workspace/tcwg-make-release_0/snapshots/glibc.git~release~2.25~master/csu /home/tcwg-buildslave/workspace/tcwg-make-release_0/snapshots/glibc.git~release~2.25~master/csu /home/tcwg-buildslave/workspace/tcwg-make-release_0/snapshots/glibc.git~release~2.25~master/setjmp /home/tcwg-buildslave/workspace/tcwg-make-release_0/snapshots/glibc.git~release~2.25~master/setjmp /home/tcwg-buildslave/workspace/tcwg-make-release_0/snapshots/glibc.git~release~2.25~master/string /home/tcwg-buildslave/workspace/tcwg-make-release_0/snapshots/glibc.git~release~2.25~master/string /home/tcwg-buildslave/workspace/tcwg-make-release_0/snapshots/glibc.git~release~2.25~master/string /home/tcwg-buildslave/workspace/tcwg-make-release_0/snapshots/glibc.git~release~2.25~master/string /home/tcwg-buildslave/workspace/tcwg-make-release_0/snapshots/glibc.git~release~2.25~master/string /home/tcwg-buildslave/workspace/tcwg-make-release_0/snapshots/glibc.git~release~2.25~master/string /home/tcwg-buildslave/workspace/tcwg-make-release_0/snapshots/glibc.git~release~2.25~master/string /home/tcwg-buildslave/workspace/tcwg-make-release_0/snapshots/glibc.git~release~2.25~master/string /home/tcwg-buildslave/workspace/tcwg-make-release_0/snapshots/glibc.git~release~2.25~master/string /home/tcwg-buildslave/workspace/tcwg-make-release_0/snapshots/glibc.git~release~2.25~master/string /home/tcwg-buildslave/workspace/tcwg-make-release_0/snapshots/glibc.git~release~2.25~master/string /home/tcwg-buildslave/workspace/tcwg-make-release_0/snapshots/glibc.git~release~2.25~master/string /home/tcwg-buildslave/workspace/tcwg-make-release_0/snapshots/glibc.git~release~2.25~master/posix /home/tcwg-buildslave/workspace/tcwg-make-release_0/snapshots/glibc.git~release~2.25~master/posix /home/tcwg-buildslave/workspace/tcwg-make-release_0/snapshots/glibc.git~release~2.25~master/posix /home/tcwg-buildslave/workspace/tcwg-make-release_0/snapshots/glibc.git~release~2.25~master/posix /home/tcwg-buildslave/workspace/tcwg-make-release_0/snapshots/glibc.git~release~2.25~master/posix /home/tcwg-buildslave/workspace/tcwg-make-release_0/snapshots/glibc.git~release~2.25~master/posix /home/tcwg-buildslave/workspace/tcwg-make-release_0/snapshots/glibc.git~release~2.25~master/posix /home/tcwg-buildslave/workspace/tcwg-make-release_0/snapshots/glibc.git~release~2.25~master/io /home/tcwg-buildslave/workspace/tcwg-make-release_0/snapshots/glibc.git~release~2.25~master/io /home/tcwg-buildslave/workspace/tcwg-make-release_0/snapshots/glibc.git~release~2.25~master/misc /home/tcwg-buildslave/workspace/tcwg-make-release_0/snapshots/glibc.git~release~2.25~master/misc /home/tcwg-buildslave/workspace/tcwg-make-release_0/snapshots/glibc.git~release~2.25~master/misc /home/tcwg-buildslave/workspace/tcwg-make-release_0/snapshots/glibc.git~release~2.25~master/misc /home/tcwg-buildslave/workspace/tcwg-make-release_0/snapshots/glibc.git~release~2.25~master/misc /home/tcwg-buildslave/workspace/tcwg-make-release_0/snapshots/glibc.git~release~2.25~master/misc /home/tcwg-buildslave/workspace/tcwg-make-release_0/snapshots/glibc.git~release~2.25~master/string /home/tcwg-buildslave/workspace/tcwg-make-release_0/snapshots/glibc.git~release~2.25~master/string /home/tcwg-buildslave/workspace/tcwg-make-release_0/snapshots/glibc.git~release~2.25~master/posix /home/tcwg-buildslave/workspace/tcwg-make-release_0/snapshots/glibc.git~release~2.25~master/posix /home/tcwg-buildslave/workspace/tcwg-make-release_0/snapshots/glibc.git~release~2.25~master/posix /home/tcwg-buildslave/workspace/tcwg-make-release_0/snapshots/glibc.git~release~2.25~master/posix /home/tcwg-buildslave/workspace/tcwg-make-release_0/snapshots/glibc.git~release~2.25~master/posix /home/tcwg-buildslave/workspace/tcwg-make-release_0/snapshots/glibc.git~release~2.25~master/io /home/tcwg-buildslave/workspace/tcwg-make-release_0/snapshots/glibc.git~release~2.25~master/misc /home/tcwg-buildslave/workspace/tcwg-make-release_0/snapshots/glibc.git~release~2.25~master/elf /home/tcwg-buildslave/workspace/tcwg-make-release_0/snapshots/glibc.git~release~2.25~master/elf /home/tcwg-buildslave/workspace/tcwg-make-release_0/snapshots/glibc.git~release~2.25~master/time /home/tcwg-buildslave/workspace/tcwg-make-release_0/snapshots/glibc.git~release~2.25~master/misc /home/tcwg-buildslave/workspace/tcwg-make-release_0/snapshots/glibc.git~release~2.25~master/socket /home/tcwg-buildslave/workspace/tcwg-make-release_0/snapshots/glibc.git~release~2.25~master/socket /home/tcwg-buildslave/workspace/tcwg-make-release_0/snapshots/glibc.git~release~2.25~master/socket /home/tcwg-buildslave/workspace/tcwg-make-release_0/snapshots/glibc.git~release~2.25~master/socket /home/tcwg-buildslave/workspace/tcwg-make-release_0/snapshots/glibc.git~release~2.25~master/csu /home/tcwg-buildslave/workspace/tcwg-make-release_0/_build/builds/x86_64-unknown-linux-gnu/aarch64-linux-gnu/glibc.git~release~2.25~master /home/tcwg-buildslave/workspace/tcwg-make-release_0/_build/builds/x86_64-unknown-linux-gnu/aarch64-linux-gnu/glibc.git~release~2.25~master/stdio-common /home/tcwg-buildslave/workspace/tcwg-make-release_0/snapshots/glibc.git~release~2.25~master/csu __glibc_unused_rhook /home/tcwg-buildslave/workspace/tcwg-make-release_0/snapshots/glibc.git~release~2.25~master/nptl __glibc_unused_qhook __glibc_reserved /home/tcwg-buildslave/workspace/tcwg-make-release_0/snapshots/glibc.git~release~2.25~master/assert /home/tcwg-buildslave/workspace/tcwg-make-release_0/snapshots/glibc.git~release~2.25~master/ctype /home/tcwg-buildslave/workspace/tcwg-make-release_0/snapshots/glibc.git~release~2.25~master/intl /home/tcwg-buildslave/workspace/tcwg-make-release_0/snapshots/glibc.git~release~2.25~master/setjmp /home/tcwg-buildslave/workspace/tcwg-make-release_0/snapshots/glibc.git~release~2.25~master/signal /home/tcwg-buildslave/workspace/tcwg-make-release_0/snapshots/glibc.git~release~2.25~master/stdlib /home/tcwg-buildslave/workspace/tcwg-make-release_0/snapshots/glibc.git~release~2.25~master/stdio-common /home/tcwg-buildslave/workspace/tcwg-make-release_0/snapshots/glibc.git~release~2.25~master/libio /home/tcwg-buildslave/workspace/tcwg-make-release_0/snapshots/glibc.git~release~2.25~master/malloc /home/tcwg-buildslave/workspace/tcwg-make-release_0/snapshots/glibc.git~release~2.25~master/string /home/tcwg-buildslave/workspace/tcwg-make-release_0/snapshots/glibc.git~release~2.25~master/wcsmbs /home/tcwg-buildslave/workspace/tcwg-make-release_0/snapshots/glibc.git~release~2.25~master/posix /home/tcwg-buildslave/workspace/tcwg-make-release_0/snapshots/glibc.git~release~2.25~master/io /home/tcwg-buildslave/workspace/tcwg-make-release_0/snapshots/glibc.git~release~2.25~master/resource /home/tcwg-buildslave/workspace/tcwg-make-release_0/snapshots/glibc.git~release~2.25~master/misc /home/tcwg-buildslave/workspace/tcwg-make-release_0/snapshots/glibc.git~release~2.25~master/rt /home/tcwg-buildslave/workspace/tcwg-make-release_0/snapshots/glibc.git~release~2.25~master/debug /home/tcwg-buildslave/workspace/tcwg-make-release_0/snapshots/glibc.git~release~2.25~master/resolv /home/tcwg-buildslave/workspace/tcwg-make-release_0/snapshots/glibc.git~release~2.25~master/elf /home/tcwg-buildslave/workspace/tcwg-make-release_0/snapshots/glibc.git~release~2.25~master/iconv /home/tcwg-buildslave/workspace/tcwg-make-release_0/snapshots/glibc.git~release~2.25~master/locale /home/tcwg-buildslave/workspace/tcwg-make-release_0/snapshots/glibc.git~release~2.25~master/math /home/tcwg-buildslave/workspace/tcwg-make-release_0/snapshots/glibc.git~release~2.25~master/time /home/tcwg-buildslave/workspace/tcwg-make-release_0/snapshots/glibc.git~release~2.25~master/dirent /home/tcwg-buildslave/workspace/tcwg-make-release_0/snapshots/glibc.git~release~2.25~master/termios /home/tcwg-buildslave/workspace/tcwg-make-release_0/snapshots/glibc.git~release~2.25~master/wctype /home/tcwg-buildslave/workspace/tcwg-make-release_0/snapshots/glibc.git~release~2.25~master/dlfcn /home/tcwg-buildslave/workspace/tcwg-make-release_0/snapshots/glibc.git~release~2.25~master/inet /home/tcwg-buildslave/workspace/tcwg-make-release_0/snapshots/glibc.git~release~2.25~master/gmon /home/tcwg-buildslave/workspace/tcwg-make-release_0/snapshots/glibc.git~release~2.25~master/socket /home/tcwg-buildslave/workspace/tcwg-make-release_0/_build/builds/x86_64-unknown-linux-gnu/aarch64-linux-gnu/glibc.git~release~2.25~master/csu/abi-note.o /home/tcwg-buildslave/workspace/tcwg-make-release_0/_build/builds/x86_64-unknown-linux-gnu/aarch64-linux-gnu/glibc.git~release~2.25~master/csu/start.o
07-29
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值