ZoeGreenn 2016-07-02 09:21 采纳率: 0%
浏览 1097
已结题

poj一道基础广搜题,求解答!

原题地址

代码:

 #include <algorithm>
#include <iostream>
#include <map>
#include <queue>
#include <set>
#include <string.h>
#include <string>
#include <vector>
using namespace std;

bool visited[25];
struct Point {
  int position;
  int value;
  int x;
  int y;
  Point(int p, int v, int xx, int yy) : position(p), value(v), x(xx), y(yy) {}
};

Point que[25];
int front = 0, rear = 25;

int main(int argc, char const *argv[]) {
  Point path[5][5];
  queue<Point> result;
  int cnt = 0;
  for (int i = 0; i < 5; i++)
    for (int j = 0; j < 5; j++) {
      cin >> path[i][j].value;
      cnt++;
      path[i][j].position = cnt + 1;
      path[i][j].x = i;
      path[i][j].y = j;
    }

  que[rear--] = path[0][0];
  visited[path[0][0].position] = true;
  result.push(path[0][0]);

  while (front != rear) {
    Point p = que[front];
    front++;
    if (p.position == 25) {
      for (size_t i = 0; i < result.size(); i++) {
        cout << "(" << result.front().x << "," << result.front().y << ")"
             << endl;
        result.pop();
      }
    } else {
      if (p.x - 1 >= 0 && !visited[p.position - 1] &&
          path[p.x - 1][p.y].value != 1) {
        que[rear--] = p(p.position - 1, path[p.x - 1][p.y].value, p.x - 1, p.y);
        result.push(p(p.position - 1, path[p.x - 1][p.y].value, p.x - 1, p.y));
        visited[p.position - 1] = true;
      }
      if (p.x + 1 <= 4 && !visited[p.position + 1] &&
          path[p.x + 1][p.y].value != 1) {
        que[rear--] = p(p.position + 1, path[p.x + 1][p.y].value, p.x + 1, p.y);
        result.push(p(p.position + 1, path[p.x + 1][p.y].value, p.x + 1, p.y));
        visited[p.position + 1] = true;
      }
      if (p.y - 1 >= 0 && !visited[p.position - 5] &&
          path[p.x][p.y - 1].value != 1) {
        que[rear--] = p(p.position - 5, path[p.x][p.y - 1].value, p.x, p.y - 1);
        result.push(p(p.position - 5, path[p.x][p.y - 1].value, p.x, p.y - 1));
        visited[p.position - 5] = true;
      }
      if (p.y + 1 <= 4 && !visited[p.position + 5] &&
          path[p.x][p.y + 1].value != 1) {
        que[rear--] = p(p.position + 5, path[p.x][p.y + 1].value, p.x, p.y + 1);
        result.push(p(p.position + 5, path[p.x][p.y + 1].value, p.x, p.y + 1));
        visited[p.position + 5] = true;
      }
    }
  }
  return 0;
}

编译有错:

 solution.cpp:17:37: error: ISO C++ forbids declaration of point’ with no type [-fpermissive]
   point(int p, int v, int xx, int yy) : position(p), value(v), x(xx), y(yy) {}
                                     ^

solution.cpp: In member function ‘int Point::point(int, int, int, int)’:
solution.cpp:17:41: error: only constructors take member initializers
   point(int p, int v, int xx, int yy) : position(p), value(v), x(xx), y(yy) {}

好像是构造函数不太对?不太懂怎么回事?求大神解答!

  • 写回答

1条回答 默认 最新

  • threenewbee 2016-07-02 11:44
    关注

    不知道为什么,你的编译器把构造函数改名成小写的point了,结果因为结构体是Point,而构造函数是point,所以没有认出这是构造函数,而你的这个函数因为是构造函数没有返回值,所以报错了。
    但是我这里没有这个错。
    我这里 Point que[25]; 报错,提示缺少无参构造函数,加上Point() {} 可以编译。

    评论

报告相同问题?

悬赏问题

  • ¥15 用comsol模拟大气湍流通过底部加热(温度不同)的腔体
  • ¥50 安卓adb backup备份子用户应用数据失败
  • ¥20 有人能用聚类分析帮我分析一下文本内容嘛
  • ¥15 请问Lammps做复合材料拉伸模拟,应力应变曲线问题
  • ¥30 python代码,帮调试
  • ¥15 #MATLAB仿真#车辆换道路径规划
  • ¥15 java 操作 elasticsearch 8.1 实现 索引的重建
  • ¥15 数据可视化Python
  • ¥15 要给毕业设计添加扫码登录的功能!!有偿
  • ¥15 kafka 分区副本增加会导致消息丢失或者不可用吗?