接收2个数组的程序,检查另一个数组中包含1的次数

时间:2015-12-01 23:38:59

标签: c++

我需要编写一个接收2个数组的程序,并检查1中包含1个数的次数... 但是我找不到我的程序有什么问题! TX !!

#include <iostream>
using namespace std;

int main()
{
    int vector1[500];
    int vector2[100];
    int a = 0, b = 0, count = 0, k = 0;
    cout << "enter size of first array:" << endl;
    cin >> a;
    cout << " enter first array values:" << endl;
    for (int i = 0; i < a; i++)
        cin >> vector1[i];
    cout << "enter size of second array:" << endl;
    cin >> b;
    cout << "enter secound array values:" << endl;
    for (int i = 0; i < b; i++)
        cin >> vector2[i];
    for (int i = 0; i < b; i++)
        for (int j = 0; j < a; j++)
            if (vector2[i + k] == vector1[j])
            {
                count++;
                k++;
            }
            else
                k = 0;


    cout << count << endl;
    system("pause");
    return 0;
}

1 个答案:

答案 0 :(得分:0)

为什么你需要k?问题是关于所有元素的所有包含权吗?如果O(n ^ 2)复杂度很好,那么......

for (int i = 0; i < b; i++)
    for (int j = 0; j < a; j++)
        if (vector2[i] == vector1[j])
            count++;

上述代码的一个明显缺点是,您将获得vector2中vector1的所有元素出现的总和。关键思想保持不变,以防你需要知道哪些元素完全出现在另一个数组中,多少次,你只需要使用地图或其他矢量。