首页 > 解决方案 > 如何在 C++ 上比较两个数组上的元素

问题描述

一个 c++ 问题,我必须确定用户是否击中目标。输入敌人可能所在的坐标后,用户输入更多坐标,我必须比较它们,如果攻击的元素 [i] 与敌人 [n] 的任何元素匹配,则打印 YES。我知道我在比较位置而不是元素,这就是为什么它不起作用但我迷路了。我也尝试通过只制作一个数组来解决它,但这样感觉更好。

    #include <iostream>
    using namespace std;

    int main()
    {
    int n, k, b;
    int enemies[];
    int attacks[];
    
    cin>>n;
    for (int i=0; i<n; i++) {
        cin>>b;
        enemies[i]=b;
    }
    
    cin>>k; 
    for (int i=0; i<k; i++) {
        cin>>b;
        atacks[i]=b;
    }
    
    for(int i=0; i<k; i++){
       if(atacks[i]==enemies[i]){
                cout<<"YES"<<endl;
       }
       else{
           cout<<"NO"<<endl;
       }
    
    return 0;
}

标签: c++arraysc++11

解决方案


您的代码可能不起作用,因为这一行:

if(atacks[i]==enemies[i])

需要匹配attack并且enemy在它们的数组中应该有相同的索引。

enemies正如评论中所建议的,您需要为 EACH遍历 ALL attack,即“O(n*k) 解决方案”


推荐阅读