基本情報技術者
次のアルゴリズムの問題の質問です。
要素番号が0から始まる配列TANGOがある。n個の単語がTANGO[1]から
TANGO[n]に入っている。
図は、n番目の単語をTANGO[1]に移動するために、TANGO[1]からTANGO[n-1]の単語を順に一つずつ後ろにずらして単語表を再構成する流れ図である。
aに入れる処理として、適切なものは何ですか?
※ここで言ってるaとはループで挟まれている、
Tango[i]→Tango[i+1] です。
ここでわからないのが、ループの条件では減らしている一方で
配列の要素番号を増やしてる点です。
また、解説で、上から単語を移動すると、移動していない単語が
消えるが、下から移動すると、移動済みなので、問題ないという部分が理解できないです。
長々となりましたが、ご教授宜しくお願い致します。
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
回答3件
0
ベストアンサー
要素番号は増やしていません。
Tango[i] は Tango[i + 1] の前の要素です。
例えば次の配列
Tango = ["", "apple", "orange", "grape"]
では、Tango[0] は "" で Tango[1] は "apple" となりますが、ここで i = 2 の時、Tango[i] = Tango[2] = "orange" となり、Tango[i + 1] = Tango[3] = "grape" となります。
この時 Tango[i] → Tango[i + 1] の操作を行うと、配列は次のようになります。
Tango = ["", "apple", "orange", "orange"]
追記
書き間違えていたところを修正しました。
投稿2017/03/02 10:57
編集2017/03/02 11:06総合スコア28660
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/03/13 09:13
2017/03/13 10:31
2017/03/13 11:24
2017/03/14 00:15
2017/03/14 00:35
2017/03/14 00:42
2017/03/14 00:47
2017/03/14 00:50
2017/03/14 01:14
2017/03/14 01:21
2017/03/14 02:44
2017/03/14 03:14
2017/03/14 04:15 編集
0
わかりにくい
基本を学ぶためのものとしては不親切な解説だなぁ
僕なら本なげそ。。
★処理の流れはこんな感じになると思います★
①N番目を1番目に移動する。
↓
②N番目が移動後に空っぽになる。
↓
③Nの一つ前の要素(N-1=i)に格納されている単語は、一つ後ろの要素(i+1)に移動する。
ここでわからないのが、ループの条件では減らしている一方で
配列の要素番号を増やしてる点です。
これは上の③のことだと思いますよ。
移動したいN番目を移動したら、N番目が空っぽになったので、その一つ前の要素(N-1)をNに移動する。
そうすると今度は、N-1が空っぽになるので、N-2をN-1に移動する。
これはNという移動元の要素が基点なので引き算になっていますが、移動元と移動先の表現なだけで
「N-2をN-1」へ移動
これは
「iをi+1」へ移動
と同じですよね。(対象の変数の一つ後ろ、という表現ですね)
つまり
「ループの条件では減らしている」
というのはN番目から前へ処理対象の要素を移動させる、という意味で正しいです。
また、
「配列の要素番号を増やしてる」というのも、「増やす」という表現が少し分かりづらいですが
対象の要素(i)に格納された値(単語)を一つ後ろの要素(i+1)に移動させる、という事なので
各単語の格納されている要素(i)を増やす(i+1に移動)という意味では正しいです。
また、解説で、上から単語を移動すると、移動していない単語が
消えるが、下から移動すると、移動済みなので、問題ないという部分が理解できないです。
これは。。。むむむ。。
「上から単語を移動する」 → i番目の値をiより小さい方向へ移動
「下から移動する」 → i番目の値をiより大きい方向へ移動
ということをいっているのではないかと思います。
そういう意味では正しいと思います。
ただ、わかりにくい。。。
何かの参考書の類ですかね。
「上から」とか「下から」とか「主語」がない曖昧な表現だらけですね。
「n番目の単語をTANGO[1]に移動する」と「単語は消えては駄目」という要件なので
TANGO[1]は空っぽで「n番目の単語をTANGO[1]に移動」した時点で、TANGO[1]は空っぽにならないよね。。
とか考えしまいました。
間違っていたらごめんなさい。たぶんあっていると思います。
投稿2017/03/03 01:28
総合スコア76
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/03/13 09:01 編集
2017/03/16 02:56
0
配列の数4で 配列番号 3 にものを配列番号 1 に移動させる例で考えてみます。
D を 配列番号 0 に移動させたあと、左から右に移動していった場合 0 1 2 3 [ ] [B] [C] [D] // 配列番号 3 の D を配列番号 0 にコピー [D] [B] [C] [D] // 配列番号 1 の B を配列番号 2 にコピー [D] [B] [B] [D] // C が消えてしまった! // 配列番号 2 の B を配列番号 3 にコピー [D] [B] [B] [B] // D が消えてしまった! // 配列番号 0 の D を配列番号 1 にコピー [D] [D] [B] [B]
D を 配列番号 0 に移動させたあと、右から左に移動していった場合 0 1 2 3 [ ] [B] [C] [D] // 配列番号 3 の D を配列番号 0 にコピー [D] [B] [C] [D] // 配列番号 2 の C を配列番号 3 にコピー [D] [B] [C] [C] // 配列番号 1 の B を配列番号 2 にコピー [D] [B] [B] [C] // 配列番号 0 の D を配列番号 1 にコピー [D] [D] [B] [C]
投稿2017/03/02 13:47
総合スコア22324
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/03/03 00:48
2017/03/03 00:58
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。