偶见一道华为笔试题(简单的题更显算法啊--不可忽视的数学)

来源:互联网 发布:知而不争的争读音 编辑:程序博客网 时间:2024/04/29 14:05

网上逛着,看到一道华为往年的笔试编程题:写一个程序, 要求功能:求出用1,2,5这三个数不同个数组合的和为100的组合个数。如:100个1是一个组合,5个1加19个5是一个组合。。。。 请用C++语言写重亲千万不要冲动,脑袋一热写出:

#include<iostream>

using namespace std;
int main()
{
int x,y,z,number=0;
for (x=0; x<=100; x++)
for (y=0; y<=50; y++)
for (z=0; z<=20; z++)
if ((x+2*y+5*z)==100)
number++;
cout<<number<<endl;
return 0;

},看来人家的解释,重在考算法,其实这类题简单一项也能明白考官的意思,之所以在这里赘述呢,还是因为看来他给的算法,再和自己的想法对比一下,还是有些差别:

#include<iostream>

using namespace std;
int main()
{
int x,i,count=0;
for(i=0;i<21;i++)
{
count+=((100-5*i)/2+1);
}
cout<<count<<endl;
return 0;
},个人感觉这样好像是比较好看一些了!


0 0