有相同数字?

有相同数字?

时间: 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;
}

题目和答案均来自于互联网,仅供参考,如有问题请联系管理员修改或删除。

点赞

发表评论

电子邮件地址不会被公开。必填项已用 * 标注