poj1068括号加密
来源:互联网 发布:omtp转ctia软件 编辑:程序博客网 时间:2024/06/08 06:04
这道题并不难,首先要明白题目意思,就是说一串由括号包含括号的字符串,这串字符串可以用两种编码方式来表示,题目实现的就是要需要我们根据一种编码方式求出对应字符串的另一种编码方式。
第一种编码方式是指:每遇到一个右半括号,就去统计他左边有多少左半括号,而这个左半括号数就是一个密码。
第二种编码方式是指:遇到一个右半括号,找到他相应的左半括号,再统计这个括号对里总共有多少左半括号,最外层的那个左半括号也算上一个,所以这种方式统计出来的左半括号数就是另一种密码。
其实大致的实现思路就是我描述两种编码的形式,我没有用复杂的算法之类的,只是纯粹简单的搜索,首先将一种编码方式还原成原始字符串,再把字符串转成另一种编码方式,不过在这个过程中为了方便,我在还原原始字符串也就是括号串的时候,用0表示左括号,1表示右括号。
代码实现如下:
package cn.itcast_test;import java.util.Scanner;public class Parenthesis {public static void main(String args[]){Scanner scan=new Scanner(System.in);int n=scan.nextInt();for(int k=0;k<n;k++){int num=scan.nextInt();int temp=0;int num0=0;int index=0;int []paren=new int[num*2];int []paren2=new int[num*2];StringBuilder sb=new StringBuilder();for(int i=1;i<=num;i++){ //根据每一次输入的数来初始化paren数组temp=scan.nextInt();for(;num0<temp;num0++){paren[index]=0;index++;}paren[index]=1;index++;}//for(int i:paren){//System.out.print(i+" ");//}//以上已经完全将输入的数据转换成了一组用0代表左括号1代表右括号的数组int num1=0;int index0=0;for(int i=0;i<num*2;i++){paren2[i]=paren[i];}for(int i=0;i<num*2;i++){if(paren2[i]==1){num1=0;for(int j=i-1;j>=0;j--){if(paren2[j]==0){paren2[j]=1;for(index0=j;index0<=i-1;index0++){if(paren[index0]==0){num1++;}}System.out.print(num1+" ");break;}}}}System.out.println();}}}
阅读全文
0 0
- poj1068括号加密
- POJ1068(ACM括号模拟)
- POJ1068--括号匹配(栈的应用)
- poj1068 简单的括号匹配模拟
- POJ1068 Parencodings(模拟,括号问题)
- POJ1068
- POJ1068
- Poj1068
- poj1068
- poj1068
- poj1068
- poj1068
- poj1068
- poj1068
- poj1068
- POJ1068
- poj1068
- poj1068
- 编程娱乐之俄罗斯方块
- 如何编译wxWidgets示例程序(samples目录下的程序)
- 009 Android programming 3rd Activity生命周期以及debug处理
- hdu2686
- CentOS7 彻底清除MySQL
- poj1068括号加密
- 软件中的数学计算引起的一些简单思考
- python浅拷贝和深拷贝 copy()和deepcopy()
- kotlin 基本语法(一)
- request获取路径
- 线程状态
- WebLogic下部署war包
- 排序3——插入排序及优化
- 实现一个随手指移动而滑动的效果---爬坑