有相同数字?
时间: 1ms 内存:128M
描述:
输入两个数组中要存放的元素个数及元素值(不超过50个),判断这两个数组中是否有相同的数字。
在下面的程序基础上完成:
#include<iostream>
using namespace std;
bool existthesame(int *a,int n1,int *b,int n2); //n1个数据的a数组中和n2个数据的b数组中是否有相同元素
int main()
{
int a[50];
int b[50];
int i, n1, n2;
//读入数据
……
bool flag=existthesame(a,n1,b,n2);
if(flag==true)
cout<<"YES\n";
else
cout<<"NO\n";
return 0;
}
bool existthesame(int *a,int n1,int *b,int n2)
{
}
输入:
共有两组数。每组数包括:这组数的个数n,以及这n个数字。(n<=50)
输出:
当两组数中有相同数字时,输出YES,否则,输出NO
示例输入:
6 1 7 8 10 12 17
4 2 7 12 25
示例输出:
YES
提示:
参考答案(内存最优[1092]):
#include<stdio.h>
int main ()
{
int arr[50];
int brr[50];
int i,j;
int n=0;
scanf ("%d",&arr[0]);
for(i=1;i<=arr[0];i++)
scanf("%d",&arr[i]);
scanf ("%d",&brr[0]);
for(j=1;j<=brr[0];j++)
scanf("%d",&brr[j]);
for(i=0;i<arr[0];i++)
for(j=0;j<brr[0];j++)
if(arr[i]==brr[j])
{
n=1;
break;
}
if(n==1)
printf ("YES");
else
printf ("NO");
return 0;
}
参考答案(时间最优[0]):
#include <iostream>
using namespace std;
void Quicksort(int a[],int low,int high)
{
if(low>=high)
{
return;
}
int first=low;
int last=high;
int key=a[first];
while(first<last)
{
while(first<last&&a[last]>=key)
--last;
a[first]=a[last];
while(first<last&&a[first]<=key)
++first;
a[last]=a[first];
}
a[first]=key;
Quicksort(a,low,first-1);
Quicksort(a,last+1,high);
}
int main()
{
int i,a[100],x,n;
cin>>n;
for(i=0;i<n;i++)
{
cin>>a[i];
}
Quicksort(a,0,n-1);
for(i=0;i<n;i++)
cout<<a[i]<<" ";
return 0;
}
题目和答案均来自于互联网,仅供参考,如有问题请联系管理员修改或删除。