第二个重复出现的数 (c++),该如何处理
第二个重复出现的数 (c++)
给定一个正整数数组(元素的值都大于零),输出数组中第二个重复出现的正整数,如果没有,则输出字符串"NOT EXIST"。
关于输入
第一行为整数m,表示有m组数据。
其后每组数据分两行:
第一行为正整数n(3<n<500),表示数组的长度;
第二行是n个正整数,正整数间用空格分开。
关于输出
有m行输出,每行输出对于数组中第二个重复出现的正整数,如果没有,则输出字符串"NOT EXIST"。
例子输入
5
10
1 3 5 7 9 7 8 5 2 6
10
1 3 5 5 7 9 7 8 2 6
10
1 3 5 5 7 9 4 8 2 6
10
1 3 5 7 2 9 9 8 7 5
10
1 3 5 2 7 9 9 8 7 5
例子输出
7
7
NOT EXIST
7
7
我编的程序有错么 查不出来啊
#include<iostream>
using namespace std;
int main(){
int n,m,k,s,i,j,b;
int a[500];
cin>>n;
for(i=0;i<n;i++)
{
s=b=0;
cin>>m;
for(j=0;j<m;j++)
{
cin>>a[j];
}
for(j=1;j<m;j++)
{
for(k=0;k<j;j++)
{
if(a[k]==a[j])
{
if(b<k)
{
b=k;
}
s=s+1;
if(s==2)
{
cout<<a[b]<<endl;
}
}
}
}
if(s<2)
cout<<"NOT EXIST"<<endl;
}
return 0;
}
------解决思路----------------------
------解决思路----------------------
给定一个正整数数组(元素的值都大于零),输出数组中第二个重复出现的正整数,如果没有,则输出字符串"NOT EXIST"。
关于输入
第一行为整数m,表示有m组数据。
其后每组数据分两行:
第一行为正整数n(3<n<500),表示数组的长度;
第二行是n个正整数,正整数间用空格分开。
关于输出
有m行输出,每行输出对于数组中第二个重复出现的正整数,如果没有,则输出字符串"NOT EXIST"。
例子输入
5
10
1 3 5 7 9 7 8 5 2 6
10
1 3 5 5 7 9 7 8 2 6
10
1 3 5 5 7 9 4 8 2 6
10
1 3 5 7 2 9 9 8 7 5
10
1 3 5 2 7 9 9 8 7 5
例子输出
7
7
NOT EXIST
7
7
我编的程序有错么 查不出来啊
#include<iostream>
using namespace std;
int main(){
int n,m,k,s,i,j,b;
int a[500];
cin>>n;
for(i=0;i<n;i++)
{
s=b=0;
cin>>m;
for(j=0;j<m;j++)
{
cin>>a[j];
}
for(j=1;j<m;j++)
{
for(k=0;k<j;j++)
{
if(a[k]==a[j])
{
if(b<k)
{
b=k;
}
s=s+1;
if(s==2)
{
cout<<a[b]<<endl;
}
}
}
}
if(s<2)
cout<<"NOT EXIST"<<endl;
}
return 0;
}
------解决思路----------------------
#include<iostream>
using namespace std;
int main(){
int n,m,k,s,i,j,b;
int a[500];
cin>>n;
for(i=0;i<n;i++)
{
s=b=0;
cin>>m;
for(j=0;j<m;j++)
{
cin>>a[j];
}
for(j=1;j<m;j++)
{
for(k=0;k<j;k++)////
{
if(a[k]==a[j])
{
s=s+1;
// break;
if(s==2)
{
cout<<a[k]<<endl;///
}
break;
}
}
}
if(s<2)
cout<<"NOT EXIST"<<endl;
}
return 0;
}
------解决思路----------------------
/*
* bbs.csdn.net/topics/390921307
*/
#include <stdio.h>
int find(int a[], int n)
{
int i, j, k;
k = 0;
for (i = 0; i < n; i++) {
for (j = i + 1; j < n; j++) {
if (a[i] == a[j]) {
if (++k == 2)
return a[i];
break;
}
}
}
return 0;
}
int
main(int argc, char *argv[])
{
int r;
int i, j, m, n;
int a[500];
scanf("%d\n", &m);
for (j = 0; j < m; j++) {
scanf("%d", &n);
for (i = 0; i < n; i++) {
scanf("%d", &a[i]);
}
r = find(a, n);
if (r)
printf("%d\n", r);
else
printf("%s\n", "NOT EXIST");
}
return 0;
}
/*
给定一个正整数数组(元素的值都大于零),输出数组中第二个重复出现的正整数,如果没有,则输出字符串"NOT EXIST"。
关于输入
第一行为整数m,表示有m组数据。
其后每组数据分两行:
第一行为正整数n(3<n<500),表示数组的长度;
第二行是n个正整数,正整数间用空格分开。
关于输出
有m行输出,每行输出对于数组中第二个重复出现的正整数,如果没有,则输出字符串"NOT EXIST"。
例子输入
5
10
1 3 5 7 9 7 8 5 2 6
10
1 3 5 5 7 9 7 8 2 6
10
1 3 5 5 7 9 4 8 2 6
10
1 3 5 7 2 9 9 8 7 5
10
1 3 5 2 7 9 9 8 7 5
例子输出
7
7
NOT EXIST
7
7
*/