注册 登录
编程论坛 C++教室

C++问题,怎么改

『点点滴滴』 发布于 2008-01-08 17:07, 829 次点击
一个最大团问题
#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]]
5 回复
#2
linsua2008-01-08 17:19
你这是把C++当C来用,我强烈反对
#3
中学者2008-01-08 17:26
不存在,,,,最起码体现了封装的思想嘛!
#4
sunkaidong2008-01-08 17:58
呵呵,最好改变过来啊,毕竟两者是不一样的啊..
#5
中学者2008-01-08 18:08
如果没学过C直接学C++不就不能学数据结构了???
#6
『点点滴滴』2008-01-09 09:32
1