“给定一个小点的输入,完整单步跟踪一遍。”是理解递归函数工作原理的不二法门!

来源:互联网 发布:网络语pb是啥意思 编辑:程序博客网 时间:2024/04/29 01:15
C/C++ code
#include <iostream>#include <string>using namespace std;class Queen{ public: Queen(); ~Queen(); private: int result; string queen[8]; int state[8]; void set(int,int); bool check(int,int); void print();};Queen::Queen(){ result = 0; for(int i=0;i<8;i++){ queen[i] = "--------"; } set(0,0);}Queen::~Queen(){}void Queen::set(int i,int j){ if(i==8){ result++; print(); queen[7]="--------"; set(7,state[7]+1); } else if(j==8){ if(i==0) { cout<<""<<result<<"种放置方法!"<<endl; } else{ queen[i-1]="--------"; set(i-1,state[i-1]+1); } } else if(check(i,j)){ queen[i][j]='+'; state[i]=j; set(i+1,0); } else{ set(i,j+1); }}bool Queen::check(int i,int j){ for(int c=0;c<i;c++){ if(state[c]==j||state[c]-j==c-i||state[c]-j==i-c){ return false; } } return true;}void Queen::print(){ for(int i=0;i<8;i++){ cout<<queen[i]<<endl; } cout<<"======"<<endl;}int main(){ Queen my; system("pause"); return 0;}


原创粉丝点击