这题是在看一个书的时候的一个例题,当时并不明白啥意思,于是便找了下原题,以前没在POJ上刷过,这是开了个头,以后努力刷这个网站

题目大概意思是:http://poj.org/problem?id=1068

1.p序列:当出现匹配括号对时,从该括号对的右括号开始往左数,直到最前面的左括号数,就是pi的值。

2.w序列:当出现匹配括号对时,包含在该括号对中的所有右括号数(包括该括号对),就是wi的值。

要求给定加密后的p数组,求出w数组。

可以根据给的p数组先求出字符串s, p[i]-p[i-1]为第i个右括号紧跟在它前面的有多少个左括号,求出s,这里用了一点小技巧,大家以后可以试试,即是括号对用01序列表示

遍历s,每次找到右括号,然后回溯,遇到右括号就计数(回溯前找到的那个也算),直到遇到与它匹配的左括号(vis[]=false),因为一个右括号有唯一的左括号匹配,所以一旦找到它的左括号,就用vis[]=true标记下。
之前我看的是C语言代码,然后用java交总是错,最后发现是数组越界问题,改正后提交正确

import java.util.Arrays;
import java.util.Scanner; public class Main4 { public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int p[]=new int [21];
int w[] = new int [21]; boolean vis[]= new boolean [42]; int t = sc.nextInt();
while(t-->0){ String s = "";
int n = sc.nextInt();
for(int i=1;i<=n;i++)
p[i] = sc.nextInt();
p[0]=0;
for(int i=1;i<=n;i++){
for(int j=1;j<=p[i]-p[i-1];j++)
s+="(";
s+=")";
} int k=1;
Arrays.fill(vis,false);
for(int i=0;i<2*n;i++){
int cnt=1;
if(s.charAt(i)==')'){ for(int j=i-1;j>=0;j--){
if(s.charAt(j)==')')
cnt++;
if(s.charAt(j)=='('&&!vis[j])
{
vis[j]=true;
break;
} }
w[k++]=cnt;
}
} for(int i=1;i<=n;i++)
System.out.print(w[i]+" ");
System.out.println();
}
} }

不过看博客有大佬这样定义,把括号对用01序列表示,也很不错哦,附上代码: http://user.qzone.qq.com/289065406/blog/1299127551

最新文章

  1. Junit单元测试笔记
  2. javascript 中的console.log和弹出窗口alert
  3. [POJ2155]Matrix(二维树状数组)
  4. 修改iptables防火墙规则解决vsftp登录后不显示文件目录的问题
  5. Java课程设计-随机密码生成器
  6. elasticsearch health yellow
  7. 深挖 NPM 机制
  8. Android为TV端助力 ViewTreeObserver(转载)
  9. C语言-第6次作业
  10. HtmlAgilityPack 的东西
  11. 38)django-组合搜索
  12. JS正则表达式大全(附例子)
  13. linux系统管理 vi编辑器
  14. python 基数排序
  15. [转载]RSA算法详解
  16. crontab中运行python程序出错,提示ImportError: No module named解决全过程
  17. redis 3.0 集群__数据迁移和伸缩容
  18. nginx的平滑升级,不间断服务
  19. Web服务器性能压力测试工具
  20. SAP S4CRM和C4C的技术比较

热门文章

  1. python---使用字典来实现链接表图
  2. Linux查找当前目录5天的文件并打包
  3. git报错处理
  4. 计算1至n中数字X出现的次数【math】
  5. ASP.NET Web Api 2 接口API文档美化之Swagger
  6. 从oracle导出数据成csv,将csv导入mongodb问题
  7. js,JQuery实现,带筛选,搜索的select
  8. 057 Java中kafka的Producer程序实现
  9. 第四周java学习笔记
  10. String.IsNullorEmpty()方法的使用