CCF-CSP 202109-1数组推导 满分题解
题目链接:CCF-CSP 202109-1数组推导
思路:
1.运用数组存储数据,对数组进行操作;
2.在函数GetMax中计算最大值,由于B数组单调不减,B数组所有值之和即为最大值。
3.在函数GetMin中计算最小值,对于B数组第i个元素而言,其对应的A数组中元素如果比其前i-1个元素的最大值大,则在计算最小值时需要加上第i个数组的值,但是由于B数组单调不减,则当第i个元素的值与前i-1个元素的最大值相等时,在计算最小值时直接加上0即可。
代码如下:(结尾附上样例)
#include <bits/stdc++.h>
using namespace std;
int GetMax(int a[],int n)
{
int sum=0;
for(int i=1;i<=n;i++)
{
sum+=a[i];//此时数组对应的元素即为最大的情况
}
return sum;
}
int GetMin(int a[],int n)
{
int sum=0;
int max=0;
for(int i=1;i<=n;i++)
{
if(a[i]>max)
{
max=a[i];//更新max值
sum+=a[i];
}
if(a[i]==max)
{
sum+=0;//最小值的来源
}
}
return sum;
}
int main()
{
int n;cin>>n;
int a[n+1];
for(int i=1;i<=n;i++)
{
cin>>a[i];
}
cout<<GetMax(a, n)<<endl<<GetMin(a, n)<<endl;
return 0;
}