c++:p1633:重复数字

 

输入n(n<=50000)个1~10^6的正整数,求最先出现重复数字的数的一对位置。
输入格式:
第一行,一个整数n;
第二行,n个整数。
输出格式:
最先出现重复数字的起始位置。
输入样例:
10
23 4 2 10 5 6 7 8 2 6
输出样例:
3 9(最先出现重复的是数字2)
 

代码如下,如有帮助,请采纳一下,谢谢。

#include <stdio.h>
#include <stdlib.h>
int main()
{
	int n,i,j;
	int* a;
	int pos1 = -1,pos2 = -1;
	printf("请输入n的值:");
	scanf("%d",&n);
	a = (int*)malloc(sizeof(int)*n);
	for (i =0;i<n;i++)
	{
		scanf("%d",a+i);
		if(i>1 && pos1 == -1 && pos2 == -1)
		{
			for (j = 0;j<i;j++)
			{
				if(*(a+j) == *(a+i))
				{
					pos1 = j;
					pos2 = i;
				}
			}
		}
	}
	printf("%d %d\n",pos1+1,pos2+1);
	free(a);
	return 0;
}

 

#include <iostream>
using namespace std;

int main()
{
    int n;
    cin >> n;
    int *num = new int[n];
    int i, j;
    for (i = 0; i < n; i++)
    {
        cin >> num[i];
        for (j = 0; j < i; j++)
        {
            if (num[i] == num[j])
            {
                cout << j + 1 << " " << i + 1 << endl;
                return 0;
            }
        }
    }

    return 0;
}