wei xin_44706101 2020-03-10 20:14 采纳率: 100%
浏览 170
已采纳

搜索路径问题 求解 代码如何修改

搜索路径问题

#include<bits/stdc++.h>
using namespace std;
int move[4][2]={0,1,-1,0,0,-1,1,0};int n,i1,yi,a[20][20],sd=0,sum=0,tr=0,vis[20][20]={0};

void bfs(int x,int y)
{ int nx,ny,i,j,t=-1;
if(x==0&&y==n-1) return;
    for(i=0;i<4;i++)
    {
        nx=x+move[i][0];
        ny=y+move[i][1];
        if(nx>=0&&nx<n&&ny>=0&&ny<n&&vis[nx][ny]==0)
        {
        if(t<a[nx][ny]) 
        {t=a[nx][ny];
        i1=nx;yi=ny;}}
    }
    sum=a[i1][yi]+sum;vis[i1][yi]=1;//先算到达最多累积多少 为47 
          bfs(i1,yi);

    }
void bfs12(int x,int y)
{ int nx,ny,i,j,s;
if(x==0&&y==n-1) 
{ if(tr==sum)sd++;
return;}
    for(i=0;i<4;i++)
    {
        nx=x+move[i][0];
        ny=y+move[i][1];
        if(nx>=0&&nx<n&&ny>=0&&ny<n&&vis[nx][ny]==0)//再算多少条路的累计值为47
        { tr=tr+a[nx][ny]; vis[nx][ny]=1;bfs12(nx,ny);tr=tr-a[nx][ny];vis[nx][ny]=0;
        }



    }


}


int main(){ 
int j,i;
scanf("%d",&n);
for(i=0;i<n;i++)
{ for(j=0;j<n;j++)
scanf("%d",&a[i][j]);}vis[n-1][0]=1;
bfs(n-1,0);memset(vis,0,sizeof(vis));vis[n-1][0]=1;
bfs12(n-1,0);

printf("%d ",sd);//多少条累积值为最大这样的路
printf("%d",sum+a[n-1][0]);//最大累积值 
return 0;}




5
4 5 4 5 6
2 6 5 4 6
2 6 6 5 2
4 5 2 2 5
5 2 5 6 4从左下角5出发到右上角6
正确结果输出3 47 3条累积值为47的路
我的代码输出为 20 47 求问如何修改我的代码 求问大佬

  • 写回答

1条回答 默认 最新

  • Mikoyan_Yu 2020-03-11 15:03
    关注

    对bfs12函数做如下局部修改即可:

            //if (nx >= 0 && nx < n&&ny >= 0 && ny < n&&vis[nx][ny] == 0)//修改前
            if (nx >= 0 && nx <= **x**&&ny >=** y** && ny < n&&vis[nx][ny] == 0) //修改后
    

    修改前效果:

    图片说明

    修改后效果:

    图片说明

    总结:

    1、为了他人回答方便,建议好好整理代码,确保代码的易读性。
    2、搞不清楚结果的时候,可以遍历所有结果并打印出来分析,特别是可以图形化的这种问题。
    3、这类问题,基本都跟限定条件错误有关,这个问题需要考虑路径的搜寻趋势,即应当符合左下向右上逐步缩小范围的要求。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 安卓adb backup备份应用数据失败
  • ¥15 eclipse运行项目时遇到的问题
  • ¥15 关于#c##的问题:最近需要用CAT工具Trados进行一些开发
  • ¥15 南大pa1 小游戏没有界面,并且报了如下错误,尝试过换显卡驱动,但是好像不行
  • ¥15 没有证书,nginx怎么反向代理到只能接受https的公网网站
  • ¥50 成都蓉城足球俱乐部小程序抢票
  • ¥15 yolov7训练自己的数据集
  • ¥15 esp8266与51单片机连接问题(标签-单片机|关键词-串口)(相关搜索:51单片机|单片机|测试代码)
  • ¥15 电力市场出清matlab yalmip kkt 双层优化问题
  • ¥30 ros小车路径规划实现不了,如何解决?(操作系统-ubuntu)