拦截导弹 (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 ...
随机推荐
- sqoop导入增量数据
使用sqoop导入增量数据. 核心参数 --check-column 用来指定一些列,这些列在增量导入时用来检查这些数据是否作为增量数据进行导入,和关系行数据库中的自增字段及时间戳类似这些被指定的列的 ...
- web.config中httpRedirect - 重定向单个页面
例:在下面的例子中,“目录包含page1.htm,page2.htm,page3.htm和page4.htm.如下所示的web.config文件将执行以下操作/pages/page1.htm会重定向到 ...
- 09 - Django应用第六步
1 自定义页面 在项目中, 肯定不会只是显示单纯的HTML文件, 我们可能还需要JS, CSS, 图片等 这些文件就被称为静态文件(starIc files) 在小的项目中, 可能静态文件比较少, 但 ...
- NYOJ-小猴子下落
描述 有一颗二叉树,最大深度为D,且所有叶子的深度都相同.所有结点从左到右从上到下的编号为1,2,3,·····,2的D次方减1.在结点1处放一个小猴子,它会往下跑.每个内结点上都有一个开关,初始全部 ...
- ACM学习历程—CSU 1216 异或最大值(xor && 贪心 && 字典树)
题目链接:http://acm.csu.edu.cn/OnlineJudge/problem.php?id=1216 题目大意是给了n个数,然后取出两个数,使得xor值最大. 首先暴力枚举是C(n, ...
- bzoj 2969: 矩形粉刷 概率期望
题目: 为了庆祝新的一年到来,小M决定要粉刷一个大木板.大木板实际上是一个W*H的方阵.小M得到了一个神奇的工具,这个工具只需要指定方阵中两个格子,就可以把这两格子为对角的,平行于木板边界的一个子矩形 ...
- 【Python】正则表达式中使用变量
我们有时想把变量放进正则表达式中来匹配想要的结果.Python中使用 re.compile(r''+变量+''),其中正则表达式中的“变量”应为字符串形式. import re regex_test_ ...
- bzoj 4823 & 洛谷 P3756 老C的方块 —— 最小割
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=4823 https://www.luogu.org/problemnew/show/P3756 ...
- python构造一个http请求
我们经常会用python来进行抓包,模拟登陆等等, 势必要构造http请求包. http的request通常有4个方法get,post,put,delete,分别对应于查询,更新,添加,删除.我们经常 ...
- asp.net分页asp.net无刷新分页高效率分页
项目中经常会用到分页的功能类似的项目做过无数个了,今个把自己常用的分页代码分享一下. 首先说说服务端处理的代码: 下面代码中重点是分页的sql语句的写法,其中的参数@n是当前的页码,总的来说本服务端主 ...