http://community.topcoder.com/stat?c=problem_statement&pm=4471&rd=10711

这题果然是道简单题,图+DP。拿道题便觉得可以用邻接表表示,然后想要找所有的,是不是要BFS,DFS搜索/遍历?又觉得到过的节点又能回去不好算。忽然间想到每个节点都来自旁边的节点,这样就有阶段了,马上出来状态转移方程,DP得解。

public class UnsealTheSafe
{
public long countPasswords(int N)
{
int[][] G = new int[10][];
G[0] = new int[]{7};
G[1] = new int[]{2, 4};
G[2] = new int[]{1, 3, 5};
G[3] = new int[]{2, 6};
G[4] = new int[]{1, 5, 7};
G[5] = new int[]{2, 4, 6, 8};
G[6] = new int[]{3, 5, 9};
G[7] = new int[]{4, 8, 0};
G[8] = new int[]{5, 7, 9};
G[9] = new int[]{6, 8}; long[][] DP = new long[10][30];
for (int i = 0; i < 10; i++)
{
DP[i][1] = 1;
}
for (int i = 2; i <= N; i++)
{
for (int j = 0; j < 10; j++)
{
for (int k = 0; k < G[j].length; k++)
{
DP[j][i] += DP[G[j][k]][i-1];
}
}
}
long sum = 0;
for (int i = 0; i < 10; i++)
{
sum += DP[i][N];
}
return sum;
}
}

  

[topcoder]UnsealTheSafe的更多相关文章

  1. TopCoder kawigiEdit插件配置

    kawigiEdit插件可以提高 TopCoder编译,提交效率,可以管理保存每次SRM的代码. kawigiEdit下载地址:http://code.google.com/p/kawigiedit/ ...

  2. 记第一次TopCoder, 练习SRM 583 div2 250

    今天第一次做topcoder,没有比赛,所以找的最新一期的SRM练习,做了第一道题. 题目大意是说 给一个数字字符串,任意交换两位,使数字变为最小,不能有前导0. 看到题目以后,先想到的找规律,发现要 ...

  3. TopCoder比赛总结表

    TopCoder                        250                              500                                 ...

  4. Topcoder几例C++字符串应用

    本文写于9月初,是利用Topcoder准备应聘时的机试环节临时补习的C++的一部分内容.签约之后,没有再进行练习,此文暂告一段落. 换句话说,就是本文太监了,一直做草稿看着别扭,删掉又觉得可惜,索性发 ...

  5. TopCoder

    在TopCoder下载好luncher,网址:https://www.topcoder.com/community/competitive%20programming/ 选择launch web ar ...

  6. TopCoder SRM 596 DIV 1 250

    body { font-family: Monospaced; font-size: 12pt } pre { font-family: Monospaced; font-size: 12pt } P ...

  7. 求拓扑排序的数量,例题 topcoder srm 654 div2 500

    周赛时遇到的一道比较有意思的题目: Problem Statement      There are N rooms in Maki's new house. The rooms are number ...

  8. TopCoder SRM 590

     第一次做TC,不太习惯,各种调试,只做了一题...... Problem Statement     Fox Ciel is going to play Gomoku with her friend ...

  9. Topcoder Arena插件配置和训练指南

    一. Arena插件配置 1. 下载Arena 指针:http://community.topcoder.com/tc?module=MyHome 左边Competitions->Algorit ...

随机推荐

  1. Shell变量命名规则

    变量与变量内容以一个等号『=』来连结,如下所示: 『myname=chenfei0801』 等号两边不能直接接空格符,如下所示为错误: 『myname = chenfei0801』或『myname=c ...

  2. jQuery各种选择器总结

    首先介绍几个简单的: id选择器 $('#p1').html('<font color='red'>nihao</font>); 类选择器:表示页面上所有应用了a样式的标签 $ ...

  3. SharePoint Dialog 使用

    SharePoint中弹出模态窗口对体验提高太大了 方法为: 父页面中调用子页面: function showDialog() {        var options = {             ...

  4. Liferay环境搭建实录

    1. 安装Liferay IDE:打开Eclipse的Help-->Eclipse Marketplace,在下图所示搜索框中输入liferay,回车搜索: 搜索结果如下图所示: 点击insta ...

  5. Java 文件下载

    public HttpServletResponse download(String path, HttpServletResponse response) { try { // path是指欲下载的 ...

  6. 利用SQL进行推理

    数据库环境:SQL SERVER 2008R2 有如下需求: Baker, Cooper, Fletcher, Miller and Smith住在一座房子的不同楼层.Baker 不住顶层.Coope ...

  7. android网络图片查看器

    package com.itheima.netimageviewer; import java.io.BufferedReader; import java.io.File; import java. ...

  8. Oracle中的rownum,ROWID的 用法

    1.ROWNUM的使用——TOP-N分析 使用SELECT语句返回的结果集,若希望按特定条件查询前N条记录,可以使用伪列ROWNUM. ROWNUM是对结果集加的一个伪列,即先查到结果集之后再加上去的 ...

  9. java_jdbc_oracle简单总结(2016-11-23)

    JDBC连接oracle的实例 好久没写过jdbc,基本忘干净了,随意插一个图,简单学习一下.然后干别的..... 使用jdbc操作数据库步骤是固定的 1.将驱动包导入到数据库,每一个数据库的驱动包都 ...

  10. QT UI 如果发现布局之后,button不在父widget的中间

    如果发现布局之后,button不在父widget的中间: 调整父widget的布局参数: