多項式相乘求組合數RC(n,r) 鍊錶實現

2021-06-05 03:52:53 字數 2329 閱讀 8836

設集合s=, n1 + n2 +...+nt = n, 從s中任取r個,求其組合數rc(n, r)。

設多項式

則rc(n,r)就是多項式中xr的係數, 即  rc(n, r) = ar。

根據上述方法,程式設計實現:求任意的從s中任取r個的組合數rc(n,r),且輸出ai(i = 1, 2...r)。

解決思路:

1. 每個多項式用乙個鍊錶表示。多項式的係數和冪用鍊錶的節點表示。

2. 多項式相乘即為對鍊錶每個節點的遍歷和計算。

程式設計實現如下:

#include

#include

typedef int datatype;

typedef struct node

listnode, *linklist; 

linklist linklist_create()

l->next = null;

return l;

}int linklist_insert(linklist l, datatype x, datatype y)

p = (linklist)malloc(sizeof(listnode));

p->coe = x;  //係數 

p->power = y;   //冪 

p->next = q->next;

q->next = p;   

return 0;

}int linklist_is_empty(linklist l)

int linklist_show(linklist l)

printf("\n\n");

return 0;

}int linklist_show_r(linklist l, int k)

printf("%d\n", p->coe);

return 0;

}int linklist_clear(linklist l)

return 0;

}int linklist_length(linklist l)

return --len;

}int multinomial_multipty(linklist l, linklist mul)

, temppower[100] = ;     

linklist p = mul->next, q = l->next;

int temp = 0;

int i = 0;

i = 0;

while (i <= len)

while (p != null)    //多項式相乘 

p = p->next;

}p = q = null;

linklist_clear(l);

for (i = 0; i <= len; i++)  //重新賦值給鍊錶l 

return 0;

}#define n 100

int main(void)

;     //元素 

int m[n] = ;     //元素個數 

int i = 0, j = 0;

int r = 0, n = 0;

linklist l, tl;

l = linklist_create();

tl = linklist_create();

linklist_insert(l, 1, 0);

printf("           程式計算結果如下       \n\n\n");

printf("請輸入元素型別數:");

scanf("%d", &t); 

printf("\n請輸入各元素:");  

for (i = 0; i < t; i++)

printf("\n請輸入相應的元素個數:");

for (i = 0; i < t; i++)

printf("\n請輸入r: ");

scanf("%d", &r);

printf("\n輸入的多項式為: \n"); 

for (i = 0; i < t; i++)

linklist_show(tl);

multinomial_multipty(l, tl);

linklist_clear(tl);      

}printf("\n相乘後的多項式為: ");

linklist_show(l);

printf("組合數rc(n, r) = rc(%d, %d) = ", n, r);

linklist_show_r(l, r);

printf("\n");

system("pause()");

return 0;

}

鍊錶實現多項式相乘

參考文章 自己敲了一遍,先mark一下,以後理解可能會更深一點。亮點在於對第二個多項式進行了逆反。include includetypedef struct node listnode listnode createlist int n 建立鍊錶 int printlist listnode hea...

單向鍊錶 練習3 7 多項式相乘

3.7 編寫乙個函式將兩個多項式相乘,用乙個鍊錶實現。你必須保證輸出的多項式按冪次排列並且最多有一項為任意冪。多項式相乘 position multiply2pol position h1,position h2 排序合併 mpsort h,size return h 氣泡排序多項式,按照項的次數從...

鍊錶的多項式加法鍊錶的多項式加法

老師給的模板看的我不要不要的,真心難看,看了很久才把過載加法搞定了。include using namespace std include 定義結點類 用於表示多項式的一項 class node node int nexp,int ncoef private int exp 指數 int coef ...