備忘録

Haskellでフィボナッチメモ化再帰

さっき挙げたプログラムだとfib(40)ぐらいでもう数十秒ぐらいかかり、だいぶ遅いです。 メモ化再帰を使って高速化すればいいじゃん(いいじゃん)と思いましたが、Haskellの性格上、なかなか実装は困難を極めました。ここにメモ化再帰フィボナッチをメモして…

はてぶで数式を書く

動的計画法のアレを書いてて数式がはてぶで書けたらいいなと思ったらどうやらTexが書けるようで k's diary様のサイトを参考にしました↓ TeXで数式をはてなブログに表示する - k's diaryで数式の表示 DP\left\[k\right\]\left\[n\right\] = \displaystyle\sum…

K-means法と画像の階調分類

K-means法とは、クラスタリングと呼ばれる、類似したデータをいくつかのグループに分類するアルゴリズムの一つです。このアルゴリズムを利用して、画像の減色処理を行うことができます。 この画像処理のコードについて、昔作ったjavaのコードですが引っ張り…

AtCoder-Typical DP Contest C問題をやり申した

C問題もやり申した。 以下問題文 C: トーナメント - Typical DP Contest | AtCoderProblem Statement 2K 人が参加するトーナメントがある。このトーナメントでは以下の形式で試合を行う。 第 1 ラウンドでは、1 と 2、3 と 4、… が試合を行う。 第 2 ラウン…

AtCoder-Typical DP Contest B問題をやりました

前回に続いてB問題も解いてみました。 問題文以下 B: ゲーム - Typical DP Contest | AtCoder Problem Statement すぬけ君とすめけ君がゲームをしている。最初に、二つの山がある。左の山には A 個の物が積まれており、上から i 番目のものの価値は ai であ…

AtCoder-Typical DP Contest A問題を解きました

AtCoderのTypical DP ContestのA問題を解いてみましたAtCoderというのは、毎週アルゴリズム系のプログラミングコンテストを開催している所謂競プロの主催者です。 このコンテストの問題は、コンテスト後も公開されているので練習がてら解くことができます。 …

キュー

キュー #include<stdio.h> #include<stdlib.h> typedef struct cell{ int id; struct cell *next; }Cell; typedef struct que{ Cell* front; Cell* rear; }Queue; Queue *make_queue() { Queue *que = malloc(sizeof(Queue)); que->front = NULL; que->rear = NULL; return que;</stdlib.h></stdio.h>…

双方向連結リストのインサートソートの書き直し

前記事で使ったダブルポインタを利用して書き換えました #include<stdio.h> #include<stdlib.h> #include<time.h> #define MAX 30 typedef struct link_tag{ struct link_tag *next; struct link_tag *prev; int id; }linked_list; void delete_element(linked_list*,int); void insert_</time.h></stdlib.h></stdio.h>…

単方向連結リストのインサート?ソート

すでにソートされている単方向連結リストに対して、ソートされている状態が崩れないように 新しい要素を挿入するプログラムを書きました #include<stdio.h> #include<stdlib.h> #include<string.h> #include<time.h> #define MAX 100 typedef struct link_tag{ struct link_tag* next; int id; }li</time.h></string.h></stdlib.h></stdio.h>…

3種のオセロAI

前作ったオセロのAIとかにちょっと改良を加えてみました ソースは続きから

双方向リストのインサートソート

タイトル通りなんですけどだいぶ苦労しました... 以下コードです #include<stdio.h> #include<stdlib.h> #include<time.h> #define MAX 30 typedef struct link_tag{ struct link_tag *next; struct link_tag *prev; int id; }linked_list; void delete_element(linked_list*,int); void</time.h></stdlib.h></stdio.h>…

2分木を利用したコンソールで動く電卓

前回の続きで、電卓が完成しました! #include<stdio.h> #include<string.h> #include<stdlib.h> #include<math.h> void blacket_cut(char[]); enum type{value,symbol}; typedef struct tree_tag{ struct tree_tag *right; struct tree_tag *left; enum type t; int id; char formula[80]; }node;</math.h></stdlib.h></string.h></stdio.h>…

二分木を利用した構文解析

二分木が熱い! 数式の構文解析をするための二分木構造をつくってみました まだ書きかけですが... #include<stdio.h> #include<string.h> #include<stdlib.h> void blacket_cut(char[]); enum type{value,symbol}; typedef struct tree_tag{ struct tree_tag *right; struct tree_tag *lef</stdlib.h></string.h></stdio.h>…

二分順序木を使ったソート

二分順序木を扱うコードをつくってみました。 二分木に対して、右の子の値 >= 親の値、左の子の値 通りがけ走査をすることで値のソーティングができます。 #include<stdio.h> #include<stdlib.h> #include<time.h> #define MAX 100 //ノードの構造体 typedef struct binaly_tree{ int id</time.h></stdlib.h></stdio.h>…

二分で書けない二分探索

C言語で二分探索をつくってみました #include<stdio.h> #include<time.h> #include<stdlib.h> #define MAX 100 int binaly_search(int array[],int first,int last,int n) { int mid = (first+last)/2; if(first+1 == last){ if(array[last] == n) return last; else return -1; } else </stdlib.h></time.h></stdio.h>…

コードの貼り付け

はてブロでソースコードに色をつけて表示する備忘録">||"と"|| #include<stdio.h> int main(void) { printf("Hello, world!"); return 0; }さらに">|lauguage|"と"|| lauguageには各言語、ex) c,java,pythonなどが入る #include<stdio.h> int main(void) { printf("Hello, worl</stdio.h></stdio.h>…