BFS 没开O2TLE,开了O2AC??
查看原帖
BFS 没开O2TLE,开了O2AC??
961972
Lele_Programmer楼主2023/7/4 22:17
#include <bits/stdc++.h>
using namespace std;

int n,m;
int drt[4][2]={{-2,1},{-1,2},{1,2},{2,1}};
int arr[20][20];
queue<pair<int,int> > q;

bool check(int x,int y) {
    if (x>=0 && y>=0 && x<=n && y<=m) {
        return true;
    } else {
        return false;
    }
}

void bfs() {
    int gx,gy;
    while (!q.empty()) {
        gx=q.front().first;
        gy=q.front().second;
        q.pop();
        for (int i=0;i<4;++i) {
            if (check(gx+drt[i][0],gy+drt[i][1])) {
                q.push(make_pair(gx+drt[i][0],gy+drt[i][1]));
                ++arr[gx+drt[i][0]][gy+drt[i][1]];
            }
        }
    }
}

int main() {
    scanf("%d %d",&n,&m);
    q.push(make_pair(0,0));
    memset(arr,0,sizeof(0));
    arr[0][0]=1;
    bfs();
    printf("%d",arr[n][m]);
    return 0;
}

上面是我的代码,提交的时候T了3个点,开了O2才AC,自己运行的时候开#pragma GCC optimize(2),原来运行1秒的现在只要200多毫秒

所以能有大佬讲解一下为什么会这样吗??感谢~~

2023/7/4 22:17
加载中...