dp复习

来源:互联网 发布:澳洲国立大学博士知乎 编辑:程序博客网 时间:2024/06/15 14:25

全是蒜产的题目
好多别的地方的原题……
1.马踏过河卒
题目外面有 之前发过了来着
思路是f[i][j]=f[i-1][j]+f[i][j-1]
要开ll 不然会炸
先标记控制点 则控制点坐标上f的值为0
2.墙壁涂色
蒜头君觉得白色的墙面好单调,他决定给房间的墙面涂上颜色。他买了 3 种颜料分别是红、黄、蓝,然后把房间的墙壁竖直地划分成 n 个部分,蒜头希望每个相邻的部分颜色不能相同。他想知道一共有多少种给房间上色的方案。

墙壁是一个环形

n=1时,f=[0],故f[1]=f[0]=0;
找f[n],f[n-1],f[n-2]的关系
如果c[1]=c[n-1],那么n就只剩2种选择f[n]=f[n-2]*2
如果c[1]!=c[n-1] n就只剩一种选择,f[n]=f[n-1];
加在一起就是答案

3.杨辉三角
……
4.捡水果
其实就是数字三角形
我这题应该算混过去的……

//计蒜客捡水果#include<iostream>#include<cstring>#include<algorithm>using namespace std;int n;int a[1001][1001];void down(int n){    for(int i=n-1;i>=1;i--)        for(int j=1;j<=i;j++)        a[i][j]=max(a[i+1][j],a[i+1][j+1])+a[i][j];}int main(){    cin>>n;    for(int i=1;i<=n;i++)        for(int j=1;j<=i;j++)            cin>>a[i][j];    down(n);    cout<<a[1][1]<<endl;    return 0;}

5.逃生
网格dp,等等我为什么没过……算了先挖坑后面再补

原创粉丝点击