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**)⊂)!=0){return -1;};
};
if(set_size(members)>0){return -1;};
return 0;
}
Revise this Paste