2
去掉重复元素,不然前后相减为0
#include<iostream>
#include<algorithm>
using namespace std ;
const int N = 1e5 + 10;
int a[N];
int n , k ;
int main()
{
cin >> n >> k ;
for(int i = 1 ; i <= n ; i++)
{
cin >> a[i] ;
}
sort(a+1,a+1+n);
n = unique(a + 1,a + 1 + n) - a - 1;
int x = 1;
for(int i = 1 ; i <=k ; i++)
{
if(i > n) cout << 0 <<endl;
else
{
cout << a[i] - a[i-1] << endl;
}
}
return 0 ;
}
3
动态规划
#include<iostream>
using namespace std ;
typedef long long ll ;
const int N = 2010 , mod = 998244353;
int n ,m ,k;
ll f[N][N];
int main()
{
cin >> n >> m >> k ;
f[1][0] = m ;
for(int i = 2 ; i <= n ; i++)
{
for(int j = 0; j <= k && j < i ; j++)
{
f[i][j] = f[i-1][j];
if(j)f[i][j] = (f[i][j] + f[i-1][j-1] * (m-1)) % mod;
}
}
cout << f[n][k];
return 0 ;
}