递归--练习11--noi9273 PKU2506Tiling
递归--练习11--noi9273 PKU2506Tiling
一、心得
25 a[i]%=10;(高精度时)
26 这里错了,花了好久改好
27
28
29 int* f(int n){
30 if(dp[n][0]!=0) return dp[n];
31 else if(0==n) return dp[0];
32 else if(1==n) return dp[1];
33 else{
34
35 give(jia(f(n-1),chen(f(n-2),2)),dp[n]);
36 return dp[n];
37 }
38 }
39 直接这样写的话f(n-1)那些的值一直被改变 ,指针需要去看看
40 二维指针就是地址
41
42 整个测试有多组数据,请做到文件底结束。
43 while(scanf("%d",&n)!=EOF){
二、题目
9273:PKU2506Tiling
- 总时间限制:
- 2000ms
- 单个测试点时间限制:
- 1000ms
- 内存限制:
- 131072kB
- 描述
-
对于一个2行N列的走道。现在用1*2,2*2的砖去铺满。问有多少种不同的方式。
下图是一个2行17列的走道的某种铺法。
- 输入
-
整个测试有多组数据,请做到文件底结束。每行给出一个数字N,0 <= n <= 250
- 输出
-
如题
- 样例输入
-
2
8
12
100
200 - 样例输出
-
3
171
2731
845100400152152934331135470251
1071292029505993517027974728227441735014801995855195223534251
三、AC代码
/*
noi9273 PKU2506Tiling 就是好好找子问题就好了 找出递推关系式即可:
第一块1*2横放:
f(n)=f(n-2)
第一块1*2竖放:
f(n)=f(n-1)
第一块2*2:
f(n)=f(n-2) 故f(n)=f(n-1)+2*f(n-2);
边界条件
f(0)=1
f(1)=1
f(2)=3 高精度 (用个2维数组把每一个数的每一位都存下来即可)
其实加和乘里面只需要有加,因为乘2完全可以看成想加
记忆化递归 a[i]%=10;
这里错了,花了好久改好 int* f(int n){
if(dp[n][0]!=0) return dp[n];
else if(0==n) return dp[0];
else if(1==n) return dp[1];
else{ give(jia(f(n-1),chen(f(n-2),2)),dp[n]);
return dp[n];
}
}
直接这样写的话f(n-1)那些的值一直被改变 ,指针需要去看看
二维指针就是地址 整个测试有多组数据,请做到文件底结束。
while(scanf("%d",&n)!=EOF){
*/
#include <iostream>
#define Max 300
using namespace std;
int dp[Max][Max];//用个2维数组把每一个数的每一位都存下来
//打印结果
void print(int dp[]){
for(int i=dp[];i>=;i--){
cout<<dp[i];
}
cout<<endl;
}
//高精度乘单精度
int* chen(int a[],int b){
//乘
for(int i=;i<=a[];i++){
a[i]*=b;
}
//处理进位
for(int i=;i<=a[];i++){
if(a[i]>=){
a[i]%=;
a[i+]++;
}
}
//更正位数
while(a[a[]+]>) a[]++;
return a;
}
//高精度加法
int* jia(int a[],int b[]){
if(a[]<b[]) a[]=b[];
//加
for(int i=;i<=a[];i++){
a[i]+=b[i];
}
//处理进位
for(int i=;i<=a[];i++){
if(a[i]>=){
a[i]%=;
a[i+]++;
}
}
//更正位数
while(a[a[]+]>) a[]++;
return a; }
//赋值,把ans数组的值全部给dp数组
void give(int ans[],int dp[]){
for(int i=;i<=ans[];i++){
dp[i]=ans[i];
}
}
int* f(int n){
if(dp[n][]!=) return dp[n];
else if(==n) return dp[];
else if(==n) return dp[];
else{
int tmp_1[Max]={};
int tmp_2[Max]={};
give(f(n-),tmp_1);
give(f(n-),tmp_2);
give(jia(tmp_1,chen(tmp_2,)),dp[n]);
return dp[n];
}
} int main(){
dp[][]=,dp[][]=;//前面是位数,后面是数
dp[][]=,dp[][]=;
int n=;
while(scanf("%d",&n)!=EOF){
f(n);
print(dp[n]);
}
return ;
}
递归--练习11--noi9273 PKU2506Tiling的更多相关文章
- poj 题目分类(1)
poj 题目分类 按照ac的代码长度分类(主要参考最短代码和自己写的代码) 短代码:0.01K--0.50K:中短代码:0.51K--1.00K:中等代码量:1.01K--2.00K:长代码:2.01 ...
- POJ题目分类(按初级\中级\高级等分类,有助于大家根据个人情况学习)
本文来自:http://www.cppblog.com/snowshine09/archive/2011/08/02/152272.spx 多版本的POJ分类 流传最广的一种分类: 初期: 一.基本算 ...
- 学习记录 java 链表知识
01.import java.util.HashMap; 02.import java.util.Scanner; 03.import java.util.Stack; 04. 05./** 06. ...
- Mac下的常用Shell命令
今天介绍一下在Mac的终端中一些常用的Shell命令: 1.查看当前工作目录的完整路径 pwd (pwd的原意是:print work directiory,而不是密码password的意思,呵呵) ...
- POJ题目细究
acm之pku题目分类 对ACM有兴趣的同学们可以看看 DP: 1011 NTA 简单题 1013 Great Equipment 简单题 102 ...
- leetcode & lintcode for bug-free
刷题备忘录,for bug-free leetcode 396. Rotate Function 题意: Given an array of integers A and let n to be it ...
- (5)微信二次开发 之 XML格式数据解析
1.首先理解一下html html的全名是:HyperText Transfer markup language 超级文本标记语言,html本质上是一门标记(符合)语言,在html里,这些标记是事先定 ...
- c语言基础学习06
=============================================================================涉及到的知识点有:1.C语言库函数.字符输入函 ...
- C++学习(二十一)(C语言部分)之 函数2
复习 函数名 函数名称 调用时需要函数名加上相应的参数函数类型 void 返回值(根据函数的需要)参数函数体 用来写函数的一个定义 函数怎样实现都现在其中函数声明 函数定义 定义如果放在调用的后面, ...
随机推荐
- postgresql----数据库表约束----UNIQUE
四.UNIQUE ---- 唯一约束 唯一键可以是单个字段,也可以是多个字段的组合,设置唯一约束后,INSERT或UPDATE时如果表中唯一键字段中已存在该数据,则拒绝该行数据的INSERT或UPDA ...
- 双态运维联盟(BOA)正式成立
3月1日,由联想.新华三.华为等12家IT企业在北京正式达成协议,联合发起成立“双态运维联盟”.中国电子工业标准技术协会.信息技术服务分会数据中心运营管理工作组(DCMG)组长肖建一先生出席了会议. ...
- django通用视图
通用视图 1. 前言 回想一下,在Django中view层起到的作用是相当于controller的角色,在view中实施的 动作,一般是取得请求参数,再从model中得到数据,再通过数据创建模板,返回 ...
- android(十)smali
Dalvik是google专门为Android操作系统设计的一个虚拟机,经过深度的优化.虽然Android上的程序是使用java来开发的,但是Dalvik和标准的java虚拟机JVM还是两回事. Da ...
- android的selector选择器
1. drawable/actionbar_compat_item.xml 2.drawable/actionbar_compat_item_pressed.xml 3.drawable/action ...
- 邮件服务器Postfix的管理 重启php-fpm
Postfix邮件系统安装与配置:Postfix,Cyrus-IMAP,Cyrus-sasl,Dovecot和SPFhttp://www.freehao123.com/postfix-cyrus/Ce ...
- (转)nginx负载均衡(5种方式)、rewrite重写规则及多server反代配置梳理
Nginx除了可以用作web服务器外,他还可以用来做高性能的反向代理服务器,它能提供稳定高效的负载均衡解决方案.nginx可以用轮询.IP哈希.URL哈希等方式调度后端服务器,同时也能提供健康检查功能 ...
- (转) SpringBoot非官方教程 | 第十一篇:springboot集成swagger2,构建优雅的Restful API
swagger,中文“拽”的意思.它是一个功能强大的api框架,它的集成非常简单,不仅提供了在线文档的查阅,而且还提供了在线文档的测试.另外swagger很容易构建restful风格的api,简单优雅 ...
- 142. Linked List Cycle II(找出链表相交的节点)
Given a linked list, return the node where the cycle begins. If there is no cycle, return null. Note ...
- 24UDP通信
使用Qt提供的QUdpSocket进行UDP通信.在UDP方式下,客户端并不与服务器建立连接,它只负责调用发送函数向服务器发送数据.类似的服务器也不从客户端接收连接,只负责调用接收函数,等待来自客户端 ...