拦截导弹 (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 ...
随机推荐
- 次小生成树 POJ 2728
#include <cstdio>#include <cstring>#include <iostream>#include <algorithm>us ...
- nginx gzip 压缩设置
mime.types 中包含所有文件的类型,不知道的可以去里面查询 gzip配置的常用参数 gzip on|off; #是否开启gzip gzip_buffers 32 4K| 16 8K #缓冲( ...
- UOJ136 开学前的作文
描述 红包是一个萌萌的男孩子. 红包由于 NOI 惨挂,直到前不久依然无心写作业.如今快开学了,他决定好好完成作业. 对于可以交电子稿的作文,红包有特殊的完成技巧,大致流程是依次选中一段内容→按下 C ...
- 用 CSS3 创建一个漂亮的多种色彩的菜单
1. [图片] thumb.png 2. [代码][HTML]代码 <!DOCTYPE html><html lang="en" > <hea ...
- struts2 框架 的环境搭建 与配置
一,Struts2简介: 1,来由:Struts(金属支架),在程序中表示起支撑作用的通用程序代码,Struts2是在Struts1框架的基础上融合了WebWork优秀框架升级得到的. 2,解释:St ...
- 《java编程思想》:字符串
1.String对象是不可变的,String类中每个看起来会修改String值的方法,实际上都是创建了一个新的String对象,来包含修改后的内容,所以在对String修改后,想打印新的值,可以直接打 ...
- Android SQLite学习指南
一.SQLite简介 在Android平台上,集成了一个嵌入式关系型数据库—SQLite,SQLite3支持 NULL.INTEGER.REAL(浮点数字).TEXT(字符串文本)和BLOB(二进制对 ...
- [原]NYOJ-字符串替换-113
大学生程序代写 /*http://acm.nyist.net/JudgeOnline/problem.php?pid=113 字符串替换 时间限制:3000 ms | 内存限制:65535 KB ...
- BZOJ5323 JXOI2018 游戏
传送门 这是我见过的为数不多的良心九怜题之一. 题目大意 有一堆屋子,编号为$l,l+1...r-1,r$,你每次会走入一个没走入过的房子,然后这个房子以及编号为这个房子编号的倍数的房子就会被自动标记 ...
- eclipse IDE注释模板设置
1.windows->preference—>java->code style->code template,弹出下图所示的界面.