CUGB 1009 DP简单动态规划,此题一开始就结了很久,WA了9次对于刚开始学DP的我打击很大,最后发现原来是方法弄错了,题意没完全弄懂!看了大牛的文章才知道,差距啊!还得好好努力。
2011-08-16 17:23
507 查看
#include<stdio.h>
int main()
{
int i, j, N, temp, max;
int high[102],dp1[102],dp2[102];
while(scanf("%d", &N) != EOF)
{
scanf("%d", &high[1]);
for(i=2; i<=N; i++)
{
scanf(" %d",&high[i]);
}
dp1[1] = 1;
for (i=2; i<=N; i++)
{
temp = 0;
for (j=1; j<i; j++)
{
if ((high[i]>high[j]) && (temp<dp1[j]+1))
temp = dp1[j];
}
dp1[i] = temp + 1;
}
dp2
= 1;
for (i=N-1; i>0; i--)
{
temp = 0;
for (j=N; j>i; j--)
{
if ((high[i]>high[j]) && (temp<dp2[j]+1))
temp = dp2[j];
}
dp2[i] = temp + 1;
}
max = dp1[1] + dp2[1];
for(i=2; i<=N; i++)
{
if(max < dp1[i]+dp2[i])
max = dp1[i] + dp2[i];
}
printf("%d\n", N+1-max);
}
return 0;
}
int main()
{
int i, j, N, temp, max;
int high[102],dp1[102],dp2[102];
while(scanf("%d", &N) != EOF)
{
scanf("%d", &high[1]);
for(i=2; i<=N; i++)
{
scanf(" %d",&high[i]);
}
dp1[1] = 1;
for (i=2; i<=N; i++)
{
temp = 0;
for (j=1; j<i; j++)
{
if ((high[i]>high[j]) && (temp<dp1[j]+1))
temp = dp1[j];
}
dp1[i] = temp + 1;
}
dp2
= 1;
for (i=N-1; i>0; i--)
{
temp = 0;
for (j=N; j>i; j--)
{
if ((high[i]>high[j]) && (temp<dp2[j]+1))
temp = dp2[j];
}
dp2[i] = temp + 1;
}
max = dp1[1] + dp2[1];
for(i=2; i<=N; i++)
{
if(max < dp1[i]+dp2[i])
max = dp1[i] + dp2[i];
}
printf("%d\n", N+1-max);
}
return 0;
}
相关文章推荐
- ZOJ 3321题解此题一开始纠结了N久,最后发现原来方法用错了。此题应该用并查集归并判断节点是否相同和所有点度是否为2.
- 文章标题n个人围成一圈,顺序排号。从第一个人开始报数(1~3),凡报到3的人退出圈子,问最后留下来的是原来几号的那位?
- ZOJ 2022题解,起初此题纠结了很久。方法没有用对,后经大牛指点恍然大悟,原来就是求1到N有多少是5的倍数,再求25的倍数,125的倍数如此循环。
- 简单的动态规划dp
- 一个简单的SpringMVC项目到底需要哪些JAR包(文章最后附上最简单的方法导相关包)
- 对于用户上传不规划Html而导致页面布局错乱的一简单解决方法
- 杭电ACM OJ 1011 Starship Troopers 树的动态规划(树的dp)经典树形背包 java写的 包看懂 递归流程完全解析
- 动态规划,多重背包,保存路径,用完全背包的方法做多重背包(Charlie's Change,poj 1787)
- 对于表单域乱码的处理!!只要一个简单的方法的,好好....
- HDU 3123 题解,想到怎么做就不难了此题一开始没注意到long long数据的问题,最后没有除m WA了7次。幸亏最后发现了啊!这个AC来得太不容易了
- 对于用户上传不规划Html而导致页面布局错乱的一简单解决方法
- 基于vue2.0版本的手机端mint-ui 的Loadmore上拉刷新下拉加载的方法,对于初学者来说很有帮助,开始写走了很多弯路,网上找到这个方法,简单实用,不多说看代码……
- A、B两伙马贼意外地在一片沙漠中发现了一处金矿,双方都想独占金矿,但各自的实力都不足以吞下对方,经过谈判后,双方同意用一个公平的方式来处理这片金矿。处理的规则如下:他们把整个金矿分成n段,由A、B开始轮流从最左端或最右端占据一段,直到分完为止。 马贼A想提前知道他们能分到多少金子,因此请你帮忙计算他们最后各自拥有多少金子?(两伙马贼均会采取对己方有利的策略)
- HDU 2041 超级楼梯 简单DP动态规划 递归
- 动态规划问题-DP 最大子段和O(n)解决方法
- 多线程中让main方法最先开始,最后结束的简单例子
- 【DP】hotel 题解 浅谈动态规划中的状态设计方法
- COJ 1022: 菜鸟和大牛(简单的动态规划,递推)
- HDU 5366 简单动态规划DP
- HDU 2159 FATE (动态规划dp之二维完全背包问题)