㈠ c語言求集合運算
可以用線性表模擬集合,把兩個線性表中一樣的數提取出來就是交集,所有元素組成的就是並集,還可以用C++重載運算符實現+就求並集之類的。
㈡ 數據集合處理(C語言)
這是個龐大的工程啊,你多給點分,我給你寫
㈢ 用C語言合並兩個集合
樓主可以參考嚴蔚敏的《數據結構》,清華出版社的,第二章有講合並集合,有演算法,填一下就可以用,沒有學線性表可以參考演算法思想。
㈣ C語言中如何復制數組的內容
C語言中復制數組的內容源代碼如下:
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#define SIZE 10
void show_array(const int ar[], int n);
int main()
{
int values[SIZE] = {1,2,3,4,5,6,7,8,9,10};
int target[SIZE];
double curious[SIZE / 2] =
{2.0, 2.0e5, 2.0e10, 2.0e20, 5.0e30};
puts("memcpy() used:");
puts("values (original data): ");
show_array(values, SIZE);
memcpy(target, values, SIZE * sizeof(int));
puts("target ( of values):");
show_array(target, SIZE);
puts("
Using memmove() with overlapping ranges:");
memmove(values + 2, values, 5 * sizeof(int));
puts("values -- elements 0-5 copied to 2-7:");
show_array(values, SIZE);
puts("
Using memcpy() to double to int:");
memcpy(target, curious, (SIZE / 2) * sizeof(double));
puts("target -- 5 doubles into 10 int positions:");
show_array(target, SIZE/2);
show_array(target + 5, SIZE/2);
system("pause");
return 0;
}
void show_array(const int ar[], int n)
{
int i;
for (i = 0; i < n; i++)
printf("%d ", ar[i]);
putchar('
');
}
(4)復制一個集合c語言擴展閱讀
1、C語言編程中,將常用的操作封裝成函數進行調用,可以大大簡化程序的編寫,而且在代碼的維護性及可讀性方面也提供了便利。
2、不同地方需要對處理後的數組內容多次進行顯示,並且很多情況下並非顯示數組裡面的全部內容,而僅僅是想觀察數組中的部分數據內容,若每次顯示時都用printf函數寫的話,可以寫一個自定義的通用函數,用來根據需要顯示數組中的內容。
㈤ 數據加入一個集合 c語言菜鳥問題
你的意思是把所有質數添加到一個數組中嗎,
#include<stdio.h>
intmain()
{
inti,t,k,a,b,m=0;
intarray[500];//添加的數組
intn;//記錄有幾個質數
printf("輸入任意兩數a,b");
scanf("%d,%d",&a,&b);
for(i=a;i<=b;i++)
{
t=1;
for(k=2;k<i;k++)
{
if(i%k==0)
{
t=0;
break;
}
}
if(t)
{
n++;array[m++]=i;printf("%d",i);
}
}
for(intnn=0;nn<n;nn++)printf("%d",array[nn]);
return0;
}
㈥ c語言求兩個集合的並集然後按照從小到大輸出
qsort(A,a-1,sizeof(A[0]),cmp); a-1改成a 是元素個數
你這個解法復雜度度太大 直接用個set存就行拉
不會用set 就用類似歸並的方法A,B排序 判前一個有沒和當前的重復
㈦ 用C語言實現集合的並集
用兩個數組表示集合元素
對於AUB=C
先把A的數據 復制到C裡面
然後 遍歷B數組,每個元素和A對比,如果存在 則略過,否則添加到C中。
等到的C
即為並集
㈧ c語言 離散數學集合復合運算的代碼,(R。R)的代碼實現
//說明:輸入的格式需要提示按輸入,因為要獲取正確的有序對才能進行復合運算
/*
*************輸入格式如:a b, #,# 退出***************
輸入:a b
輸入:b t
輸入:t d
輸入:s j
輸入:j i
輸入:c a
*/
#include "stdlib.h"
typedef char Element;
struct Node
{
Element left;
Element right;
struct Node *next;
};
struct Node *CreateLink();
struct Node *Operation(struct Node *R,struct Node *S);
void PrintLink(struct Node *h);
int main()
{
struct Node *hdR,*hdS,*rhd;
printf("請輸入第一個集合R的關系\n");
hdR = CreateLink();
PrintLink(hdR);
printf("\n請輸入第二個集合S的關系\n");
hdS = CreateLink();
PrintLink(hdS);
rhd = Operation(hdR,hdS);
if (rhd->next == NULL)
{
printf("\nR。S結果為空集\n");
}
else
{
printf("\nR。S結果為:\n");
PrintLink(rhd);
}
return 0;
}
struct Node *CreateLink()
{
struct Node *head, *p;
printf("*************輸入格式如:a b, \'#,#\' 退出***************\n");
Element a,b;
head = (struct Node *)malloc(sizeof(struct Node));
head->left = 0;
head->right = 0;
head->next = NULL;
printf("輸入:");
scanf("%c %c",&a,&b);
getchar();
while (a != '#')
{
p = (struct Node *)malloc(sizeof(struct Node));
p->left = a;
p->right = b;
p->next = head->next;
head->next = p;
printf("輸入:");
scanf("%c %c",&a,&b);
getchar();
}
return head;
}
struct Node *Operation(struct Node *R, struct Node *S)
{
struct Node *newHead,*newP,*newQ;
struct Node *pH, *pNext;
newHead = (struct Node *)malloc(sizeof(struct Node));
newHead->left = 0;
newHead->right = 0;
newHead->next = NULL;
newP = newHead;
if (R->next == NULL || S->next == NULL)
{
return newP;
}
char cLeft,cRight;
pH = R;
while (pH->next != NULL)
{
cLeft = pH->next->left;
cRight = pH->next->right;
pNext = S->next;
while(pNext != NULL)
{
//存在可以復合運算的
if (cRight == pNext->left)
{
//在復合運算結果集中插入數據,如果存在相同的二元關系,則不需要插入
newP = newHead;
while (newP->next != NULL)
{
if (cLeft == newP->left && cRight == newP->right)
{
break;
}
newP = newP->next;
}
if (newP->next == NULL)
{
newQ = (struct Node *)malloc(sizeof(struct Node));
newQ->left = cLeft;
newQ->right = pNext->right;
newQ->next = NULL;
newP->next = newQ;
// newQ->next = newP->next->next;
}
}
pNext = pNext->next;
}
pH = pH->next;
}
return newHead;
}
void PrintLink(struct Node *h)
{
struct Node *p=h->next;
printf("\n");
while (p != NULL)
{
printf("<%c,%c> ",p->left,p->right);
p = p->next;
}
printf("\n");
}
㈨ 怎樣用語言c語言實現集合的合並,交集
通過你描述的問題,正確的交集代碼如下:
void
bing(char
a[],char
b[],int
m,int
n)
{
char
d[400];
int
i=0,j=0,s=m;
for(i=0;i<m;i++)
d[i]=a[i];
for(i=0;i<n;i++){
for(j=0;j<m;j++)
{
if(b[i]==a[j])
break;
}
if(j==m)
d[s++]=b[i];
}
cout<<"集合並集是:";
for(i=0;i<s;i++)
cout<<d[i]<<"
";
}
㈩ c語言編程,集合
動態規劃.
#include<stdio.h>
/*#include<stdlib.h>*/
#include<memory.h>
#defineN5050
intmain(intargc,char*argv)
{
intd[N];
intn,s;
while(scanf("%d",&n)!=EOF){
s=n*(n+1)>>1;
if(s&1){
printf("0 ");
}
else{
s=s>>1;
inti,j;
memset(d,0,N*sizeof(d[0]));
d[0]=1;
for(i=1;i<=n;i++){
for(j=s;j>=i;j--){
d[j]=d[j]+d[j-i];
}
}
printf("%d ",d[s]>>1);
}
}
return0;
}