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

一、题目描述

在这里插入图片描述在这里插入图片描述

二、代码如下

#include<iostream>
#include<bits/stdc++.h>
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历年认证考试真题解答汇总

猜你喜欢

转载自blog.csdn.net/qq_44528283/article/details/112899698