下面的代码是北京大学Online Judge网站上1068题(网址:http://poj.org/problem?id=1068)的所写的代码。

该题的难点在于实现括号匹配,我在代码中采取用-1和1分别代表左右括号,使得括号匹配时各位数相加为0,不匹配时则不为0的方法来判断是否完成括号匹配,代码列表如下:

性能:Memory:704K,Time:0MS

  1. #include "iostream"
  2. using namespace std;
  3. int main()
  4. {
  5. const int LEFT_PARA = -1;//左括号为-1
  6. const int RIGHT_PARA = 1;//右括号为1
  7. int nProblem;//问题个数
  8. int n;
  9. int S[40];
  10. int P[20];
  11. int W[20];
  12.  
  13. //ifstream cin("input_data.txt",ios::in);//便于读取输入文件
  14. cin>>nProblem;
  15. while (nProblem--)
  16. {
  17. cin>>n;
  18. for (int i=0;i<n;i++)
  19. {
  20. cin>>P[i];
  21. }
  22.  
  23. //生成S
  24. for (int j = 0,k=0;j<n;j++)
  25. {
  26. if (j == 0)
  27. {
  28. for (k=0;k<P[j];k++)
  29. {
  30. S[k] = LEFT_PARA;
  31. }
  32. S[k] = RIGHT_PARA;
  33. }else{
  34. int m;
  35. for (m = k+1;m<k+1+P[j]-P[j-1];m++)
  36. {
  37. S[m] = LEFT_PARA;
  38. }
  39. S[m] = RIGHT_PARA;
  40. k = m;
  41. }
  42. }
  43.  
  44. //生成W
  45. for (int j=0;j<n;j++)
  46. {
  47. W[j] = 0;
  48. }
  49. for (int j = 0,k=0,m=0;j<2*n;j++)
  50. {
  51. int tempSum = 0;
  52. if (S[j] == RIGHT_PARA)
  53. {
  54.  
  55. for (int k = j;k>=0;k--)
  56. {
  57.  
  58. if (S[k] == RIGHT_PARA)
  59. {
  60. W[m] += 1;
  61. }
  62. tempSum += S[k];
  63. if (tempSum == 0)
  64. {
  65. cout<<W[m]<<" ";
  66. m++;
  67. break;
  68. }
  69. }
  70.  
  71. }
  72. }
  73. cout<<endl;
  74. }
  75. return 0;
  76. }

  

POJ-1068题的更多相关文章

  1. 模拟 POJ 1068 Parencodings

    题目地址:http://poj.org/problem?id=1068 /* 题意:给出每个右括号前的左括号总数(P序列),输出每对括号里的(包括自身)右括号总数(W序列) 模拟题:无算法,s数组把左 ...

  2. poj 1068 模拟

    题目链接 大概题意就是告诉你有个n个小括号,每一个")"左边有多少个"("都告诉你了,然后让你求出每一对括号之间有多少对括号(包含自己本身). 思路: 我先计算 ...

  3. poj 1068 Parencodings 模拟题

    Description Let S = s1 s2...s2n be a well-formed string of parentheses. S can be encoded in two diff ...

  4. poj 1068(模拟题)

    Parencodings Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 23545   Accepted: 13802 De ...

  5. POJ 1068

    http://poj.org/problem?id=1068 这道题是一道模拟的题目 题目大意呢,p代表前面的'('的个数,而w代表这个括号所包括的括号的个数: 给你p,要你求w: 解题思路: 首先, ...

  6. POJ 1068 Parencodings 模拟 难度:0

    http://poj.org/problem?id=1068 #include<cstdio> #include <cstring> using namespace std; ...

  7. POJ 水题若干

    POJ 3176 Cow Bowling 链接: http://poj.org/problem?id=3176 这道题可以算是dp入门吧.可以用一个二维数组从下向上来搜索从而得到最大值. 优化之后可以 ...

  8. poj 1068 Parencodings(栈)

    题目链接:http://poj.org/problem?id=1068 思路分析:对栈的模拟,将栈中元素视为广义表,如 (((()()()))),可以看做 LS =< a1, a2..., a1 ...

  9. POJ 水题(刷题)进阶

    转载请注明出处:優YoU http://blog.csdn.net/lyy289065406/article/details/6642573 部分解题报告添加新内容,除了原有的"大致题意&q ...

  10. POJ 1068 Parencodings【水模拟--数括号】

    链接: http://poj.org/problem?id=1068 http://acm.hust.edu.cn/vjudge/contest/view.action?cid=27454#probl ...

随机推荐

  1. git的诞生

    Git的诞生   很多人都知道,Linus在1991年创建了开源的Linux,从此,Linux系统不断发展,已经成为最大的服务器系统软件了. Linus虽然创建了Linux,但Linux的壮大是靠全世 ...

  2. jQuery网站顶部定时折叠广告

    效果体验:http://hovertree.com/texiao/jquery/4.htm HTML文件代码: <!DOCTYPE html> <html xmlns="h ...

  3. AngularJS Directive 隔离 Scope 数据交互

    什么是隔离 Scope AngularJS 的 directive 默认能共享父 scope 中定义的属性,例如在模版中直接使用父 scope 中的对象和属性.通常使用这种直接共享的方式可以实现一些简 ...

  4. 【UI插件】开发一个简单日历插件(上)

    前言 最近开始整理我们的单页应用框架了,虽然可能比不上MVVM模式的开发效率,也可能没有Backbone框架模块清晰,但是好歹也是自己开发出来 而且也用于了这么多频道的东西,如果没有总结,没有整理,没 ...

  5. SharePoint 2013 搭建app本地开发环境

    使用SharePoint App,如果要通过应用程序目录分发 SharePoint 相关应用程序,如具有完全控制权限的 SharePoint 相关应用程序(无法部署到 Office 365 网站),则 ...

  6. IBatis.Net项目数据库SqlServer迁移至Oracle经验

    最近完成了一个(IBatis.Net+MVC)项目的数据库+代码迁移工作,可把我折腾得~~~ IBatis.Net是一个ORM框架,具体介绍可以问度娘.我之前没用ORM框架使用经验,所以这一路我不是走 ...

  7. jquery中CheckBox的checked状态用attr()的问题

    写了一个脚本,点按钮时选中checkbox,前几次可以选中,多点几次发现checkbox并未选中,调试后发现checked状态根本没有改变,后在网上查证与attr()函数有关,后改为prop问题解决. ...

  8. Android高效计算——RenderScript(一)

    高效计算——RenderScript RenderScript是安卓平台上很受谷歌推荐的一个高效计算平台,它能够自动把计算任务分配到各个可用的计算核心上,包括CPU,GPU以及DSP等,提供十分高效的 ...

  9. Eclipse 常用快捷键 For MAC

    Eclipse 常用快捷键 For MAC Option + Command + X: 运行Command + O:显示大纲Command + 1:快速修复Command + D:删除当前行Comma ...

  10. iOS 学习 - 21 系统自带解析 XML

    准备工作: new -> file -> other -> Empty ,在 Save As: 中随便起个名字后缀为 .xml 拷贝下面 <person> <stu ...