對於輸入,由於是按指數遞減輸入的,故我們只需按照輸入順序進行儲存即可。
對待乙個輸入:
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 鍊錶的頭結點指標 ...