问题标题: 1052题怎么做

0
0
已解决
高翊天
高翊天
初级守护
初级守护
int pd(int a)
{
    for(int i=1; i<=n; i++) 
    {
        if(b[i]&&cd[a][i])
            return 0;
    }
    return 1;
}
void dfs(int t)
{
    for(int i=1; i<=n; i++) 
    {
        if(!b[i]) 
        { 
            if(pd(i)) 
            {    
                b[i]=1;    
                sum++;
            }
            if(t==n) 
            { 
                if(sum>maxx)
                    maxx=sum;
                for(int i=1; i<=n; i++)
                    g[i]=b[i];
            } 
            else 
            {
                dfs(t+1);
                b[i]=0;
                sum--;
            }
        }
    }
}

 


3
已采纳
蒋智航
蒋智航
高级天翼
高级天翼

用多个数组储存仇敌关系、选择方案,并且用搜索,如果现在的人数大于最大的人数就更新最大人数,然后循环,如果该人不在卫队里就把它放进去,继续搜索,最后输出总数,并且输出0或1 。
 

4
0
0
0
我要回答