2010-01-17から1日間の記事一覧

KMP法のお勉強

だが解説は面倒なのでしない。 maketableさえ覚えればsearchはそれと形が似ているので簡単そう。 #include <cstdio> void kmp_maketable(const char *key, int *table) { table[0]=-1;table[1]=0; int i=2,j=0; while(i==0 || key[i-1]) { if(key[i-1] == key[j]) { </cstdio>…

C++のための即席Makefile

最低限だけ書くと次のようになる。 CXXFLAGS = -O2 -Wall LDFLAGS = -lm all: hello # In Windows, it may be "hello.exe" clean: $(RM) hello CXXFLAGSは、C++コンパイラに対する引数。Cコンパイラに対する引数はCFLAGS。最適化や警告、インクルードディレ…

Dancing Linksを用いたKnuth's Algorithm Xによる「四角に切れ」ソルバーの実装

「四角に切れ」とは以下のような問題である。 あるサイズの格子(将棋盤タイプ)が与えられる。 マスには数字が書かれているか、書かれていない。 格子全体を長方形の集合に分割する。 全ての長方形にちょうど1つずつ数字が入り、かつ長方形の面積がその数字と…