您的位置:首页 > 其它

水题引发的对数学的感想

2017-05-16 18:23 627 查看


这是应用数学专业的一道C语言题,挺水的一道题倒是引发了我不少感慨。

一开始用递归做,考虑暴力穷举,就像这样:

#include <stdio.h>

long long cnt;
int n;

void solve(int u)
{
int i;
if (u == 0)
{
cnt++;
return;
}
for (i = 1; i <= u; i++)
{
solve(u - i);
}
}

int main()
{
scanf("%d", &n);
solve(n);
printf("%lld", cnt);
return 0;
}然后,n=50的时候就超时了,想想这也是肯定的Orz

后来换了个思路,考虑分几步走完台阶,可以一步走完,分两步走完……也可以分n步每步走一个台阶。

考虑高中学过的隔板法,分i步走时有



种走法,那么所有走法就是:



实现成代码。。。。

#include <stdio.h>
#include <math.h>

int main()
{
int n;
long long ans;
scanf("%d", &n);
ans = round(pow(2, n - 1));
printf("%lld", ans);
return 0;
}这一共才几行(噗)

如果问题都能总结成数学公式那要能多简单。。。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: