拦截导弹 (NYOJ—79) 最长字串问题 (NYOJ—17)
这是到动态规划的题目,属于有顺序的0 1 背包问题;
代码:
#include<stdio.h>
#include<string.h> int d[][]; //d[i][j]
int a[];
int N; int max(int a, int b)
{
return a>b?a:b;
} int solve(int i,int high)
{
if(d[i][high]>=)
return d[i][high];
if(i==N)
{
if(a[i]<high)
return d[N][high]=;
else
return d[N][high]=;
}
if(a[i]<high)
return d[i][high]=max(solve(i+,a[i])+,solve(i+,high)); //打击和不打击 取大者
else
return d[i][high]=solve(i+,high);
} int main()
{
int T;
scanf("%d",&T);
while(T--)
{
memset(d,-,sizeof(d));
scanf("%d",&N);
for(int i=; i<=N; i++)
{
scanf("%d",&a[i]);
}
printf("%d\n",solve(,));
}
return ;
}
但这个代码提交会得到RE,至于为什么可能是记忆话搜索对这个的复杂度减小的比较小,所以递归深度太深,造成堆栈溢出。
我想多了,不是这个原因,是我没有注意到下标越界了。
AC代码:
#include<stdio.h>
#include<string.h> int d[][]; //d[i][j]
int a[];
int N; int max(int a, int b)
{
return a>b?a:b;
} int solve(int i,int high)
{
if(d[i][high]>=)
return d[i][high];
if(i==N)
{
if(a[i]<high)
return d[N][high]=;
else
return d[N][high]=;
}
if(a[i]<high)
return d[i][high]=max(solve(i+,a[i])+,solve(i+,high)); //打击和不打击 取大者
else
return d[i][high]=solve(i+,high);
} int main()
{
int T;
scanf("%d",&T);
while(T--)
{
memset(d,-,sizeof(d));
scanf("%d",&N);
for(int i=; i<=N; i++)
{
scanf("%d",&a[i]);
}
printf("%d\n",solve(,));
}
return ;
}
我不知道原来这种问题叫 最长递增子序列问题 我还给他起了个(顺序0 1 背包问题),我这就透过本质起的名字。
最长字串问题 (NYOJ - 17)
AC代码:
#include<stdio.h>
#include<stdlib.h>
#include<string.h> int d[][];
char a[];
int N; int max(int a, int b)
{
return a>b?a:b;
} int dp(int i, char c)
{
if(d[i][c]>=)
return d[i][c];
if(i==N-)
{
if(a[i]>c)
return d[i][c] = ;
else
return d[i][c] = ;
}
if(a[i]>c)
return d[i][c]=max(dp(i+,c),dp(i+,a[i])+);
else
return d[i][c]=dp(i+,c);
} int main()
{
int T;
scanf("%d",&T);
while(T--)
{
memset(d,-,sizeof(d));
scanf("%s",a);
N = strlen(a);
printf("%d\n",dp(,));
}
return ;
}
拦截导弹 (NYOJ—79) 最长字串问题 (NYOJ—17)的更多相关文章
- LeetCode-3.无重复字符的最长字串
给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度. 示例 1: 输入: "abcabcbb" 输出: 3 解释: 因为无重复字符的最长子串是 "abc&qu ...
- 【leetcode算法-中等】3. 无重复字符的最长字串
[题目描述] 给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度. 示例 1: 输入: "abcabcbb"输出: 3 解释: 因为无重复字符的最长子串是 " ...
- LeetCode#3 - 无重复字符的最长字串(滑动窗口)
题目: 给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度. 示例: abcabcbb 输出的结果应该是3,最长的无重复的字串是'abc' 果然无论做什么都要静下心来啊!昨晚上卡了一个多小 ...
- nyoj 经典的连续字串和
import java.util.Scanner; public class 字串和 { public static void main(String[] args) { // TODO Auto-g ...
- 拦截导弹简单版(读入一串整数时getline(cin,s) stringstream is(s);)
拦截导弹简单版 时间限制: 1 Sec 内存限制: 128 MB提交: 40 解决: 16[提交][状态][讨论版][命题人:外部导入] 题目描述 某国为了防御敌国的导弹袭击,发展出一种导弹拦截系 ...
- POJ 1743-POJ - 3261~后缀数组关于最长字串问题
POJ 1743 题意: 有N(1 <= N <=20000)个音符的序列来表示一首乐曲,每个音符都是1~~88范围内的整数,现在要找一个重复的主题.“主题”是整个音符序列的一个子串,它需 ...
- Leetcode3.Longest Substring Without Repeating Characters无重复字符的最长字串
给定一个字符串,找出不含有重复字符的最长子串的长度. 示例 1: 输入: "abcabcbb" 输出: 3 解释: 无重复字符的最长子串是 "abc",其长度为 ...
- leetcode Longest Common Prefix 多个字符串的最长字串
public class Solution { public String get(String a,String b) { if(a==""||b=="") ...
- Longest Substring Without Repeating Characters,求没有重复字符的最长字串
问题描述: Given a string, find the length of the longest substring without repeating characters. Example ...
随机推荐
- poj3984《迷宫问题》暑假集训-搜索进阶
K - 迷宫问题 Crawling in process... Crawling failed Time Limit:1000MS Memory Limit:65536KB 64bit ...
- 剑指offer之 旋转数组的最小数字
package Problem8; public class MinInReversingList { /* * 题目描述:把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转. * 输入 ...
- Idea 包名按树形结构展示
Idea默认包名展示如图: 感觉这样展示,在包下面建包的时候不方便,可以在 设置按钮 里面去掉 Flatten Packages 和 Compact Empty Middle Packages,设置如 ...
- 将jsp页面内容保存到excel(转)
在此,强调一下搜索时关键词的重要性,这样一下子可以定位到文章,否则处于盲人摸象,毫无目的尴尬境地.本篇就是通过export jsp to excel找到的. 原文地址:How to Export We ...
- MySQL--Basic(一)
停止与启动服务命令: net stop mysql net start mysql 修改MySQL提示符: mysql>prompt \u@\h \d> MySQL语句规范: 关键字与函数 ...
- [原]NYOJ-子串和44
大学生程序代写 /*子串和 时间限制:5000 ms | 内存限制:65535 KB 难度:3 描述 给定一整型数列{a1,a2...,an},找出连续非空子串{ax,ax+1,...,ay},使 ...
- 树套树Day1线段树套平衡树bzoj3196
您需要写一种数据结构,来维护一个有序数列,其中需要提供以下操作:1.查询k在区间内的排名2.查询区间内排名为k的值3.修改某一位值上的数值4.查询k在区间内的前驱(前驱定义为小于x,且最大的数)5.查 ...
- [Ural1099]工作安排 带花树
题目大意 一般图最大匹配. 题解: 求解一般图最大匹配. 直接使用带花树即可. (带花树也是刚学)... 马上写带花树的ppt,会很通俗易懂. (充分证明了本苣智商不够,写不出高深的课件) 如果有想要 ...
- django TimedRotatingFileHandler log
15.9.6. TimedRotatingFileHandler¶ The TimedRotatingFileHandler class, located in the logging.handler ...
- Linux mount指令
-o,是指option,可以指定username,password:当时我们就碰到一个坎,如何来避免输入用户名密码,其实本质并不是避免输入用户名米吗,而是某种可知的方式来进行权限控制:解决的方式就是采 ...