C- Replacement
题意
有一个数组,你需要从数组中选择一个元素,并且找一个能够找到的最小数来替换这个元素,并且按照非递减的顺序输出操作后的数组,要求:不能用一个数的本身替换它。
思路:
因为选择元素没有特别的要求,所以可以取简单的情况——最大元素或者最小元素。又因为要找一个最小的数来替换元素,那么我们就找原数组的最大元素替换它即可
代码:
#include<iostream>
#include<algorithm>
#include<cstdio>
#include<cmath>
#include<map>
using namespace std;
const int maxn=1e5+10;
int a[maxn],n,x;
int main(){
scanf("%d",&n);
for(int i=0;i<n;i++)
scanf("%d",&a[i]);
sort(a,a+n);
if(a[n-1]==1){//特判一下数组最大元素是1的时候就不能用1来替换该元素了
a[n-1]=2;
}
else
a[n-1]=1;
sort(a,a+n);
for(int i=0;i<n;i++)
cout<<a[i]<<' ';