7-1 最大子列和问题 (20 分)
#include <bits/stdc++.h>
using namespace std;
int main()
{
int K;
cin>>K;
int i,j;
int num[100001];
for(i=0;i<K;i++)
{
cin>>num[i];
}
int thissum=0;
int maxsum=0;
for(i=0;i<K;i++)
{
thissum+=num[i];
if(maxsum<thissum)
{
maxsum=thissum;
}
else if(thissum<0)
thissum=0;
}
cout<<maxsum;
}
7-2 一元多项式的乘法与加法运算 (20 分)
#include <bits/stdc++.h>
using namespace std;
void PolynomialInput(int *a, int n)//多项式输入;
{
int x,y,i;
for(i=0;i<n;i++)
{
cin>>x>>y;
a[y]=x;
}
}
void PolynomialMultiplication(int *a,int *b,int *c)
{
int i,j;
for(i=0;i<10005;i++)
{
for(j=0;j<10005;j++)
{
c[i+j]+=a[i]*b[j];
}
}
}
void PolynomialOutput(int *c)//多项式输出
{
int i,flag=0;
for(i=10004;i>=0;i--)
{
if(c[i])
{
if(flag)
cout<<" ";
cout<<c[i]<<" "<<i;
flag++;
}
}
if(!flag)cout<<"0 0";
cout<<endl;
}
void PolynomialAddition(int *a, int *b, int *c)//多项式加法
{
int i;
for(i=0;i<1005;i++)
{
c[i]=a[i]+b[i];
}
}
int main()
{
int a[10005]={0};
int b[10005]={0};
int c[10005]={0};
int d[10005]={0};
int n;
cin >> n;
PolynomialInput(a, n);
cin >> n;
PolynomialInput(b, n);
PolynomialMultiplication(a, b, c);
PolynomialOutput(c);
PolynomialAddition(a, b, d);
PolynomialOutput(d);
}