【题目链接】
http://dsalgo.openjudge.cn/linearlists/1/
【代码】
#include <iostream>
using namespace std;
struct node{
int n, p;
node* nxt;
};
class LinkList{
node* head;
public:
LinkList(){
head = new node;
head->nxt = NULL;
}
~LinkList(){
node* p = head;
while(p->nxt != NULL){
node* tmp = p;
p = p->nxt;
delete tmp;
}
}
void Insert(int n, int pp){
node* p = head;
while(p->nxt != NULL && p->nxt->p > pp) p = p->nxt;
if(p->nxt == NULL || p->nxt->p != pp){
// 在p后插入节点
node* nw = new node({n, pp, p->nxt});
p->nxt = nw;
}
else{
p->nxt->n += n;
}
}
void print(){
node* p = head;
while(p->nxt != NULL){
p = p->nxt;
if(p->n != 0){
printf("[ %d %d ]", p->n, p->p);
if(p->nxt != NULL) printf(" ");
}
}
}
};
int main(){
int T;
cin >> T;
while(T--){
LinkList l;
int a, b;
while(cin >> a >> b && (b >= 0)) l.Insert(a, b);
while(cin >> a >> b && (b >= 0)) l.Insert(a, b);
l.print();
printf("\n");
}
system("pause");
return 0;
}
【分析】
这题出的,输入的简直不是多项式……注意一个多项式可能没有经过化简,也就是说,幂次可以重复,系数可以为0
考察的主要是链表
当然也可以用set,理论上更快一些