这段代码是过了的:
#include <iostream>
#include <algorithm>
#include <cstring>
using namespace std;
#define ms(a, b) memset(a, b, sizeof a)
int n;
int sum;
int cur = 1;
int nums[250];
int dp[1000010];
int main(){
cin >> n;
nums[++ sum] = 1;
for(int i = 1; i <= 8; ++ i) { cur *= 6; nums[++ sum] = cur; }
cur = 1;
for(int i = 1; i <= 6; ++ i) { cur *= 9; nums[++ sum] = cur; }
stable_sort(nums + 1, nums + sum + 1);
ms(dp, 0x3f);
dp[0] = 0;
for(int i = 1; i <= sum; ++ i) {
for(int j = nums[i]; j <= n; ++ j) {
dp[j] = min(dp[j], dp[j - nums[i]] + 1);
}
}
cout << dp[n] << '\n';
}
但是把 ms(dp, 0x3f) 换成 ms(dp, 0x7fffffff) 就过不了样例(-1),请问这是什么原因QAQ