#include <iostream> #define DefaultSize 9 using namespace std; class Grial { public: Grial(int sz=DefaultSize) { visted = new bool [sz]; data = new int [sz]; size = sz; for(int i=1;i<=sz;i++) { visted[i]=0; } } bool check(int a[]) { if( ((data[1]+data[2]+data[3])== (data[4]+data[5]+data[6]))&& ((data[4]+data[5]+data[6])== (data[7]+data[8]+data[9]))&& ((data[1]+data[4]+data[7])== (data[2]+data[5]+data[8]))&& ((data[2]+data[5]+data[8])== (data[3]+data[6]+data[9]))&& ((data[1]+data[2]+data[3])== (data[1]+data[5]+data[9]))&& ((data[1]+data[2]+data[3])== (data[3]+data[5]+data[7]))) return true; return false; } void Insert(int start) { if(start==size+1) { int k = 0; if(check(data)) { for(int i=1;i<=size;i++) { cout<<data[i]; k++; if(k%3==0)cout<<endl; } cout<<"--------------------"<<endl; } } else { for(int i=1;i<=size;i++) { if(visted[i]==0) { data[start]=i; visted[i]=1; Insert(start+1); visted[i]=0; } } } } private: int size; bool *visted; int *data; }; int main() { Grial g(9); g.Insert(1); return 0; }
结果是:
2 7 6 9 5 1 4 3 8 -------------------- 2 9 4 7 5 3 6 1 8 -------------------- 4 3 8 9 5 1 2 7 6 -------------------- 4 9 2 3 5 7 8 1 6 -------------------- 6 1 8 7 5 3 2 9 4 -------------------- 6 7 2 1 5 9 8 3 4 -------------------- 8 1 6 3 5 7 4 9 2 -------------------- 8 3 4 1 5 9 6 7 2 --------------------
时间: 2024-10-03 00:36:26