02-线性结构2 一元多项式的乘法与加法运算(20 分)
2017-11-08 19:56
387 查看
刚看到这道题时,想到了链表,也想到了数组存储。但是数组存储有一个问题:当要对表达式进行+和*操作时,需要找出非零元素,比较麻烦。这个代码也是看别人的自己才写出来,代码:
#include <bits/stdc++.h>
using namespace std;
struct Node
{
int co; //系数
int ex; //指数
} node[1001];
int main()
{
ios::sync_with_stdio(false);
int add[1003]; //存放相加的结果
int mul[2005]; //存放相乘的结果
memset(add,0,sizeof(add)); //清零操作
memset(mul,0,sizeof(mul));
int n,m;
cin>>n;
for(int i=0; i<n; i++)
{
cin>>node[i].co>>node[i].ex; //先输入系数再输入指数
add[node[i].ex]=node[i].co; //把指数作为数组的下标,系数作为数组的值
}
cin>>m;
int a,b;
for(int i=0; i<m; i++)
{
cin>>a>>b; //先输入系数,再输入指数
add[b]=a+add[b]; //通过指数作为数组下标,进行相加。
for(int j=0; j<n; j++)
{
//因为是按照指数的递降顺序进行输入 指数相加,系数相乘
mul[b+node[j].ex] += a*node[j].co;
}
}
//开始进行循环输出
int isfirst,HaveNull=0; //isfirst判断是不是第一个输出
isfirst=1;
for(int i=2001; i>=0; i--)
{
if(mul[i]!=0) //如果数组值不是零,即:系数不为零
{
if(isfirst==1)
{
cout<<mul[i]<<" "<<i; //输出格式要求
isfirst=0;
}
else
cout<<" "<<mul[i]<<" "<<i;
HaveNull=1;
}
}
if(HaveNull==0)
cout<<"0 0";
cout<<endl;
isfirst=1;
HaveNull=0;
for(int i=1001; i>=0; i--)
{
if(add[i]!=0)
{
if(isfirst==1)
{
cout<<add[i]<<" "<<i;
isfirst=0;
}
else
cout<<" "<<add[i]<<" "<<i;
HaveNull=1;
}
}
if(HaveNull==0)
cout<<"0 0";
cout<<endl;
return 0;
}
#include <bits/stdc++.h>
using namespace std;
struct Node
{
int co; //系数
int ex; //指数
} node[1001];
int main()
{
ios::sync_with_stdio(false);
int add[1003]; //存放相加的结果
int mul[2005]; //存放相乘的结果
memset(add,0,sizeof(add)); //清零操作
memset(mul,0,sizeof(mul));
int n,m;
cin>>n;
for(int i=0; i<n; i++)
{
cin>>node[i].co>>node[i].ex; //先输入系数再输入指数
add[node[i].ex]=node[i].co; //把指数作为数组的下标,系数作为数组的值
}
cin>>m;
int a,b;
for(int i=0; i<m; i++)
{
cin>>a>>b; //先输入系数,再输入指数
add[b]=a+add[b]; //通过指数作为数组下标,进行相加。
for(int j=0; j<n; j++)
{
//因为是按照指数的递降顺序进行输入 指数相加,系数相乘
mul[b+node[j].ex] += a*node[j].co;
}
}
//开始进行循环输出
int isfirst,HaveNull=0; //isfirst判断是不是第一个输出
isfirst=1;
for(int i=2001; i>=0; i--)
{
if(mul[i]!=0) //如果数组值不是零,即:系数不为零
{
if(isfirst==1)
{
cout<<mul[i]<<" "<<i; //输出格式要求
isfirst=0;
}
else
cout<<" "<<mul[i]<<" "<<i;
HaveNull=1;
}
}
if(HaveNull==0)
cout<<"0 0";
cout<<endl;
isfirst=1;
HaveNull=0;
for(int i=1001; i>=0; i--)
{
if(add[i]!=0)
{
if(isfirst==1)
{
cout<<add[i]<<" "<<i;
isfirst=0;
}
else
cout<<" "<<add[i]<<" "<<i;
HaveNull=1;
}
}
if(HaveNull==0)
cout<<"0 0";
cout<<endl;
return 0;
}
相关文章推荐
- 02 - 线性结构 2 一元多项式的乘法与加法运算 (20 分)
- 02-线性结构2 一元多项式的乘法与加法运算(20 分) 用结构数组的方法
- 02-线性结构2 一元多项式的乘法与加法运算(20 分)
- 02-线性结构2 一元多项式的乘法与加法运算(20 分)
- 02-线性结构2 一元多项式的乘法与加法运算(20 分)(CPP)
- 02-线性结构1 一元多项式的乘法与加法运算
- [PAT] 02-线性结构2 一元多项式的乘法与加法运算
- 02-线性结构1 一元多项式的乘法与加法运算
- 02-线性结构1 一元多项式的乘法与加法运算 (20分)
- 02-线性结构2 一元多项式的乘法与加法运算
- 02-线性结构1 一元多项式的乘法与加法运算[网易云课堂-数据结构]
- PAT数据结构_02-线性结构2 一元多项式的乘法与加法运算 (20分)
- [数据结构]02-线性结构2 一元多项式的乘法与加法运算
- 02-线性结构1 一元多项式的乘法与加法运算
- 02-线性结构2 一元多项式的乘法与加法运算 (20分)
- 02-线性结构2 一元多项式的乘法与加法运算 (20分)
- 02-线性结构2 一元多项式的乘法与加法运算
- 一元多项式的乘法与加法运算 PTA02-线性结构1
- 02-线性结构2 一元多项式的乘法与加法运算 (20分)
- 02-线性结构1 一元多项式的乘法与加法运算 -数据结构