//    uva 11357 Matches
//
// 题目大意:
//
// 给你n个火柴,用这n个火柴能表示的非负数有多少个,不能含有前导零
//
// 解题思路:
//
// f[i] 表示正好用i根火柴所能表示的整数的个数,则f[i + c[j]] += f[i];
// c[j] 为数字j所需要的火柴的数量,因为当j==0并且i==0的时候,我们不允许这样的
// 转移,因为i=0的时候不允许使用数字0,当n>=6时,再将0加上.我的理解是,当开始可以
// 用0的时候,那么后面的递推,就加上了前导零了,这样并不合法.而0的话我们只要在n>=6
// 的时候加上去就可以啦
//
// 感悟:
//
// 这道题,如果有前导零的话,那么我会这样的刷表法.f[i+c[j]] += f[i],但是
// 没有前导零的话,思索了许久,但是还是没有思路,原来可以在一开始的时候不把0
// 放入,即,不允许i==0的时候用上0,这样在累加的过程中,就不会有前导零,为什么
// 强调两遍呢,我觉得这就是精髓的所在。十分巧妙,继续加油吧~~~FIGHTING import java.util.*;
import java.io.*;
import java.math.BigInteger; class Main{ public static void main(String[] args){ final int MAX_N = ; BigInteger[] f = new BigInteger[]; int[] c = {,,,,,,,,,}; for (int i=;i<=;i++){
f[i] = new BigInteger("");
}
f[] = new BigInteger(""); for (int i=;i<=;i++){
for (int j=;j<;j++){
if (!(i == && j == ) && i + c[j] <= )
f[i+c[j]] = f[i+c[j]].add(f[i]);
}
} for (int i=;i<=;i++)
f[i] = f[i].add(f[i-]); int n;
Scanner sc = new Scanner(System.in);
while(sc.hasNextInt()){
n = sc.nextInt();
System.out.println(f[n].add( (n >= ? new BigInteger("") : new BigInteger(""))));
} } }

uva 11357 Matches的更多相关文章

  1. UVa 11375 - Matches

    http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&p ...

  2. uva 11375 Matches (递推)

    http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&p ...

  3. 【Java】【高精度】【递推】UVA - 11375 - Matches

    d[i+c[j]]+=d[i](c[j]是拼成j所需的火柴数) d[0]=1: 别忘了不能有前导零,所以当i为零时,不要尝试去拼成零.反而应该在n>=6时,最后给答案加1(单独拼出0). imp ...

  4. BigInteger

    首先上模板(不断更新中...)(根据刘汝佳AOAPCII修改) #include <iostream> #include <sstream> #include <cstd ...

  5. UVa 340 Master-Mind Hints (优化查找&复制数组)

    340 - Master-Mind Hints Time limit: 3.000 seconds http://uva.onlinejudge.org/index.php?option=com_on ...

  6. uva11357 Matches

    Matches UVA - 11375 题意: 给你n根matches, 你可以拼出多少个数字0~9. 不必全部用完. 解题思路: 1. 计数题, 本题可以用图来理解. 把"已经使用了i根m ...

  7. keil MDK error: L6236E: No section matches selector - no section 错误

    今天板子刚到,新建的第一个工程就报错了. .\Objects\cse.sct(7): error: L6236E: No section matches selector - no section t ...

  8. 解决Android中No resource found that matches android:TextAppearance.Material.Widget.Button.Inverse问题

    解决Android中No resource found that matches android:TextAppearance.Material.Widget.Button.Inverse问题http ...

  9. HDU5456 Matches Puzzle Game(DP)

    题目 Source http://acm.hdu.edu.cn/showproblem.php?pid=5456 Description As an exciting puzzle game for ...

随机推荐

  1. NMAP 基本用法

    Nmap 用途: 1.通过对设备或者防火墙的探测来审计它的安全性. 2.探测目标主机所开放的端口. 3.网络存储,网络映射,维护和资产管理.(这个有待深入) 4.通过识别新的服务器审计网络的安全性. ...

  2. vim段替换

    文件中有很多字段: dd ssdf df aaa="100" dd ssdf df aaa="200" asdf sdf sdf aaa="700&q ...

  3. win8 vs2010 openni2 配置

    打开一个新项目或者已存在的项目用以使用  OpenNI 在Visual Studio 菜单中, 打开项目菜单,选择项目属性. 在C/C++ 选项卡中, 在"常规" 下, 选择 &q ...

  4. JDK、JRE、JVM三者间的关系

    JDK(Java Development Kit)是针对Java开发员的产品,是整个Java的核心,包括了Java运行环境JRE.Java工具和Java基础类库.Java Runtime Enviro ...

  5. survey on Time Series Analysis Lib

    (1)I spent my 4th year Computing project on implementing time series forecasting for Java heap usage ...

  6. Excel中添加并使用宏实现批量更新数据

    一.状况描述    当我们需要后台更新大量数据的时候,可以使用该功能.二.解決方案    (1)新建一个Excel文件,并另存为启用宏的Excel工作簿,扩展名为.xlsm.    (2)在Excel ...

  7. 分组 cube rollup NVL (expr1, expr2)

    cube  rollup NVL (expr1, expr2)->expr1为NULL,返回expr2:不为NULL,返回expr1.注意两者的类型要一致 NVL2 (expr1, expr2, ...

  8. 【SQLServer】“无法对数据库’XXX’ 执行删除,因为它正用于复制”的解决方法

    警告: 一个或多个现有列的 ANSI_PADDING 设置为 "off",将以 ANSI_PADDING 为 "on" 的设置重新创建 [SQLServer]& ...

  9. db2设置共享内存

    db2 UPDATE DBM CFG USING INSTANCE_MEMORY 5242880 IMMEDIATEdb2 UPDATE DBM CFG USING INSTANCE_MEMORY A ...

  10. C++面试中关于sizeof问题总结

    原文:http://blog.sina.com.cn/s/blog_7c983ca60100yfdv.html#SinaEditor_Temp_FontName (1)      sizeof是操作符 ...