質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

Q&A

解決済

1回答

666閲覧

Atcorder beginner contest269 D問題

busa145

総合スコア7

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

0グッド

0クリップ

投稿2022/10/03 09:15

前提

Atcorder beginner contest 269のD問題をdfsで解いているのですが、終了コード139が発生してしまいます。どうしたらそれを取り除けるのか、またそもそも自分の書いているコードで政界にたどり着けるのかを教えてください。

実現したいこと

エラーの停止

発生している問題・エラーメッセージ

終了コード139

該当のソースコード

c++
ソースコード

#include <iostream> #include<vector> using namespace std; vector<vector<int>>seen(2000,vector<int>(2000));vector<vector<int>>judge(2000,vector<int>(2000)); void dfs(int s,int t){ seen[s][t] = 1; if(judge[s-1][t-1])dfs(s-1,t-1); if(judge[s-1][t])dfs(s-1,t); if(judge[s][t-1])dfs(s,t-1); if(judge[s][t+1])dfs(s,t+1); if(judge[s+1][t])dfs(s+1,t); if(judge[s+1][t+1])dfs(s+1,t+1); } int main(){ int N;cin >> N; vector<vector<int>>a(2000,vector<int>(2000)); vector<int>b(N);vector<int>c(N); for(int i=0;i<N;i++){ cin >> b[i] >> c[i];b[i]+=1000;c[i]+=1000;judge[b[i]][c[i]]=1; } int ans = 0; for(int i=0;i<N;i++){ if(!seen[b[i]][c[i]]){ dfs(b[i],c[i]);ans++; } } cout << ans << endl; }

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

int32_t

2022/10/04 01:13

どんなタイミングでエラーになりますか? Nの入力や b[i] c[i] の入力はできましたか。
busa145

2022/10/04 02:27

すべて出来ています
int32_t

2022/10/04 02:38

どんな入力のときに問題が出ますか。 デバッガ上で実行してみましたか。
guest

回答1

0

ベストアンサー

終了コード139が発生してしまいます。どうしたらそれを取り除けるのか

関数再帰が無限に行われたため,メモリを無限に確保しようとし,結果Stack OverflowとなりSegmentation Faultが発生しています.
無限に再帰呼び出しが行われないよう,コードを適切に書き換えてください.
特に訪問済みであることを示す二次元配列seen[][]も再帰の条件分岐に使えるんじゃないでしょうか.

またそもそも自分の書いているコードで正解にたどり着けるのか

正しく関数再帰を行えばおそらく正解になるでしょう.

投稿2022/10/04 20:00

編集2022/10/04 20:15
PondVillege

総合スコア1579

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

busa145

2022/10/06 13:20

ありがとうございます
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問