C语言编程——有趣的数(使用动态规划实现)

虽然大三上学期学习了动态规划算法,可也只是简单地了解什么是动态规划算法,纸上谈兵而已,并没有真正地将这种算法运用到解题中,没有真正体会到动态规划算法的妙处。最近在准备CCF,有一道往年题目需要运用到动态规划,我将这道题认真的敲了一下,也上网查阅参考了各位大神的代码。收获颇丰。

我的体会如下:

算法的学习是需要实践的。不要想着先学习了理论再去敲代码的想法已经过时了。说说我的想法吧。看到这道题目后,我首先想到的是运用排列组合思想求出公式,甚至拿出算法书要补充这方面的知识后再来写这道题目。但是由于拖延症,我将这道题目放了两天没去管它。眼见着CCF复习坚持不下去了。于是我逼着自己,硬着头皮,开始敲代码。实在不会,就上网查,终于理解了思路,并写出了独属于我的C语言代码。

 #include <stdio.h>
 #include <stdlib.h>
 #include <string.h>
 #include <math.h>
 int main()
 {
 long mod = 1000000007;
 int number;
 int i;
 long long status[1001][6] = {0};
 scanf("%d",&number);
 for (i = 1; i < number + 1; i ++)
  {
  status[i][0] = 1;
  status[i][1] = (status[i - 1][1] * 2 + status[i - 1][0]) % mod;
  status[i][2] = (status[i - 1][2] + status[i - 1][0]) % mod;
  status[i][3] = (status[i - 1][3] * 2 + status[i - 1][1]) % mod;
  status[i][4] = (status[i - 1][4] * 2 + status[i - 1][2] + status[i - 1][1]) % mod;
  status[i][5] = (status[i - 1][5] * 2 + status[i - 1][4] + status[i - 1][3]) % mod;
  }
  printf("%lld\n",status[number][5]);
  return 0;
  }


转载于:https://my.oschina.net/u/2541879/blog/653065

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值