noj 1006 多項式乘法

2021-07-15 19:41:32 字數 1322 閱讀 1552

對於輸入,由於是按指數遞減輸入的,故我們只需按照輸入順序進行儲存即可。

對待乙個輸入:

1.如果當前多項式為空,那麼將此項放入第一項

2.如果當前多項式不為空 

3.如果有指數相同的項,那麼將此項與指數相同的項合併,如果係數變為0,則將此項刪除。 

然後多項式乘法,即將第乙個多項式的項和第二個多項式每一項分別相乘得到的項,新開闢乙個鍊錶儲存結果。

最後把相乘得到的項合併同類項,新開闢乙個鍊錶,用下面的方法處理存入的項!

1.如果當前鍊錶為空,那麼將結果鍊錶的第一項放入第一項

2.如果鍊錶不為空 

3.如果有指數相同的項,那麼將此項與指數相同的項合併,如果係數變為0,則將此項刪除。 

4.如果沒有指數相同的項(那麼此項的指數一定比當前所有項的指數都小),那麼將此項放入多項式末尾。

這樣就可以合併了。 

寫的好揪心!!還好一次性過不然會改死!!

#include#include#includeusing namespace std;

struct node

};void print(node *head)//按要求輸出

}else

else

}if(q->z!=0)

printf("x");

else

if(q->z!=1)

printf("^%d",q->z);

q=q->next;}}

printf("\n");

} int main()

if(f)

f=0;

}print(hea);

f=1;

tail1=new node(0,0);

tail2=new node(0,0);

while(scanf("%d%d",&n,&m)&&(n!=0||m!=-1))

if(f)

while(q)

q=q->next;

f=0;}}

node *p=hea2->next,*t***;

tail3=new node(0,0);

hea3=new node(0,0);

f=1;

while(p)

}else

break;

}if(p->z>q1->z)

p1=p1->next;

q1=p1->next;

}if(!f1)

}p=p->next;

}print(hea1);

print(hea3);

return 0;

}

NOJ 1006 堡壘問題

城堡是乙個4 4的方格,為了保衛城堡,現需要在某些格仔裡修建一些堡壘。城堡中的某些格仔是牆,其餘格仔都是空格,堡壘只能建在空格裡,每個堡壘都可以向上下左右四個方向射擊,如果兩個堡壘在同一行或同一列,且中間沒有牆相隔,則兩個堡壘都會把對方打掉。問對於給定的一種狀態,最多能夠修建幾個堡壘。每個測例以乙個...

多項式乘法

時間限制 c c 1秒,其他語言2秒 空間限制 c c 262144k,其他語言524288k 64bit io format lld et reo 吃完了元宵,又開始思考數學問題了。這次他拿了兩個多項式 p mathscrp 和 q mathscrq 他知道這兩個多項式的乘積也是乙個多項式,但他不...

多項式乘法

l1和l2是兩個帶頭結點的單鏈表表示的多項式,編寫演算法計算兩個多項式的乘積,運算結果仍用單鏈表進行儲存 include using namespace std typedef struct lnode lnode,linkedlist 查詢計算結果應該插入的位置 param l 鍊錶的頭結點指標 ...