POJ 3036 Honeycomb Walk
2024-09-07 09:46:27
http://poj.org/problem?id=3036
在每一个格子可以转移到与这个各自相邻的六个格子
那么设置转移变量 只需要六个 int d[6][2] = {-1, 0, -1, 1, 0, 1, 1, 0, 1, -1, 0, -1};
然后设dp[i][j][k] : 第i步走到(j ,k) 的方式数
那么转移方程:
for (int m = 0; m < 6; m++)
dp[i][j][k] += dp[i-1][j+d[m][0]][k+d[m][1]]
三个维度的状态 最后得到dp[n][O][O] 就是最后回到原点的个数 六边形只需要坐标六个变化
因为最多n = 14
最多上下最多可以走14 / 2 = 7个
所以设置(7 , 7) 为原点
#include <iostream>
#include <stdio.h>
#include <string.h>
#define INF 0x3fffffff
using namespace std; long long dp[][][];
int d[][] = {-, , -, , , , , , , -, , -}; //开始坐标标错了
int dx[]={,,,-,,-};
int dy[]={,,,,-,-};
int main()
{
memset(dp, , sizeof(dp));
dp[][][] = ;
for (int i = ; i <= ; i++)
for(int j = ; j <= ; j++)
for(int k = ; k <= ; k++)
for(int m = ; m < ; m++)
dp[i][j][k] += dp[i-][j+d[m][]][k+d[m][]];
int T;
cin >> T;
while (T--)
{
int n;
cin >> n;
cout << dp[n][][] << endl;
}
return ;
}
最新文章
- Linux命令dos2unix 从windows转换到linux --- nuix2dos从linux转换到windows
- HTML <;label>; 标签
- .Net Core + Angular2 环境搭建
- JS 关闭 页面 浏览器 事件
- 8VC Venture Cup 2016 - Elimination Round
- java使用dom4j解析xml文件
- 网站后台的lnmp启动与重启
- C:移位运算符
- 使用C#在word中插入页眉页脚
- Selenium如何实现dropbar移动
- Python新手学习基础之运算符——位运算
- cocos2dx android resources.ap_ does not exist
- Spring的监听器ContextLoaderListener
- linux 安装sysstat使用iostat、mpstat、sar、sa
- antlr 4新特性总结及与antlr v3的不同
- linux 下启动java jar包 shell
- SSM商城项目(十一)
- 销售合同金额数据从Excel导入
- Python+Selenium学习--操作测试对象
- Blue_Flke团队项目设计完善&;编码测试