问一下为什么我memset哪儿最多设到127就变负数了?
#include <iostream>
#include <algorithm>
#include <cstring>
#include <cmath>
using namespace std;
struct book
{
int h,w;
} s[1005];
int dp[105][105],n,k;
bool cmp(book x,book y)
{
return x.h < y.h;
}
int main()
{
cin >> n >> k;
int differ = n-k;
for (int i = 1;i <= n;i++) cin >> s[i].h >> s[i].w;
sort(s+1,s+1+n,cmp);
memset(dp,127,sizeof(dp));//极限了,再大就要爆了(疑惑点)
for (int i = 1;i <= n;i++) dp[i][1] = 0;
for (int i = 2;i <= n;i++)
for (int j = 1;j < i;j++)
for (int t = 2;t <= min(i,differ);t++)
dp[i][t] = min(dp[i][t],dp[j][t-1] + abs(s[i].w - s[j].w));
int ans = 1e9;
for (int i = differ;i <= n;i++) ans = min(ans,dp[i][differ]);
cout << ans << endl;
return 0;
}
125:3
126:3
127:3
128:-2139062144
129:-2122219135
130:-2105376126