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

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

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

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

再帰

情報工学における再帰とは、プログラムのあるメソッドの処理上で自身のメソッドが再び呼び出されている処理の事をいいます。

配列

配列は、各データの要素(値または変数)が連続的に並べられたデータ構造です。各配列は添え字(INDEX)で識別されています。

Q&A

解決済

1回答

1631閲覧

[C言語] 編集距離;メモされているかどうかをどう判断するか

Hinomae

総合スコア7

C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

再帰

情報工学における再帰とは、プログラムのあるメソッドの処理上で自身のメソッドが再び呼び出されている処理の事をいいます。

配列

配列は、各データの要素(値または変数)が連続的に並べられたデータ構造です。各配列は添え字(INDEX)で識別されています。

0グッド

0クリップ

投稿2020/07/03 09:47

編集2020/07/03 10:22

2つの文字列の編集距離を求めるプログラムです。
メモ化を一切せずに再帰を使って編集距離を求めたのですが、計算の重複を避けるために二次元配列memoを導入して同じプログラムを作りたい場合、
編集距離を求める時に

①配列memoに既に記録している場合、それを編集距離とみなす。
②配列memoに記録していない場合、再帰を利用して編集距離を求め、memoに格納する。

のいずれかを実行したいです。既に②は以下の通り完成しているので、①の「配列memo[m][n]に既に求めたい値が存在している場合、それを編集距離とする」をプラスして実装する際どうすればいいかを教えて頂きたいです。

vmax,vminはそれぞれ引数の最大値、最小値、deltaはX[a]==Y[b]の時0、X[a]!=Y[b]の時1を返り値とする関数です。
必要であれば以下のプログラムを変更することも構いません。
よろしくお願いいたします。

C

1int ldmemo(char *X,int m,char *Y,int n){ 2 if( ??? ){ 3 ??? //①の条件を挿入 4 }else if(m>=0 && n>=0){ 5 if(m==0 || n==0){ 6 edit_d=vmax_(m,n); 7 memo[m][n]=edit_d; 8 }else{ 9 candi_edit_d[0]=ldmemo(X,m-1,Y,n-1)+delta(X,m-1,Y,n-1); 10 candi_edit_d[1]=ldmemo(X,m-1,Y,n)+1; 11 candi_edit_d[2]=ldmemo(X,m,Y,n-1)+1; 12 13 edit_d=vmin3_(candi_edit_d[0],candi_edit_d[1],candi_edit_d[2]); 14 memo[m][n]=edit_d; 15 } 16 } 17 return edit_d; 18}

[追記]
問題のURLです。
http://ecei-tohoku.github.io/ppa/kadai3_19268ef8e7e3d19af4abf721821b2baef83ae0e0a69cf66263d8263fcf2c3418cegw/p32.html

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

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

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

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

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

guest

回答1

0

ベストアンサー

最初にmemo[m][n]を全部-1で埋めておくとかすれば、-1でなければ計算した結果であるというのがわかります

投稿2020/07/17 16:05

magf

総合スコア212

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問