Welcome, guest! Login / Register - Why register?
Psst.. new poll here.
Psst.. new forums here.
Microsoft is blocking us again (TY IP Reputation!) so just use oauth login instead. :)

Paste

Pasted as C by prime ( 13 years ago )
#include<stdlib.h>
#include"cover.h"
#include"list.h"
#include "set.h"

int cover(Set*members,Set*subsets,Set*covering){

 Set intersection;
 KSet*subset;
 ListElmt*member,*max_member;
 void*data;
 int max_size;
 set_init(covering,subsets->match,NULL);
 while(set_size(members)>0 && set_size(subsets)>0){
  printf("still in main loop \n");
  max_size=0;
  for(member=list_head(subsets);member!=NULL;member=list_next(member)){
   printf("first for loop  %d\n",((KSet*)list_data(member))->set.size);
   if(set_intersection(&intersection;,members,&((KSet*)list_data(member))->set)!=0){
    return -1;
   };
   if(set_size(&intersection;)>max_size){

    max_member=member;
    max_size=set_size(&intersection;);
   };
   set_destroy(&intersection;);
  };
  //end of search for maximum member subset
  if (max_size==0){return 1;};

  subset=(KSet*)list_data(max_member);

  if (set_insert(covering,subset)!=0)
  {return -1;}
  for(member=list_head(&((KSet*)list_data(max_member))->set);member!=NULL;member=list_next(member)){
   printf("second for loop \n");
   data=list_data(member);
   if(set_remove(members,(void**)&data;)==0 && members->destroy!=NULL){

    members->destroy(data);
    };

  };

   if(set_remove(subsets,(void**)&subset;)!=0){return -1;};
  };
 

  if(set_size(members)>0){return -1;};

  return 0;

}

 

Revise this Paste

Your Name: Code Language: