N—E—E 2021-10-29 14:42 采纳率: 59.5%
浏览 96
已结题

这道DFS的题目这样写哪错了?

运行之后在scanf那里显示段错误了。

不知道是不是分配内存那里错了?
数组那里写麻烦了已经晕了不知道这样用数组对不对

//Save 007----DFS:
//007位于坐标轴上(0,0)处的孤岛,现在他要踩着鳄鱼群到达大陆。已知他的最大跳跃为3m,鳄鱼数、鳄鱼群中每只鳄鱼的坐标(假设均为整数)和
//是否能经由这只鳄鱼到达岸边由外界输入。最后输出能否到达岸边。

#include <stdio.h>
#include <stdbool.h>
#include <stdlib.h>
#define MaxJump 3

//每只鳄鱼
struct Alligator{
    int x;              //坐标
    int y;
    bool AccessToBank;  //能否由这只鳄鱼到达岸边
    bool IfVisited;
};
typedef struct Alligator *PtrToAlli;

bool Save007(int x,int y,int AlliNum,PtrToAlli *AlliFlock);  //DFS
int distance(int x1,int y1,int x2,int y2);

int main()
{
    int AlliNum;            //鳄鱼数
    printf("please enter the number:");
    scanf("%d",&AlliNum);

    PtrToAlli *AlliFlock = malloc(sizeof(struct Alligator)*AlliNum);  //鳄鱼群
    printf("please enter the coordinate for each alligator(format:X Y IfAccessToBank)\n");
    for (int i = 0;i < AlliNum;i++)
    {
        scanf("%d %d %d",&AlliFlock[i]->x,&AlliFlock[i]->y,&AlliFlock[i]->AccessToBank);
        AlliFlock[i]->IfVisited = false;
    }

    if (Save007(0,0,AlliNum,AlliFlock))
        printf("Yes");
    else
        printf("No");

    return 0;
}

bool Save007(int x,int y,int AlliNum,PtrToAlli *AlliFlock){
    for (int i = 0;i < AlliNum;i++)
    {
        if (AlliFlock[i]->AccessToBank) 
            return true;
        else if ((distance(x,y,AlliFlock[i]->x,AlliFlock[i]->y) <= MaxJump) && AlliFlock[i]->IfVisited == false)
            AlliFlock[i]->IfVisited = true;
            return Save007(AlliFlock[i]->x,AlliFlock[i]->y,AlliNum,AlliFlock);
    }
    return false;
}
int distance(int x1,int y1,int x2,int y2){
    return (x1-x2)*(x1-x2) + (y1-y2)*(y1-y2);
}

  • 写回答

2条回答 默认 最新

  • -Undefined_ 2021-10-29 14:47
    关注
    scanf("%d %d %d",&(AlliFlock[i]->x),&(AlliFlock[i]->y),&(AlliFlock[i]->AccessToBank));
    
    评论

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 11月5日
  • 创建了问题 10月29日

悬赏问题

  • ¥15 is not in the mmseg::model registry。报错,模型注册表找不到自定义模块。
  • ¥15 安装quartus II18.1时弹出此error,怎么解决?
  • ¥15 keil官网下载psn序列号在哪
  • ¥15 想用adb命令做一个通话软件,播放录音
  • ¥30 Pytorch深度学习服务器跑不通问题解决?
  • ¥15 部分客户订单定位有误的问题
  • ¥15 如何在maya程序中利用python编写领子和褶裥的模型的方法
  • ¥15 Bug traq 数据包 大概什么价
  • ¥15 在anaconda上pytorch和paddle paddle下载报错
  • ¥25 自动填写QQ腾讯文档收集表