UVA 11375 Matches(递推)
来源:互联网 发布:盛世网络兼职平台官网 编辑:程序博客网 时间:2024/06/06 04:01
题目地址:https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&category=25&page=show_problem&problem=2370
思路:mat[x]表示数字x所需的火柴数,则当有i根火柴时,每添加一个数字x,就行状态i转移到状态i+mat[x]。令d[i]表示状态i个火柴时的方案数,则每次从状态i到状态i+mat[x]的方案数即为d[i+mat[x]]+=d[i]。答案即为f[1]+f[2]+...+f[n](火柴不必全部使用完)。由于不允许前导零存在,则当火柴数为0时,不允许其组成数字0(最后若火柴数大于6,则最后结果加一,即加上组成0)。
import java.math.BigInteger;import java.util.Scanner;public class Main{static final int maxn=2000+50;public static void main(String[] args){int[] mat={6,2,5,5,4,5,6,3,7,6};BigInteger[] d=new BigInteger[maxn];BigInteger[] f=new BigInteger[maxn];d[0]=BigInteger.ONE;for(int i=1;i<maxn;i++){d[i]=BigInteger.ZERO;f[i]=BigInteger.ZERO;}for(int i=0;i<maxn;i++){for(int j=0;j<10;j++){if(i==0&&j==0) continue;if(i+mat[j]<maxn) d[i+mat[j]]=d[i+mat[j]].add(d[i]);}}for(int i=2;i<maxn;i++) f[i]=f[i-1].add(d[i]);Scanner in=new Scanner(System.in);while(in.hasNext()){int n=in.nextInt();if(n>=6){System.out.println(f[n].add(BigInteger.ONE));}else{System.out.println(f[n]);}}}}
阅读全文
0 0
- UVA 11375 Matches(递推)
- uva 11375 - Matches(递推)
- Uva 11375 Matches 解题报告(递推+高精度)
- UVa 11375 - Matches (递推 JAVA 高精度)
- 动态规划,递推,高精度(Matches,uva 11375)
- UVA 11375 - Matches (数学——递推)
- uva 11375 Matches 递推关系||DP||高精度
- UVA 11375 Matches——递推+高精度
- Matches(uva 11375)
- UVA 11375 Matches (dp+高精度)【模板】
- Matches UVA 11375
- uva 11375 - Matches
- UVA 11375 - Matches
- UVA 11375 - Matches
- UVA - 11375 Matches
- UVa:11375 Matches
- UVa 11375 Matches
- UVa 11375 Matches
- Leetcote 130. Surrounded Regions
- 第一篇博客
- 基于BlueZ5.44协议栈的RTL8723 BLE蓝牙连接(一)
- android fragment详解
- 小朋友排队
- UVA 11375 Matches(递推)
- 是不是每一个IT人的身体都很差
- 模板之类模板(数组类模板)
- JAVA深入
- java 读写挂
- Android Binder,Android进程间通信机制原理详解
- 操作系统原理读书笔记之文件系统
- 单词长度
- JVM入门:垃圾回收