网易散招的一道算法题

随机生成10个10-100的数字,确保其均值为75,写出算法?#网易#
全部评论
题目相当于要求生成10个10-100的数使得总和为750. 给个**思路,生成9个0-750的数(rand()%751即可)作为锚点,相当于把750分为了10份,这10份的每一个长度就是一个和为750的组合,然后判断这个10数组合是否满足10-100,不满足就重新生成
点赞 回复 分享
发布于 2017-04-23 11:29
public class Main { public static void main(String [] args){ int sum=750; int temp=0; for(int i=1;i<10;i++){ temp=(int) (Math.random()*100%91+10); while(sum-temp>(10-i)*100|| sum-temp<(10-i)*10){ temp=(int) (Math.random()*100%91+10); } System.out.print(temp+" "); sum-=temp; } System.out.print(sum);//第10个元素就等于sum } }
点赞 回复 分享
发布于 2017-04-23 14:25
sum-temp>(10-i-1)*100表示当前temp过小,即便之后每隔随机数都为100,其和也小于750;sum-temp<(10-i-1)*10表示当前temp过大,即便之后每隔随机数都为10,和也大于750.这两种情况都不满足,需要继续生成随机数
点赞 回复 分享
发布于 2017-04-23 14:10
//随机生成10个10-100的数字,确保其均值为75 #include <iostream> #include <vector> #include <ctime> using namespace std; int main(int argc, const char * argv[]) {     srand((unsigned)time(0));     int sum = 750;     int res=0;     vector<int> result;     int temp=0;     for (int i=0; i<10; ++i) {         temp = rand()%91 + 10;         if ((sum-temp) <= ((10-i-1)*100) && (sum-temp) >=0) {             result.push_back(temp);             sum -= temp;         }         else if ((sum-temp)<0){             temp = sum;             sum -= temp;             result.push_back(temp);         }         else{             int start = sum - ((10-i-1))*100;             int range = 100-start;             temp = rand()%(range+1) + start;             if (sum-temp<0) {                 temp = sum;             }             sum -= temp;             result.push_back(temp);         }         cout<<temp<<" ";         res += temp;     }     std::cout << res << endl;     return 0; }
点赞 回复 分享
发布于 2017-04-23 11:39

相关推荐

xdm怎么说&nbsp;要被拷打了&nbsp;担心是KPI
丹田:面就完了,就当日薪四位数的大佬免费给给你面试。
点赞 评论 收藏
分享
大方的大熊猫准备进厂:1.教育背景:你希望从事什么专业的工作你的主修课就是什么;成绩优秀是你应该做的,没什么可描述的,成绩不优秀也许人家在大学忙着创业呢?(成绩优秀不一定是好事,只能说明多元化的大学你上成了高中,没有真正上明白大学,反而体现了你死板,不爱社交,没有别的突出能力) 2.实践经历:你想表达的意思没有说清楚。你是说你会个性化服务,还是你有实习经历。如果没有带来,经济收益,表彰,更好的发展前景,那你还不如说说提升了自己哪些技能。你说有人给你送锦旗我都能明白你优秀,但是你说你会xxxx,你说这话谁信,证据呢。 3.入伍经历:你描述的就是你的工作职责或者你应该做的,并没有体现出来你把这个事情做好了,而且入伍经历并不能证明你能干好你要应聘的工作,不如只写经历其余所有内容都不写。 4.荣誉技能:重点突出一下,但不要过多描述,这些荣誉的含金量懂得都懂。 重点:你要应聘什么工作(具体岗位,实习生不具体),你的期望薪资
点赞 评论 收藏
分享
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务