C++问题,怎么改
一个最大团问题#include<iostream>
#include<stdlib.h>
using namespace std;
#define maxl 100
class clique{
friend max(int **,int[],int);
private:
void backtrack(int i);
int n, //图的顶点数
cn, //当前顶点数
bestn, //当前最大顶点数
*x, //当前解
*bestx, //当前最优解
**a; //存放邻接矩阵
};
void clique::backtrack(int i)
{
if(i>n)
{
for(int j=1;j<=n;j++)
bestx[j]=x[j];
bestn=cn;
}
int ok=1;
for(int j=1;j<i;j++)
if(x[j]&&a[i][j]==0)
{
ok=0;
break;
}
if(ok)
{
x[i]=1;
cn++;
backtrack(i+1);
x[i]=0;
cn--;
}
if(cn+n-i>bestn)
{
x[i]=0;
backtrack(i+1);
}
}
int max(int **a,int v[],int n)
{
clique Y;
Y.x=new int [n+1];
Y.a=a;
Y.n=n;
Y.bestn=0;
Y.bestx=v;
Y.backtrack(1);
delete[] Y.x;
return Y.bestn;
}
void main()
{ int **g;
int n;
cout<<"输入n:"<<endl;
cin>>n;
g=(int **)malloc(sizeof(int * )*n);
int b[maxl]={0};
int i,j;
for(i=1;i<=n;i++)
{
for(j=1;j<=n;j++)
cin>>g[i][j];
}
max(g,b,5);
}
谢谢
[[italic] 本帖最后由 『点点滴滴』 于 2008-1-9 09:31 编辑 [/italic]]