CCF小白刷题之路---202006-2 稀疏向量(C/C++ 100分)

一、题目描述

CCF小白刷题之路---202006-2 稀疏向量(C/C++ 100分)_第1张图片CCF小白刷题之路---202006-2 稀疏向量(C/C++ 100分)_第2张图片

二、代码如下

#include
#include
using namespace std;
//定义结构体,存向量的点
struct Node{
     
    long long index;
    long long value;
};

int main()
{
     
    long long n,a,b;
    cin>>n>>a>>b;
    Node A[a],B[b];
    for(int i=0;i<a;i++)
    {
     
        cin>>A[i].index>>A[i].value;
    }
    for(int i=0;i<b;i++)
    {
     
        cin>>B[i].index>>B[i].value;
    }
    long long sum = 0;
    //通过i和j来遍历两个向量
    long long i = 0 , j = 0;
    while(i<a && j<b)
    {
     
        //如果序号相等,进行乘法运算
        if(A[i].index==B[j].index)
        {
     
            sum += A[i].value * B[j].value;
            i++;
            j++;
        }
        //如果A的序号大于B,则A向后移动一个
        else if(A[i].index < B[j].index)
        {
     
            i++;
        }
        //如果B的序号大于A,则B向后移动一个
        else if(A[i].index > B[j].index)
        {
     
            j++;
        }
    }
    cout<<sum<<endl;
    return 0;
}

更多CCFCSP认证真题详解,请点击>>CCFCSP历年认证考试真题解答汇总

你可能感兴趣的:(ccf,ccfcsp认证,稀疏向量,c/c++)