乍一看题目很长看起来很复杂的亚子,其实就是纸老虎,简单的模拟题。大致题意为:已知数组的总和sum、大小n和数字范围[1-6],求数组的某一种组合。思路如下:
1. 求该数组的平均值mean_n,若平均值超过数字范围,则返回空数组;
2. 数组中每个数初始为mean_n,此时还剩下sum%n的值未分配;
3. 剩下的值挨个分配,不足6的值直接加到6,直到剩余值分配完为止。
c++代码如下:
class Solution {//没啥技巧 类似贪心 优先都分6
public:
vector missingRolls(vector& rolls, int mean, int n) {
int m=rolls.size();
int sum_m=0;
for(int i=0;i ans;
int resdisual=sum_n%n;
if(mean_n>6||(mean_n==6&&resdisual>0)||sum_n0;i++)
{
if(resdisual>(6-ans[i])){
resdisual-=(6-ans[i]);
ans[i]=6;
}
else{
ans[i]+=resdisual;
resdisual=0;
}
}
return ans;
}
};



