原创代码
仅供参考
欢迎评论O(∩_∩)O~
/*
ID: 输你自己的
PROG: barn1
LANG: C++
*/
#include<iostream>
#include <cstdio>
#include <algorithm>
#include <cmath>
using namespace std;
int a[205];
int f[55][205];
int main()
{
freopen("barn1.in","r",stdin);
freopen("barn1.out","w",stdout);
for(int i=0;i<=50;i++) fill(f[i],f[i]+201,1000000);
int m,V,n;
cin>>m>>V>>n;
for(int i=1;i<=n;i++)
cin>>a[i];
sort(a+1,a+1+n);
//f[i][j] i个木板,j头牛
f[0][0]=0;
for(int i=1;i<=m;i++)
for(int j=1;j<=n;j++)
{
f[i][j]=f[i-1][j-1]+1;
f[i][j]=min(f[i][j],f[i-1][j]);
f[i][j]=min(f[i][j],f[i][j-1]+a[j]-a[j-1]);
}
cout<<f[m][n]<<endl;
return 0;
}
ps:
虽然,跟上一题有相似处,但这是典型的DP题~~
f[i][j]的解释在代码中
输入文件一定要排序