| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 826 人关注过本帖
标题:C++问题,怎么改
取消只看楼主 加入收藏
『点点滴滴』
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
帖 子:168
专家分:1035
注 册:2007-7-9
结帖率:100%
收藏
 问题点数:0 回复次数:1 
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]]
搜索更多相关主题的帖子: include void private friend 
2008-01-08 17:07
『点点滴滴』
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
帖 子:168
专家分:1035
注 册:2007-7-9
收藏
得分:0 
2008-01-09 09:32
快速回复:C++问题,怎么改
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.029168 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved