// // main.cpp // shuyuerchashu // // Created by 蒋豪博 on 2017/2/26. // Copyright © 2017年 蒋豪博. All rights reserved. // #include <iostream> #include <vector> using namespace std; typedef vector<vector<int>> chessboard; bool fit(chessboard t,int i,int k){ t[i-1][k]=1; for(int i=0;i<4;i++){ int sum=0; for(int j=0;j<4;j++){ sum=sum+t[j][i]; } if(sum>=2){ return false; } } return true; } void Trial(int i,int n,chessboard&t,vector<chessboard> &result){ if(i>n){ result.push_back(t); }else{ for(int k=0;k<n;k++){ if(fit(t,i,k)){ t[i-1][k]=1; Trial(i+1,n,t,result); t[i-1][k]=0; } } } } int main(int argc, const char * argv[]) { chessboard t={{0,0,0,0},{0,0,0,0},{0,0,0,0},{0,0,0,0}}; vector<chessboard> result; Trial(1,4,t,result); //输出结果 vector<vector<vector<int>>>::iterator it1; vector<vector<int>>::iterator it2; vector<int>::iterator it3; int k=1; for(it1=result.begin();it1!=result.end();it1++){ cout<<"图"<<k<<":"<<endl; k++; for(it2=(*it1).begin();it2!=(*it1).end();it2++){ for(it3=(*it2).begin();it3!=(*it2).end();it3++){ cout<<*it3<<" "; } cout<<endl; } cout<<endl; } return 0; }
运行结果: