四色问题dfs都不会做了
#include<bits/stdc++.h>
using namespace std;
int mp[10][10];
int color[10];
int n,ans=0;
void dfs(int x){
if(x==n+1)return;
for(int i=1;i<=4;++i){
int flag=0;
for(int j=1;j<=n;++j){
if(mp[x][j]==1&&color[j]==i)
flag=1;
}
if(flag==0){
color[x]=i;
if(x==n)ans++;
dfs(x+1);
color[x]=0;
}
}
}
int main(){
cin>>n;
int tmp;
for(int i=1;i<=n;++i)
for(int j=1;j<=n;++j){
cin>>tmp;
if(tmp){
mp[i][j]=1;
mp[j][i]=1;
}
}
dfs(1);
cout<<ans;
return 0;
}
查看9道真题和解析