#include
#include
char *e[10],*f[10];
struct pointu[10][10];
//字串任意片段拷貝函式
void copy(char temp1, char st, int start, int end)
temp1[j] = '\0';
}/***************輸入集合*****************/
void input_jihe(char *p[10],char *h)
}if(s[i]=='
//不帶括號的元素
if(n==0)
}else if(k!=1&&s[i]!='}'&&s[i]!=',') }}
}p[k]="}";
}// 輸出集合
void output_jihe(char *sum[10])")) printf("空集\n");
else ")) printf(",%s",sum[i]);
if(!strcmp(sum[i],"}")) ");
break;}}
}}// 集合並集
void bing(char *p[10],char *q[10],char *sum[10])";
for(k=1;k<20;k++)"))
else break;
}t=k;
for(j=1;j<20;j++)")) }}
else ";
break;}}
}// 集合交集
void jiao(char *p[10],char *q[10],char *sum[10])";
for(i=1;i<20;i++)
"))
for(j=1;j<20;j++)
"))}
else break;
}else ";
break;} }
}// a-b(b對a的相對補集)
void jian(char *p[10],char *q[10],char *sum[10])";
for(i=1;i<20;i++)
"))
for(j=1;j<20;j++)
"))"))
}else break;
}else ";
break;} }
} // 求對稱差
void duichencha(char *p[10],char *q[10],char *sum[10])
/*********************建樹***********************/
int build_tree(char *s)
if((u[j-1][g].str[0]=='(')&&(u[j-1][g].str[k-1]==')'))
if(u[j-1][g].str[i]==')') break;}}
//由於集合二類運算是從左到右結合的,故從右向左檢索運算子以分叉樹結構。
for(i=k-1;i>=0;i--)
if(u[j-1][g].str[i]=='('&&(m==1))
if(m==0)}}
begin:;
}if(len==0)
break;
}return j;
}//展示樹結構
void show_tree(int j)
printf("\n");}}
//為樹結構中的樹葉賦予具體的集合。
void embody_tree(int j)
//如果樹葉中集合與前面樹葉的重複,則檢索下乙個樹葉。
for(k=0;kif(u[j-1][in].str[0]==u[j-1][k].str[0])
if(k==in-1)}}
//通過樹結構,由樹葉向樹根遞推
for(m=j-2;m>=0;m--)
break;}}
}} /****************主函式******************/
int main()
演算法訓練 集合運算
問題描述 給出兩個整數集合a b,求出他們的交集 並集以及b在a中的餘集。輸入格式 第一行為乙個整數n,表示集合a中的元素個數。第二行有n個互不相同的用空格隔開的整數,表示集合a中的元素。第三行為乙個整數m,表示集合b中的元素個數。第四行有m個互不相同的用空格隔開的整數,表示集合b中的元素。集合中的...
演算法訓練 集合運算
問題描述 給出兩個整數集合a b,求出他們的交集 並集以及b在a中的餘集。輸入格式 第一行為乙個整數n,表示集合a中的元素個數。第二行有n個互不相同的用空格隔開的整數,表示集合a中的元素。第三行為乙個整數m,表示集合b中的元素個數。第四行有m個互不相同的用空格隔開的整數,表示集合b中的元素。集合中的...
演算法訓練 集合運算
演算法訓練 集合運算 時間限制 1.0s 記憶體限制 512.0mb 問題描述 給出兩個整數集合a b,求出他們的交集 並集以及b在a中的餘集。輸入格式 第一行為乙個整數n,表示集合a中的元素個數。第二行有n個互不相同的用空格隔開的整數,表示集合a中的元素。第三行為乙個整數m,表示集合b中的元素個數...