原题如下:

1937:查找 分数: 1


题目描述

输入数组长度 n

输入数组      a[1...n] 

输入查找个数m

输入查找数字b[1...m] 

输出 YES or NO  查找有则YES 否则NO 。

输入格式

输入有多组数据。

每组输入n,然后输入n个整数,再输入m,然后再输入m个整数(1<=m<=n<=100)。

输出

如果在n个数组中输出YES否则输出NO。

样例输入

6

3 2 5 4 7 8

2

3 6

样例输出

YES

NO



没有AC的方案:

#include <iostream>

#include <string.h>

using namespace std;

int main()

{

int n;

while(cin >> n)

{

if(n < 1 || n > 100)

{

return 0;

}

int* a = new int[n];

memset(a,0,sizeof(int));

for(int i = 0; i < n; i++)

{

cin >> a[i];

}


int m;

cin >> m;

if(m < 1 || m > n)

return 0;

int* b = new int[m];

memset(b,0,sizeof(int));

for(int i = 0; i < m; i++)

{

cin >> b[i];

}

for(int i = 0; i < m; i++)

{

int temp = b[i];

int j;

int flag = 0;

for(j  =0;j < n; j++)

{

if(temp == a[j])

{

cout << "YES" << endl;

flag = 1;

break;

}

}

if(flag == 0)

cout << "NO" << endl;

}

}


return 0;

}



AC的方案:

#include <iostream>

#include <string.h>

using namespace std;

int main()

{

int n;

while(cin >> n)

{

int* a = new int[n];

memset(a,0,sizeof(int));

for(int i = 0; i < n; i++)

{

cin >> a[i];

}


int m;

cin >> m;

int* b = new int[m];

memset(b,0,sizeof(int));

for(int i = 0; i < m; i++)

{

cin >> b[i];

}

for(int i = 0; i < m; i++)

{

int temp = b[i];

int j;

int flag = 0;

for(j  =0;j < n; j++)

{

if(temp == a[j])

{

cout << "YES" << endl;

flag = 1;

break;

}

}

if(flag == 0)

cout << "NO" << endl;

}

}


return 0;

}


就多了加粗部分的判断,按原来的题意,应该是要限制m,n的。。。。。




LOFTER:hgfalgorithm   http://hgfal.lofter.com/post/28eef2_f008e5