CODE FESTIVAL 2015 決勝【B問題】※TLE ※再帰関数
一番最近のコードフェスティバルのB問題
問題文
ボードゲームにはダイス(サイコロ)を使うゲームが少なくありません。そこで、ダイスについての問題を出したいと思います。
問題: 6 面ダイスを N 個振るとき、ダイスの目の和として出る確率が最も高い値は何か?そのような値が複数ある場合は、そのうち最も小さい値を答えよ。
問題文を読んだ瞬間、再帰関数使って余裕やなと考えて、出力結果があっていたので提出、すると結果は初めて出てきたTLE(Time Limit Exceeded)と返ってきた。どうやら、プログラムの制限時間2秒をオーバーしてしまい、再帰関数では、時間がかかりすぎるようなので非再帰の関数を明日以降考えていきたいと思う。一応以下、ソースコード。コードフェスティバルの提出用のプログラムをそのまま、コピペしたのでインデントは一切行われていない。
- #include <stdio.h>
- int a[6*256];
- void dice_total(int N, int total){
- if(N == 0){ //最後
- a[total]++;
- return ;
- }
- int k;
- for(k = 1; k <= 6; k++){
- total++;
- dice_total(N-1, total);
- }
- }
- int main(void){
- int k, n, N;
- scanf("%d", &N);
- for(k = 0; k < 6*N; k++){
- a[k] = 0;
- }
- dice_total(N, 0);
- int i = 0;
- for(k = 0; k <= 6*N; k++){
- // printf("a[%d] = %d\n", k, a[k]); //デバッグ用
- if(a[k] > i)
- i = a[k];
- }
- for(k = 0; k <= 6*N; k++){
- if(a[k] == i){
- printf("%d\n", k);
- break;
- }
- }
- return 0;
- }
それはそうと、ネットにソースコードをあげることが増えてきたので
そろそろD-Wコードを読んだ方が良いかもしれない。
ようやく、自前のmacでEclipseが開けるようになった。【統合開発環境Eclipse】
Atcoderの問題を解こうと思い立ち、せっかくだからもうそろそろ、javaでも一人歩きしてプログラミングができる程度には成長しただろう(まだ、java歴1ヶ月だが…w)と楽観的にネットでEclipseを拾いファイルを解凍し(下図のEclipse.app)「よし!ソースコードを書こう!!」と意気ごんだわけで…
こいつ↑をクリック、すると、英語だったので何て書いてあるかは忘れてしまったが、日本語訳すると
「あなたの、macではversion1.7.0以降の java が要求されています。」みたいなことが表示されて、こいつを開くことができなかった。
正直、プログラミングに関しては1年半勉強しているので人並み?にはできるはずなのであるが、PATHを通すとかそのような知識は授業でc言語を用いてゲームを作った際のSDLライブラリへのPATHを通した経験があるぐらいのなまじ知恵なのでまったくわからない。
結局、ネットでいろいろと調べた結果、ターミナル上で「java -version」とゆうコマンドをうつと、
seiya-no-MacBook-Pro:A seiya$ java -version
java version "1.6.0_65"
Java(TM) SE Runtime Environment (build 1.6.0_65-b14-462-11M4609)
Java HotSpot(TM) 64-Bit Server VM (build 20.65-b04-462, mixed mode)
↑のように出力される。
どうやら、この出力から読み取れることはこのPCの javaのデフォルトがversion "1.6.0_65"であるらしいので
このversionを1.7.0以降に変えることができれば、俺の勝ちである。
ちなみに、さきほどのEclipse.appはversion"1.8.0_66"が必要であるので、javaの環境もそれ相応のversionにまで、あげる必要がある。
ちなみに、このEclipse.appがどのversionが求められているかは、macのシステム環境設定で
一番下にjavaとあるのがわかる。
これをクリックすると、一定時間後にjavaコントロールパネルとゆうものが表示される
上の5つの項目の中からJavaとゆう項目を選択そして、javaのバージョンを表示と書いてあるので、表示させると
このように表示されるので、このPCに必要なjava versionは"1.8.0_66"であることがわかる。
よって、このPCのjavaのバージョンを更新するために必要なのがJava Development KitことJDK(いかにも、俺のjavaを強くさせてくれる感じがするw)をダウンロードすることである。
ここからは、Java SE(Standard Edition)をインストールしていく。下リンクのページは日本語版
http://www.oracle.com/technetwork/jp/java/javase/downloads/index.html
これをダウンロードするには英語版のサイトにとばなければダウンロードできないので仕方なく、英語版サイトへ…。
http://www.oracle.com/technetwork/java/javase/downloads/index.html
このページのこれ↓をクリックしてダウンロード開始
あとは、これを手順に従ってインストールしていく。途中で、なんちゃらのクリーンみたいな言葉がちらっと見えたから今までのPATHを消して、あたらしいPATHを通してるのかな?とも、思った。
なにはともあれ、これでいけたんじゃね!と思い、ターミナル上でもう一度「java -version」を入力。すると、
seiya-no-MacBook-Pro:A seiya$ java -version
java version "1.8.0_66"
Java(TM) SE Runtime Environment (build 1.8.0_66-b17)
Java HotSpot(TM) 64-Bit Server VM (build 25.66-b17, mixed mode)
と、バリバリいい感じにversionが"1.8.0_66"に変更されていて感動。
この状態で、こいつ↓をクリック
開きました!!感動!!これで、ようやく、Eclipseを自宅でも使うことができる!!
授業後に残って課題をせずとも、自宅でできるようになったので、12月からの社畜生活の良いスタートダッシュをきる準備がまたひとつ整った。
正直、俺がここに書いていることがあっているかわからないので、訂正がある場合は指摘を頂戴したい。
神戸ITフェス【前半】
今日は、神戸ITフェスティバルへ行ってきた。前々から気になっていた人工知能についての偉い人の興味深い話が聞けて当面の目的は果たされた。今日初めて聞いたハッカソンとゆう分野?に関しては、何やってるかはほぼ全くわからなかったがソフトを極めると、ああなるのだとゆうことがわかった。他にもVR、セグウェー、ウイルスラリーとゆう出し物も楽しめて4限のつまらない授業を休んでよかったと感じている。特に、ウイルスラリーでは、ラリーを終わらせ、最後に出される問題も解けると、ガラガラをまわせるのだが、まさかの、3等の日本酒があたったので20歳になったらおいしくいただきたいと思う。それはそうと、るろうに剣心を3週連続で録り逃した自分の学習能力のなさにも脱帽した。