2018-02-01から1ヶ月間の記事一覧

4.2 スタック(手動編)

std::stack を使うのはあんまりな気がしてきたので、一応手動バージョンを書きます。エラー処理とかは手抜きです。 #include <iostream> #include <array> #include <string> #include <sstream> using namespace std; static bool isOperator(const string& st) { return st[0] == '+' || st[0</sstream></string></array></iostream>…

4.3 キュー

std::queue バージョン。 #include <iostream> #include <queue> using namespace std; struct Process { string name; int time; }; static void inputProcess(queue<Process>& processQueue, int n) { Process in; for (int i = 0; i < n; i++) { cin >> in.name >> in.time; process</process></queue></iostream>…

4.2 スタック

std::stack を使えば良いのかな?と思って書いたコードです。 #include <iostream> #include <string> #include <stack> #include <sstream> using namespace std; static bool isOperator(const string& st) { return st[0] == '+' || st[0] == '-' || st[0] == '*' || st[0] == '/'; } int ma</sstream></stack></string></iostream>…

3.6 シェルソート

本書に「この問題はやや難しいチャレンジ問題です」とある通り、前半最大の山場でした。 #include <iostream> #include <array> #include <vector> #include <cmath> using namespace std; static void printArray(int A[], int N) { for (int i = 0; i < N; i++) { cout << A[i] << endl; } </cmath></vector></array></iostream>…

3.5 安定なソート

説明に従って愚直にコーディング。 #include <iostream> #include <algorithm> #include <array> using namespace std; struct Card { char suit; int value; bool operator==(const Card& rhs) const { return this->suit == rhs.suit && this->value == rhs.value; } }; static void pr</array></algorithm></iostream>…

3.4 選択ソート

いつもどおりソースコードを。 #include <iostream> #include <algorithm> #include <array> using namespace std; static void printArray(int A[], int N) { for (int i = 0; i < N; i++) { cout << (i != 0 ? " " : "") << A[i]; } cout << endl; } static void inputArray(int A[], i</array></algorithm></iostream>…

AIZU ONLINE JUDGE

ここまでのお題はローカルで実行結果を確認してましたが、そもそもオンラインジャッジをまったく受けてなかったので、急遽登録&回答を送信してみました。結果としては全部 OK でした。ということで、今後はオンラインジャッジをベースに進めていきます。> A…

3.3 バブルソート

まずは冒頭の説明をそのままコーディングします。 #include <iostream> #include <array> #include <cstdio> using namespace std; static void printArray(int A[], int N) { for (auto i = 0; i < N; i++) { cout << (i != 0 ? " " : "") << A[i]; } cout << endl; } static int bub</cstdio></array></iostream>…

3.2 挿入ソート

本章では、冒頭の説明の中でアルゴリズムが文章で明示されてますので、それをそのまま実装してみます。 #include <iostream> #include <array> #include <cstdio> void printArray(int A[], int N) { // カンニング1 for (auto i = 0; i < N; i++) { std::cout << (i != 0 ? " " : ""</cstdio></array></iostream>…

2.5 導入問題:回答例

まずは写経から。いきなり写経はどうなの?とは自分でも思いますがとりあえず。 #include <iostream> #include <algorithm> #include <cstdio> int main(void) { int n; std::cin >> n; int max = -1 * 1000000000; int now, ri, min; std::cin >> min; for (auto i = 1; i < n; i++) { st</cstdio></algorithm></iostream>…

2.5 導入問題

さて導入問題から学習開始です。しかし、いきなりですが、「こんなことでハマるのは自分くらいでは?」という状況に陥ったので、ありのままをお伝えします。(書籍内の文章の具体的な説明は端折ります) 入力例2: 3 4 3 2 ↑この入力例、書籍内では縦並びな…

書籍「プログラミングコンテスト攻略のためのアルゴリズムとデータ構造」

アルゴリズムを効率的に再勉強するには?と、自分なりに考えた結果、プログラミングコンテスト攻略のためのアルゴリズムとデータ構造 という書籍を購入しました。 こちらはプログラミングコンテスト向けの入門と実践的なものですが、オンラインジャッジを使…

再勉強したい項目

自分が弱点・苦手と思っている要素を列挙します。 アルゴリズム全般 UML 状態遷移図 コラボレーション図 デザインパターン 基本的なパターン(Singleton、Observer、Facadeなど)以外ほとんど全部 ジェネリックプログラミング 関数型プログラミング (あとで…

現状と目標

なぜブログを始めるのか?どういうブログにするのか?という点についてもう少しまとめときます。 動機と目標 自分のプログラマレベルへの危機感 いまは食えてはいるが、転職先を選び放題みたいなレベルではない 職業プログラマとして、これなら大丈夫かな?…

プログラマ的な記事を開始します

はじめまして。自分はプログラマとして働くことで日々の糧を得ている者です。しかし、最近になって特にその能力に限界を感じ始めているため、ここらで気合を入れ直そうと、この場を使ってプログラミングの再勉強をすることにいたしました。よろしくお願いい…