设数问题
查看原帖
设数问题
424241
liujiafang楼主2022/11/22 20:02

问一下为什么我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

2022/11/22 20:02
加载中...