思路:
每输入一个数就用visit数组记录这个数已经输入过了的记录,这样输入下一个数的时候,判断一下是否是前面有的数。这是保留流做法,耗内存。。。
#include<iostream>
#include<string.h>
using namespace std;
bool visit[10000];//用数组记录一个数是否被使用过
int main()
{
memset(visit, false, sizeof(visit));
int n;
int a[10000];
cin >> n;
for (int i = 1; i <= n; i++)
{
cin >> a[i];
while (visit[a[i]])
{
a[i]++;
}
visit[a[i]] = 1;
cout << a[i] << " ";
}
system("pause");
return 0;
}
修改
加入set函数来判断
#include<set>
#include<iostream>
#include<string.h>
using namespace std;
set<int> s;
int main()
{
int n;
int a[100000];
cin >> n;
for (int i = 1; i <= n; i++)
{
cin >> a[i];
while(s.count(a[i]) ==1)//如果s中有这个数
{
a[i]++;//有这个数就+1
}
s.insert(a[i]);
cout << a[i] << " ";
}
system("pause");
return 0;
}