【搜索】四色问题
思路
这道题没什么难的,但卡了本蒟蒻半个小时,因为我忘了在搜索完一种方案并使总方案加一后return......血淋淋的教训啊QAQ,以后肯定不会再忘了......
Code
#include<iostream>
#include<cstdio>
#include<string>
#include<vector>
#include<algorithm>
#include<cstdlib>
#include<cmath>
#include<stack>
#include<map>
using namespace std;
int n,e[9][9],b[9],ans;
int r(int no)
{
int i;
for(i=1;i<=n;i++)
{
if(e[no][i]&&b[i]==b[no])
return 0;
}
return 1;
}
void dfs(int no)
{
if(no==n+1)
{
ans++;
return;
}
int i;
for(i=1;i<=4;i++)
{
b[no]=i;
if(r(no))
dfs(no+1);
b[no]=0;
}
}
int main()
{
int i,j;
cin>>n;
for(i=1;i<=n;i++)
{
for(j=1;j<=n;j++)
{
cin>>e[i][j];
}
}
dfs(1);
cout<<ans<<endl;
return 0;
}