###前提・実現したいこと
プログラミングコンテストチャレンジブックの幅優先探索のプログラムで詰まりました.
はじめに横幅、縦幅を入力し、そのあとにchar型で
'#':壁
'.':通路
'S':start
'G':goal
として道を入力し、スタートからゴールまでの最短経路を求める問題です。
linker command failed with exit code 1 (use -v to see invocation)
というエラーが消えず困惑しています。
###発生している問題・エラーメッセージ
final section layout: __TEXT/__text addr=0x100001440, size=0x00005740, fileOffset=0x00001440, type=1 __TEXT/__stubs addr=0x100006B80, size=0x00000066, fileOffset=0x00006B80, type=28 __TEXT/__stub_helper addr=0x100006BE8, size=0x000000A6, fileOffset=0x00006BE8, type=32 __TEXT/__gcc_except_tab addr=0x100006C90, size=0x000002B0, fileOffset=0x00006C90, type=0 __TEXT/__unwind_info addr=0x100006F40, size=0x000000BC, fileOffset=0x00006F40, type=22 __DATA/__nl_symbol_ptr addr=0x100007000, size=0x00000010, fileOffset=0x00007000, type=29 __DATA/__got addr=0x100007010, size=0x00000020, fileOffset=0x00007010, type=29 __DATA/__la_symbol_ptr addr=0x100007030, size=0x00000088, fileOffset=0x00007030, type=27 __DATA/__data addr=0x1000070C0, size=0x00000020, fileOffset=0x000070C0, type=0 __DATA/__common addr=0x1000070E0, size=0x00000020, fileOffset=0x00000000, type=25 __DATA/__huge addr=0x100007100, size=0xBA44AB654, fileOffset=0x00000000, type=25 ld: 32-bit RIP relative reference out of range (10000221816 max is +/-4GB): from __Z10bfs_searchv (0x100001440) to _d (0x3540F6250) in '__Z10bfs_searchv' from /var/folders/1m/b52stqf54pggs6ng3z9xb8380000gn/T/bfs-c8955c.o for architecture x86_64 clang: error: linker command failed with exit code 1 (use -v to see invocation)
###該当のソースコード
c++
1#define ffor(i,a,b) for (int i=(a);i<(b);i++) 2#define rfor(i,a,b) for (int i=(b)-1;i>=(a);i--) 3#define rep(i,n) for (int i=0;i<(n);i++) 4#define rrep(i,n) for (int i=(n)-1;i>=0;i--) 5#include<iostream> 6#include<algorithm> 7#include<cmath> 8#include<string> 9#include<stack> 10#include<queue> 11#include<utility> 12#include<map> 13#define SIZE 100001 14#define MOD 1000000007 15#define INF 100000000 16using namespace std; 17 18typedef pair<int,int> P; 19char maze[SIZE][SIZE]; 20int N,M; 21int sx,sy; 22int gx,gy; 23int d[SIZE][SIZE]; 24 25int dx[4] = {1,0,-1,0},dy[4] = {0,1,0,-1}; 26 27int bfs_search(){ 28 queue<P> que; 29 //INFで初期化 30 rep(i,N){ 31 rep(j,M){ 32 d[i][j] = INF; 33 } 34 } 35 36 que.push(P(sx,sy)); 37 d[sx][sy] = 0; 38 39 while(que.size()){ 40 //キューの先頭を取り出す 41 P p = que.front(); 42 que.pop(); 43 //取り出してきた状態がゴールなら探索をやめる 44 if(p.first == gx && p.second == gy) break; 45 46 //移動四方向をループ 47 rep(i,4){ 48 //移動後の点を(nx,ny)とする 49 int nx = p.first + dx[i]; 50 int ny = p.second + dy[i]; 51 52 if(0 <= nx && nx <N && 0 <= ny && ny < M && maze[nx][ny] != '#' && d[nx][ny] == INF){ 53 //移動できるならキューに入れ、その点の距離をpからの距離+1で確定する 54 que.push(P(nx,ny)); 55 d[nx][ny] = d[p.first][p.second] + 1; 56 } 57 } 58 } 59 return d[gx][gy]; 60} 61 62void solve(){ 63 int res = bfs_search(); 64 cout << res << endl; 65} 66 67int main(){ 68 cin >> N >> M; 69 rep(i,N){ 70 rep(j,M){ 71 cin >> maze[i][j]; 72 } 73 } 74 75 rep(i,N){ 76 rep(j,M){ 77 if(maze[i][j] == 'S'){ 78 sx = i; 79 sy = j; 80 } 81 if(maze[i][j] == 'G'){ 82 gx = i; 83 gy = j; 84 } 85 } 86 } 87 88 solve(); 89 90 return 0; 91} 92
###試したこと
フレームワークの追加忘れがあるときに生じるようですが、どのように対応して良いかわかりません。
###補足情報(言語/FW/ツール等のバージョンなど)
環境はmacOSsierraです。
IDEとしてXcodeは使用せず、vimでプログラムを編集しながらg++でコンパイルして使用しています。
対策方法を教えていただけたら幸いです。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/02/26 08:58
2017/02/26 09:13