题意分析
给出n个数,每次操作可以将一个数+1,要使这n个数都不同,至少要加多少次。
sort下挨个遍历,如果当前数小于等于前一个数,则将该数++。
代码总览
#include<bits/stdc++.h>
using namespace std;
const int nmax = 3005;
int num[nmax];
int main(){
int n,ans = 0;
scanf("%d",&n);
for(int i = 0;i<n;++i) scanf("%d",&num[i]);
sort(num,num+n);
for(int i = 1;i<n;++i){
while(num[i] <= num[i-1]){
num[i]++;
ans++;
}
}
printf("%d\n",ans);
return 0;
}
本文介绍了一种算法,用于解决使数组中所有元素变得各不相同所需的最小操作次数问题。通过排序数组并检查相邻元素是否相等来实现,若相等则递增直至不等,累计递增次数即为答案。
182

被折叠的 条评论
为什么被折叠?



