我需要编写一个接收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;
}
答案 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的所有元素出现的总总和。关键思想保持不变,以防你需要知道哪些元素完全出现在另一个数组中,多少次,你只需要使用地图或其他矢量。