// 高橋グラフクラスライブラリー 工学者社用カスタマイズバージョン(H14.4.18) // 順列クラス ヘッダーファイル #if !defined TKPERMUTATE #define TKPERMUTATE #define PMAX 12 typedef unsigned char uchar; class TKPermutate { int Size; // 順列の大きさ(PMAX以下) int Fact[PMAX]; // 1〜PMAXの階乗 public: //**** 基本的な機能 ******* TKPermutate(); // コンストラクター ~TKPermutate(); // デストラクター int GetFact(int i); // 指定された数の階乗を返す(1以上PMAX以下) int SetSize(int sz); // 次数の設定 int GetSinglePerm(int num,uchar* p); // 指定された数に対する順列を返す int GetNum(uchar* p); // 指定された順列の番号を返す // N−クイーン問題関連 int IsQueen(uchar* ucp);// 指定された順列がクイーン問題の解であるかどうか判定 // 順列変換 int FormatDigit(uchar * in, char * out,char kugiri); // ヘルパー関数 private: int Check(uchar * p,char len=0); // 順列チェック }; #endif