问题http://codevs.cn/problem/1116/
- #include<iostream>
- #include<cstring>
- using namespace std;
- int arr[8][8];
- int n;
- int num=0;
- int se[8];//代表第几个位置需要放置的颜色
- bool ifcou(int x,int s){//判断第x位置 是否可以放置s颜色
- for(int j=0;j<n;j++){
- if(arr[x][j]==1&&se[j]==s){
- return false;
- }
- }
- return true;
- }
- void put(int x){
- if(x>=n){
- num++;
- return ;
- }
- for(int i=1;i<=4;i++){
- if(ifcou(x,i)){
- se[x]=i;
- put(x+1);
- se[x]=0;
- }
- }
- }
- int main(){
- cin>>n;
- memset(se,0,sizeof(se));
- for(int i=0;i<n;i++){
- for(int j=0;j<n;j++){
- cin>>arr[i][j];
- }
- }
- put(0);
- cout<<num;
- return 0;
- }