POJ 多項式加法(AC)

2021-06-19 03:34:33 字數 1204 閱讀 4318

在失敗了50次之後,終於在光棍節這一天ac了!因為這還錯過了聯誼會,想想還真是diao絲啊

其實這個題做出來之後想想還真不算是難題,之前想複雜了。《資料結構與演算法分析——c語言描述》3.2 節"the list adt" 就是以多項式加法為例子講解的list的應用。

我最開始寫的答案思路是:將每一組的兩個多項式的係數和冪數,分別儲存到兩個結構體陣列_array1和_array2中,一組輸入完後利用quick sort對_array2 ,_array2分別按照冪數從大到小排序。排序之後根據歸併排序的思路來計算多項式的和,將結果儲存到二維陣列中。當輸入結束再輸出結果。不過那個程式裡有個錯誤是對題目中的條件「為了標記每行多項式的結束,在表示式後面加上了乙個冪數為負數的整數對"理解有誤,我以為負冪數一定是在每一行的最後,但實際上負冪數可以出現在每一行的任何位置,負冪數之後的資料不可以參與計算。將這一點修改之後程式就可以正確執行了,但是提交之後會提示「time lmit exceeded",就是當輸入資料較大時程式執行時間太長,說明我的這個演算法還是有很大缺陷的。

後來減小執行時間,採用了《資料結構與演算法分析》裡的第乙個利用陣列的思路,確實很快,但是需要占用很大記憶體,提交後會提示「runtime error"。最後就採用了最直接的方法:利用鍊錶,解決問題。

#include using namespace std;

class node;

class list

~list(void)

void insert(int coeff ,int power)

if ( pnode->next_!=null && pnode->next_->power_ == power )else

} void output(void)

cout << endl;

}private:

node *head_;

};list *_list;

int main(void)

getline(std::cin, s);

cin >> coeff >> power;

while( power >= 0 )

getline(std::cin, s);

} for ( i=0; i

多項式加法

題目內容 乙個多項式可以表達為x的各次冪與係數乘積的和,比如 現在,你的程式要讀入兩個多項式,然後輸出這兩個多項式的和,也就是把對應的冪上的係數相加然後輸出。程式要處理的冪最大為100。輸入格式 總共要輸入兩個多項式,每個多項式的輸入格式如下 每行輸入兩個數字,第乙個表示冪次,第二個表示該冪次的係數...

多項式加法

題目內容 乙個多項式可以表達為x的各次冪與係數乘積的和,比如 2x6 3x5 12x3 6x 20 現在,你的程式要讀入兩個多項式,然後輸出這兩個多項式的和,也就是把對應的冪上的係數相加然後輸出。程式要處理的冪最大為100。輸入格式 總共要輸入兩個多項式,每個多項式的輸入格式如下 每行輸入兩個數字,...

多項式加法

給定兩個多項式p x 與q x 通過鍊錶實現它們的加法。有若干組,每組有2個多項式。每組輸入時先輸入第1個多項式,再輸入第2個多項式。每組用若干對整數表示,依序每兩個相鄰的整數表示多項式的一項,分別是它的係數和冪。當輸入的冪為負數時,表示乙個多項式的結束。乙個多項式中各項的次序是隨機的。對每組中兩個...