プログラミング食堂

プログラミング食堂

プログラミング初心者・中高生向けにプログラミング・IT・IPA国家試験などの情報を発信します!自作フローチャートを無償で公開・配布しています!

MENU

【フローチャート】組み合わせ問題

f:id:TBSten:20210410232953p:plain

今回は組み合わせ問題を作りました!

とある遊園地での出来事、「どのアトラクションに乗ればいいかが分かんない!」今回のプログラムはそんなときに使うプログラムです(意味不明)。

与えられたものの中からいくつか取り出し、条件にあう最適なものを取り出す、といった処理になっています。そのために全パターンを試していくといった処理があります。

【流れ図】

フローチャートセット

↓↓↓下のリンクからダウンロード↓↓↓
Amusement.zip - Google ドライブ


コメント

全ての組み合わせを試していくという処理は実は2種類の方法で実装できます。関数の再帰を利用した方法(今回はこちら)と、繰り返しをめちゃくちゃ使う方法です。後者は繰り返しが何重にもなるので、前者の方が優れた方法といえそうです。

ある日似たような問題を考えた時に、自分ははじめ繰り返しを何重にも重ねる方法しか思いつきませんでした笑笑。地獄の10重ループは今でも覚えています。。。

アドバイス

問題にするには結構な良問なんじゃないでしょうか。例えば問題中には「maxHappinessという配列の中の数を合計する」といった、変数・配列の名前には沿わない処理が出てきたり、組み合わせを求めるためのloop関数の引数は要チェックです。ぜひ参考にどうぞ!!

フローチャートセットについて

この記事ではフローチャートを掲載するだけでなく、実際にゲームとして遊べるように、Java言語で作成したプログラムを、フローチャートの画像とともに配布しています。記事のリンクをクリックするとGoogleドライブが開くので、画面上側(たぶん)のダウンロードボタンを押してダウンロードしてください。ゲームの起動方法などはReadMe.txtファイルを参照してください。利用規約については以下ページをご覧ください。

当ブログが配布するコンテンツの利用規約について - プログラミング食堂

何か質問があればコメントや連絡してください!

今日の余談

高校時代、先生にJavaで全組み合わせを求める問題を出されたことがあって、下みたいにただひたすらにfor文を重ねてたのを覚えています。

for(int a = 0;a < 10;a++){
  for(int b = 0;b < 10;b++){
    for(int c = 0;c < 10;c++){
      for(int d = 0;d < 10;d++){
        for(int e = 0;e < 10;e++){
          : : :
          : : :
          : : :
        }
      }
    }
  }
}

こんな読みにくいコード、皆さんは書かないようにしてくださいね。。。笑

作成者

TBSten(当記事管理者)

この記事が参考になったらぜひ高評価☆よろしくお願いします!