最后一个点TLE求优化
查看原帖
最后一个点TLE求优化
23846
伯爵H楼主2023/10/29 20:59
#include<bits/stdc++.h>
using namespace std;
int a[10000][10000],sum=0;
int n,m;
void dfs(int x,int y)//使用深度优先搜索递归遍历路径
{
    if( x != n && y != m &&a[x+1][y] == 0 && a[x][y+1] == 0)//如果进入死路直接返回
        return;

 
    if( x == n && y == m)//如果到达终点就返回上一层再次搜索
    {
        sum++;
        return;
    }
    else
    {
        if(a[x+1][y] != 0 ){
            //cout<<x+1<<" "<<y<<endl;
            dfs(x+1,y);
            
        }
        if(a[x][y+1] != 0 ){
            //cout<<x<<" "<<y+1<<endl;
            dfs(x,y+1);
        }
       
    }
       
}

int main(){

    cin>>n>>m;
    for(int i = 1 ; i <= n ; i++){
        for(int j = 1 ; j <= m ; j++)
            if( i % 2 == 0 && j % 2 ==0)
                a[i][j] = 0;
            else
                a[i][j] = 1;
    }//初始化地图
    dfs(1,1);//开始深搜
    cout<<sum;
    return 0;
}

用深搜做最后一个点超时了,求大犇优化

2023/10/29 20:59
加载中...