首页 > 试题广场 > 已知如下递归代码用于求解图的m着色问题:#define&nb
[单选题]
已知如下递归代码用于求解图的m着色问题:
#define?N?10
int?a[N+1][N+1];?//存储图
int?x[N+1];//记录颜色
int?sum=0;//保存可着色方案数

void?backtrace(int?t,int?m)
{
int?i;
if(t>N)//搜索至叶节点
{
sum++;
printf("第%d种方案:\n",sum);
for(i=1;i<=N;i++)
printf("%d?",x[i]);
printf("\n");
}
else
{
for(i=1;i<=m;i++)?//逐个判断每种颜色
{
if(check(t,i))
{???x[t]=i;
backtrace(t+1,m);
}
}
}
}
其中check()函数用于检测某个节点颜色是否合法,以下check()函数正确的是:
  • int check(int t,int i)//检测函数 {     int j;     for(j=1;j<t;j++)     {         if(a[t][j]==1&&x[i]==j)                  return 0;            }     return 1; }
  • int check(int t,int i)//检测函数 {     int j;     for(j=1;j<t;j++)     {         if(a[t][j]==1||x[i]==j)                  return 0;            }     return 1; }
  • int check(int t,int i)//检测函数 {     int j;     for(j=1;j<t;j++)     {         if(a[t][j]==1||x[j]==i)                  return 0;            }     return 1; }
  • int check(int t,int i)//检测函数 {     int j;     for(j=1;j<t;j++)     {         if(a[t][j]==1&&x[j]==i)                  return 0;            }     return 1; }
j<,
1&,这些都是什么东西
发表于 2019-09-24 20:14:31 回复(0)