学校の先生から、アルゴリズムは慣れだ慣れだと言われて、ひたすら問題を解くのですが、なにかしっくりきません。
時々、ここはなんでこういう事をしているのか分からないという所が出てきます。
例えば、基本情報技術者試験平成16年度春期午後のこの問題
http://www.rs.kagu.tus.ac.jp/infoserv/j-siken/H1 …
において、擬似言語中の上から13行目の
i: a_idx - span_idx , i < b_idx - a_idx , 1
では、教科書どおり?トレースしていくと
a_idx - span_idx
なんかは始めは0なんで、なぜ0としないでこんな事をやっているのかなあ・・・と頭を抱えてしまいます。
こうしている理由は、次々とループしていくとiの初期値は0でないときも出てくるからかな?とは想像できるのですが、
a_idx も span_idxもそれに伴って変化していくので
、なんでこんな式を使うの???
と頭がごちゃごちゃになってしまいます。
何か法則的なことがある程度はあるような気がするのですが・・・。
ごく初歩的な例で行くと、iは何の変数かといった時にプログラム中にT(i)などとあると、配列の添え字なんだなと分かる、みたいな事です。
どのようにして考えていけばいいのでしょうか?
何か法則みたいなものをご存知の方も、教えていただけないでしょうか?
よろしくお願いします。
A 回答 (3件)
- 最新から表示
- 回答順に表示
No.3
- 回答日時:
>アルゴリズムは慣れだ慣れだと言われて、ひたすら問題を解くのですが、なにかしっくりきません
慣れはものすごく必要ですが
問題をひたすら解くだけのそんな知識役に立ちません。
実際にプログラミングをしてみないと無意味です。
それにその勉強方法でとった資格なんて資格の肩書きだけで
なんの役にも立ちません。
科学の授業も黒板で説明されるよりは実験して
試した先生に言われることでなくて
自分考えてでりいろいろ試行錯誤したほうが覚えやすいでしょ?
おっしゃるとおりで、私もそう思っています。
授業としても4月から一回もプログラム実習がなく、黒板ばっかりで、かなり無味乾燥です。
ただ、学校では、「来月10月の国家試験で通らないと、来年の就職活動に間に合わない可能性がある。
取っているのと取っていないのとでは就職率が全く異なってくる」、と発破をかけられます。
私としては、基本情報の試験のための勉強よりもJAVAの方が好きだし資格SJCシリーズの方をどんどん取っていきたいのですが(組むことを楽しみながら)、
資格じゃないと言っておきながら結局資格(この場合は基本情報)を持っている人を企業としては採用しているという現実を学校側に突きつけられると、従わざるを得ません。
現実とは、あくまでうちの学校から就職した時の現実としてはという意味です。
大学を出ればいいってもんじゃないと言っておきながら、ほとんど一流大学しか採用しない一流企業と一緒です。
もう少しPCに触れ、色々と試しながら楽しみながら学んでいく事を私としても望んでいるのですが、
時間的に厳しいものがあるのでやむを得ない感じです・・・。
また、自分でプログラムをスイスイ組んでいけるレベルまで達していませんし、コンピュータの勉強も今年4月に始めたばかりですので・・・^^;
No.2
- 回答日時:
No1でちょっと引っかかっていたのですがβのところは間違いで、
$output[$write_idx-1]>$output[$write_idx]が正解でした。
マージソートは名前しか知らなかったので・・勉強になりました A^-^;
あとは、sizeが2^2n(2,4,8,16・・)以外のときはうまく動かないのですが、
その辺りどう改造すればいいかなど考えるのが面白いと思います
わざわざプログラムまで組んでいただいてありがとうございます!!!
やっぱり実際に入力してみると良く分かるんですね。
私はJAVAを少しかじったぐらいしかプログラムをやったことがないのですが、なんとなく似通っていたので、perlも少し分かりました。
>あとは、sizeが2^2n(2,4,8,16・・)以外のときはうまく動かないのですが、
その辺りどう改造すればいいかなど考えるのが面白いと思います
ほぉ~!こんな条件が裏に隠れていたとは思いもしませんでした。実際動かしてみると色々と出てくるのですね。
試験まであと一ヶ月もないぐらいなので、ちょっとプログラムを入力して理解・・・というのはきついので・・・、やはり問題の入力データの例を実際に当てはめて流れを追っていくしかないのですかね?
なんとなくやっていることはわかるのですが、
データの例を当てはめてトレースしていっても
それぞれの変数がどういう役割をしているのかというのが、どうもしっくりこないんです。
マージソートを知っている→試験に出る
であればいいのですが、問題は色々と組み合わさったものが出て試験場で考えなくてはならないので、
なにか解く手順のようなものがあればいいのですが。
どこを見るといい、とか。
pipipi523さんなら、
http://www.rs.kagu.tus.ac.jp/infoserv/j-siken/H1 …
の問題を出されたとしたらどう解いていかれますか?
No.1
- 回答日時:
この問題で重要なのはマージソートの考え方とその実現方法です。
たぶん。まずソートの考え方を理解する必要がありますが、
図を見ても解りにくいので実際に値の変化を見ながら追っていくのが理解し易いでしょう
しかし人の作ったプログラムを解析しているだけでは理解し難いので、
実際に入力して動かして見るのが良いと思います(動かしたり改造してたりすると理解度が違います)
例えばPerlで入力・・
実際にやってみました
(確認に使ったツール)
http://www.forest.impress.co.jp/article/2001/09/ …
@input=(47,33,68,55,74,89,25,10);#入力
$size=@input;
#問題
$span_size=2;
@output=@input;
while($span_size<=$size){
$span_idx=0;
$write_idx=0;
$ordered = 'true';#α
while($span_idx<$size){
$a_idx=$span_idx;
$b_idx=$span_idx + $span_size/2;
#for($i = $a_idx-$span_idx ; $i < $b_idx ; $i+=1){
for($i = 0 ; $i < $b_idx ; $i+=1){
$temp[$i]=$output[$i + $span_idx];
}
$a_yet='true';
$b_yet='true';
while($a_yet eq 'true' || $b_yet eq 'true'){
if($b_yet eq 'false' || ($a_yet eq 'true'
&& $b_yet eq 'true' &&
$temp[$a_idx - $span_idx] <= $output[$b_idx])){
$output[$write_idx] = $temp[$a_idx - $span_idx];
$a_idx = $a_idx + 1;
if($a_idx >= $span_idx + $span_size/2){
$a_yet = 'false';
}
}else{
$output[$write_idx] = $output[$b_idx];
$b_idx = $b_idx + 1;
if($b_idx >= $span_idx + $span_size){
$b_yet = 'false';
}
}
if($write_idx>0){#β
if($temp[$write_idx]>$output[$wtite_idx]){
$ordered='false';
}
}
$write_idx = $write_idx + 1;
}
$span_idx = $span_idx + $span_size;
}
#γ
if($ordered eq 'true'){
$span_size=$size;
}
$span_size = $span_size * 2;
}
#問題ここまで
print "END = ".join(',',@output)."\n";#結果確認
i: a_idx - span_idx , i < b_idx - a_idx , 1
は、直前で、
a_idx ← span_idx
と、なっているので0にしかならないですね
i: 0 , i < b_idx - a_idx , 1
と同等です
どっちでも正しく動くので間違いではないですが・・・ミスでしょう。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(プログラミング・Web制作) pandasでまとめてインデックスを削除するにはどうすればいいですか? たとえば、以下のプログラムで 1 2022/07/31 23:09
- Visual Basic(VBA) 別シートから年齢別の件数をカウントしたいの続き 5 2023/01/24 00:16
- Visual Basic(VBA) 別シートから年齢別の件数をカウントしたい 6 2023/01/23 12:00
- Visual Basic(VBA) For~Nextステートメントの終了条件について 1 2023/01/08 18:36
- 統計学 IPCAで次元削減された画像の表示 1 2023/01/05 09:54
- 情報処理技術者・Microsoft認定資格 基本情報技術者試験について知りたい! こんにちは! 今年基本情報技術者試験を受験するつもりです。 今 2 2023/07/17 21:23
- その他(学校・勉強) スシロー “ペロペロ高校生” は、日本の教育の失敗ですね? 20 2023/02/08 07:08
- 仕事術・業務効率化 効率的な勉強方法(分野問わず)を教えてください 1 2023/08/16 01:33
- その他(IT・Webサービス) ホームページにカウント数を表示する 2 2022/10/28 10:37
- 中学校 理科だけが極端に苦手 5 2022/09/10 14:18
関連するカテゴリからQ&Aを探す
医師・看護師・助産師
薬剤師・登録販売者・MR
医療事務・調剤薬局事務
歯科衛生士・歯科助手
臨床検査技師・臨床工学技士
理学療法士・作業療法士・言語聴覚士
臨床心理士・心理カウンセラー・ソーシャルワーカー
介護福祉士・ケアマネージャー・社会福祉士
弁護士・行政書士・司法書士・社会保険労務士
フィナンシャルプランナー(FP)
中小企業診断士
公認会計士・税理士
簿記検定・漢字検定・秘書検定
情報処理技術者・Microsoft認定資格
TOEFL・TOEIC・英語検定
建築士
インテリアコーディネーター
宅地建物取引主任者(宅建)
不動産鑑定士・土地家屋調査士
マンション管理士
電気工事士
美容師・理容師
調理師・管理栄養士・パティシエ
シェフ
保育士・幼稚園教諭
教師・教員
国家公務員・地方公務員
警察官・消防士
その他(職業・資格)
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・プリン+醤油=ウニみたいな組み合わせメニューを教えて!
- ・タイムマシーンがあったら、過去と未来どちらに行く?
- ・遅刻の「言い訳」選手権
- ・【大喜利】【投稿~11/12】 急に朝起こしてきた母親に言われた一言とは?
- ・好きな和訳タイトルを教えてください
- ・うちのカレーにはこれが入ってる!って食材ありますか?
- ・好きな「お肉」は?
- ・あなたは何にトキメキますか?
- ・おすすめのモーニング・朝食メニューを教えて!
- ・「覚え間違い」を教えてください!
- ・とっておきの手土産を教えて
- ・「平成」を感じるもの
- ・秘密基地、どこに作った?
- ・【お題】NEW演歌
- ・カンパ〜イ!←最初の1杯目、なに頼む?
- ・一回も披露したことのない豆知識
- ・これ何て呼びますか
- ・初めて自分の家と他人の家が違う、と意識した時
- ・「これはヤバかったな」という遅刻エピソード
- ・これ何て呼びますか Part2
- ・許せない心理テスト
- ・この人頭いいなと思ったエピソード
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・ハマっている「お菓子」を教えて!
- ・【大喜利】【投稿~11/1】 存在しそうで存在しないモノマネ芸人の名前を教えてください
- ・好きなおでんの具材ドラフト会議しましょう
- ・餃子を食べるとき、何をつけますか?
- ・あなたの「必」の書き順を教えてください
- ・ギリギリ行けるお一人様のライン
- ・10代と話して驚いたこと
- ・つい集めてしまうものはなんですか?
- ・自分のセンスや笑いの好みに影響を受けた作品を教えて
- ・【お題】引っかけ問題(締め切り10月27日(日)23時)
- ・大人になっても苦手な食べ物、ありますか?
- ・14歳の自分に衝撃の事実を告げてください
- ・【大喜利】【投稿~10/21(月)】買ったばかりの自転車を分解してひと言
- ・ホテルを選ぶとき、これだけは譲れない条件TOP3は?
- ・家・車以外で、人生で一番奮発した買い物
- ・人生最悪の忘れ物
- ・【コナン30周年】嘘でしょ!?と思った○○周年を教えて【ハルヒ20周年】
- ・あなたの習慣について教えてください!!
- ・都道府県穴埋めゲーム
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
基本情報技術者試験(FE)と日...
-
Excelの「アクセシビリティ 検...
-
至急回答お願いいたします。 1...
-
ITパスポート(iパス)と情報検...
-
ITパスポートの資格は、どのよ...
-
「基本情報技術者試験」について
-
8ビットのグレイ符号10110110お...
-
【国家資格】基本情報技術者試...
-
ITパスポートと基本情報技術者...
-
【資格】ITパスポート(iパス)...
-
基本情報技術者試験と危険物取...
-
55の2進数がわかりません 11...
-
情報処理検定について質問です...
-
ITパスポート試験と危険物取扱...
-
P検準2級もってます。 タイピン...
-
通常はプリンターAで印刷、指定...
-
2進数の問題を教えてください。
-
エクセルと簿記の関係(事務員)
-
浮動小数点数の形式について あ...
-
資格に合格したら給与を上げる...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
応用情報技術者試験-午後筆記に...
-
トレースの意味を教えてください
-
流れ図がよくわかりません。
-
平成23年秋の午後アルゴリズ...
-
平成21年秋期 基本情報 問8 ...
-
情報技術者試験の午後問題で落ちる
-
表計算の難易度が、毎年上がっ...
-
普通情報技術者の勉強をしてい...
-
ファイヤーワークスMXでビット...
-
情報技術検定3級について質問...
-
トレサビリティー??
-
擬似言語 素朴な疑問
-
大滝みや子先生 かんたんアル...
-
平成18年 秋期 基本情報技術者 ...
-
【2day】と【2days】の違いを教...
-
ACCESSで空白のデーターをクエ...
-
30歳未満とは30歳は含まれない...
-
耐圧試験と気密試験
-
ボストン茶会事件
-
障害者手帳をもってても宅地建...
おすすめ情報