火柴 UVa11375

1.题目描述:点击打开链接

2.解题思路:本题利用递推关系解决。首先可以把“已经使用过的火柴数i”看做状态,可以得到一个图,从前往后每添加一个数字x,就从状态i转移到了i+c[x],其中c[x]代表数字x需要的火柴数。当i=0时不允许使用数字0(当n≥6,给答案单独加上1,代表整数0)。令d(i)表示从结点0到结点i的路径条数,则答案为f(n)=d(1)+d(2)+...+d(n)。

程序实现时,我们可以按照从小到大的顺序用d(i)更新所有的d(i+c[j])(j取遍数字0~9)。由于结果非常大, 需要使用高精度模板存储结果。

3.代码:

  1. #define _CRT_SECURE_NO_WARNINGS
  2. #include<iostream>
  3. #include<algorithm>
  4. #include<string>
  5. #include<sstream>
  6. #include<set>
  7. #include<vector>
  8. #include<stack>
  9. #include<map>
  10. #include<queue>
  11. #include<deque>
  12. #include<cstdlib>
  13. #include<cstdio>
  14. #include<cstring>
  15. #include<cmath>
  16. #include<ctime>
  17. #include<functional>
  18. using namespace std;
  19. typedef long long ll;
  20. typedef unsigned long long ull;
  21. typedef pair<int, int> P;
  22. typedef pair<long long, long long> PL;
  23. #define me(s) memset(s,0,sizeof(s))
  24. #define For(i,n) for(int i=0;i<(n);i++)
  25. #define N 2000+10
  26. int n;
  27. int c[] = { 6, 2, 5, 5, 4, 5, 6, 3, 7, 6 };
  28. struct Node
  29. {
  30. int p[500];
  31. int len;
  32. Node()
  33. {
  34. me(p); len = 0;
  35. }
  36. Node(int a)
  37. {
  38. p[0] = a;
  39. len = 1;
  40. }
  41. Node operator +(const Node&a)const
  42. {
  43. Node b;
  44. b.len = max(len, a.len);
  45. For(i, b.len)
  46. {
  47. b.p[i] += p[i] + a.p[i];
  48. b.p[i + 1] = b.p[i] / 10;
  49. b.p[i] %= 10;
  50. }
  51. if (b.p[b.len] > 0)b.len++;
  52. return b;
  53. }
  54. void out()
  55. {
  56. if (!len)puts("0");
  57. else{
  58. for (int i = len - 1; i >= 0; i--)
  59. printf("%d", p[i]);
  60. puts("");
  61. }
  62. }
  63. }d[N];
  64. void init()
  65. {
  66. d[0].p[0] = 1;
  67. d[0].len = 1;
  68. For(i, 2001)
  69. {
  70. For(j,10)
  71. if (i + c[j] < 2001 && !(i == 0 && j == 0))//i=j=0时不允许转移
  72. d[i + c[j]] = d[i + c[j]] + d[i];
  73. }
  74. d[6] = d[6] + Node(1);
  75. for (int i = 2; i < 2001; i++)
  76. d[i] = d[i] + d[i - 1];
  77. }
  78. int main()
  79. {
  80. //freopen("t.txt", "r", stdin);
  81. init();
  82. while (cin >> n)
  83. {
  84. d[n].out();
  85. }
  86. return 0;
  87. }

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/549307.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

EntitySpaces2009的开发文档地址

EntitySpaces2009的开发文档地址&#xff0c;开发文档做得还是很不错的&#xff0c;主要的和关键的问题都在其中说明了&#xff0c;比示例做得好。 http://developer.entityspaces.net/documentation/Default.aspx转载于:https://www.cnblogs.com/Rising/archive/2010/01/31/16…

ACM 博弈专题(5种模板)

最近算法课在学博弈论的知识&#xff0c;顺手把算法题中的涉及到博弈论一并总结了 这篇文章的有些内容是参考了大佬的 可能有遗漏。。。。 (一)巴什博弈&#xff08;BAsh Game) 题目模板 只有一堆n个物品两个人轮流取&#xff0c;每次只能取1~m个物品&#xff0c;谁先取完&am…

让sky Driver成为你的可见硬盘

网盘就不用多说了&#xff0c;国内国外的都很多&#xff0c;但是sky Driver以25G的大容量还是吸引着我&#xff0c;看来还是盖茨比较称钱&#xff08;sorry&#xff0c;方言&#xff0c;意思就是nb的意思&#xff09;&#xff0c;但是一向以用户体验非常不错著称的microsoft在这…

初学博弈论

一、巴什博奕(Bash Game) 基本描述&#xff1a; 只有一堆n个石子&#xff0c;两个人轮流从这堆石子中取石子&#xff0c;规定每次至少取一个&#xff0c;最多取m个&#xff0c;最后取完的人获胜。 分析&#xff1a; 当n < m的时候&#xff0c;显然先手获胜&#xff0c;因…

设计模式----Adapter(适配器)

作用: 将一个类的接口转换成客户希望的另外一个接口。Adapt 模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。 UML示意图 1)采用继承原有接口类的方式 2)采用组合原有接口类的方式 解析: Adapt模式其实就是把完成同样的一个功能但是接口不能兼容的类桥接在一起…

浅谈算法——博弈论

注&#xff1a;下列游戏都建立在双方都有最优策略的情况下&#xff0c;若未加以说明&#xff0c;则每人每次至少取一个石子。 例1&#xff1a;取石子游戏之一 有两个游戏者&#xff1a;A和B。有n颗石子。 约定&#xff1a;两人轮流取走石子&#xff0c;每次可取1、2或3颗。A先…

linux系统管理学习笔记之八---进程与作业的管理

linux系统管理学习笔记之八---进程与作业的管理 2010-01-05 13:00:42标签&#xff1a;linux 进程    [推送到技术圈] 版权声明&#xff1a;原创作品&#xff0c;允许转载&#xff0c;转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。ht…

C++中的srand(time(null))利用时间设置随机种子产生随机数

首先需要声明的是&#xff0c;计算机不会产生绝对随机的随机数&#xff0c;计算机只能产生“伪随机数”。其实绝对随机的随机数只是一种理想的随机数&#xff0c;即使计算机怎样发展&#xff0c;它也不会产生一串绝对随机的随机数。计算机只能生成相对的随机数&#xff0c;即伪…

srand(设置随机数种子)

srand&#xff08;设置随机数种子&#xff09; 相关函数rand&#xff0c;random srandom 表头文件#include<stdlib.h> 定义函数void srand (unsigned int seed); 函数说明srand()用来设置rand()产生随机数时的随机数种子。参数seed必须是个整数&#xff0c;通常可以利用g…

Exchange 2003升级至Exchange 2007

环境: 三台机器:DC Exchange2003 Exchange2007 计算机名:DC MAIL NEWMAIL 前提条件: 1.Exchange组织设置为纯模式。 2.Exchange 2003安装SP2 3.拥有Schema Master角色的DC及所有GC运行在Windows 2003 SP1或更高以上 4.AD域提升到最高 不被Exchange 2007支持的组件有: Nov…

蓝桥杯 标题:纵横火柴旗子

【编程题】这是一个纵横火柴棒游戏。如图[1.jpg]&#xff0c;在一个3x4的方格中&#xff0c;游戏的双方轮流放置火柴棒。其规则是&#xff1a;1. 不能放置在已经放置火柴棒的地方&#xff08;即只能在空格中放置&#xff09;。2. 火柴棒的方向只能是垂直或水平放置。3. 火柴棒不…

易语言源代码毁来者来了!!

2009年12月7号16:34分&#xff0c;恐怖现象在次出现了&#xff01; 在编译易程序时&#xff0c;突然提示&#xff0c;某某模块找不到了&#xff0c;我跑到软件目录下一看&#xff0c;妈啊不得了&#xff0c;目录中一百多个文件能删除的全部都被删除了&#xff0c;只剩余几个残破…

矩阵连乘 动态规划 详解

矩阵连乘问题----动态规划(转载)&#xff1a; 给定n个矩阵&#xff5b;A1,A2,…,An&#xff5d;&#xff0c;其中Ai与Ai1是可乘的&#xff0c;i1&#xff0c;2…&#xff0c;n-1。如何确定计算矩阵连乘积的计算次序&#xff0c;使得依此次序计算矩阵连乘积需要的数乘次数最少。…

网上威客的猫腻

近期在威客网上转了转 在国内的几大威客&#xff08;任务中国 taskcn,项目交易网sxsoft&#xff09;等上看了看 发现那竞标人真是多啊 经过一两次尝试&#xff08;想弄点小零花钱嘛&#xff09; 发现其中还真有不少猫腻 这里重灾区就是项目交易网 www.sxsoft.com 该网站是北京一…

php中mysql_connect与mysql_pconnect的区别

前阵子去面试被问到了mysql_connect跟mysql_pconnect的区别, 很不幸本人只答出一条, 似乎还没被认可~回来翻了下php手册记录之.简单的来说mysql_pconnect是用来在php与mysql间建立一条持续连接, 一般php的执行模式是脚本开始执行时初始化所有资源, 脚本运行结束后释放所有资源.…

软件测试-白盒测试(六种覆盖准则)

白盒测试过程中&#xff1a; 六种覆盖方法中&#xff1a;覆盖强度由弱到强的顺序依次是&#xff1a; 语句覆盖判定逻辑覆盖条件逻辑覆盖‘判断逻辑条件覆盖条件组合覆盖路径覆盖 举例&#xff1a; if(a&&b) {cab; } else {ca-b; }12345678 1.语句覆盖&#xff1a;…

Linux 的mv命令

命令格式:mv a b 总结起来有以下几种情况: a是文件名,b不存在 a改名为b。 a是文件名,b是文件名 a改名为b,原b被覆盖。 a是文件名,b是目录名,b下没有名为a的文件或目录 a移动到b目录下。 a是文件名,b是目录名,b下没有…

白盒测试中的六种覆盖方法及案例分析

语句覆盖是指选择足够的测试用例&#xff0c;使得运行这些测试用例时&#xff0c;被测程序的每一个语句至少执行一次&#xff0c;其覆盖标准无法发现判定中逻辑运算的错误&#xff1b;判定覆盖<又叫分支覆盖率>是指选择足够的测试用例&#xff0c;使得运行这些测试用例时…

回文数的C语言表述

2019独角兽企业重金招聘Python工程师标准>>> 现在的程序针对范围是0开始。直到溢出 #include #includemain(){ int i; /*本人的电脑用long和int一样*/for(i0;i<500;i){ if(svalue(i)) printf("%3d,",i); }getch();} int sv…

别人的爬虫在干啥

古人云博采众长&#xff0c;我们来看看其他人的爬虫是怎么学和用的&#xff1a; 爬虫文章 in 简书程序员专题&#xff1a; like:128 - Python 爬取落网音乐 like:127 - 【图文详解】python爬虫实战——5分钟做个图片自动下载器like:97 - 用Python写一个简单的微博爬虫like:87 …