xdu 1166 - 括号,又见括号

1166 - 括号,又见括号

  

    经典的括号题,

    wiki里写的没有看懂,但貌似是基于全局的。

    我觉得这道题前面的括号和后面的并没有关系,所以从全局找到每一对匹配并不是最好的选择,直接进行匹配反而更简单

    用getchar时间比scanf少了一半……

   注意一下输出要是long long的,一开始没发现用int,WA了好几次。

 

 

/*
author:jxy
lang:C/C++
university:China,Xidian University
**If you need to reprint,please indicate the source**
*/
#include <cstdio>
#define INF 12345678910ll
int n;
char t;
void get(char &t){t=getchar(),getchar(),n--;}
long long dfs()
{
    long long ans=0;
    for(get(t);t=='0';get(t))
       ans=(ans+dfs())%INF;
    if(ans==0)return 1;
    else return ans<<1;
}
int main()
{
    while(~scanf("%d%*c",&n))
    {
        long long ans=0;
        while(n--)
        {
            getchar();getchar();
            ans=(ans+dfs())%INF;
        }
        printf("%lld\n",ans);
    }
    return 0;
}
时间: 2024-12-21 08:02:34

xdu 1166 - 括号,又见括号的相关文章

php使用正则表达式提取字符串中尖括号、小括号、中括号、大括号中的字符

 PHP使用正则表达式提取字符串中尖括号<>.小括号().中括号[].大括号{}中的字符示例,需要的朋友可以参考下    代码如下: $str="你好<我>(爱)[北京]{天安门}";    echo f1($str); //返回你好  echo f2($str); //返回我  echo f3($str); //返回爱  echo f4($str); //返回北京  echo f5($str); //返回天安门    function f1($str)  { 

求一个在字符串中识别括号并删除括号及其中内容的函数

问题描述 求一个在字符串中识别括号并删除括号及其中的内容的函数括号包括 大中小 3种括号.输入为 1个字符串 s="我是一个人(中国人)[真的]{确定}";输出为 result = "我是一个人"; 解决方案 String s="我是一个人(中国人)aaa[真的]bbbb{确定}"; s=s.replaceAll("\(.*?\)|\{.*?}|\[.*?]|(.*?)", "");System.out.p

C++中创建对象的时候加括号和不加括号的区别

c++创建对象的语法有----- 1 在栈上创建 MyClass a; 2 在堆上创建加括号 MyClass *a= new MyClass(); 3 不加括号 MyClass *a = new MyClass; 4.---------------MyClass a();声明了一个返回值为MyClass类型的无参函数. #include <iostream> class MyClass { public: MyClass() { std::cout << "Hello M

九度题目1153:括号匹配问题

题目1153:括号匹配问题 时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:2965 解决:1315 题目描述:     在某个字符串(长度不超过100)中有左括号.右括号和大小写字母:规定(与常见的算数式子一样)任何一个左括号都从内到外与在它右 边且距离最近的右括号匹配.写一个程序,找到无法匹配的左括号和右括号,输出原来字符串,并在下一行标出不能匹配的括号.不能匹配的 左括号用"$"标注,不能匹配的右括号用"?"标注. 输入:     输入包括多组数据,

正则表达式中test、exec、match的区别介绍及括号的用法

test.exec.match的简单区别 1.test test 返回 Boolean,查找对应的字符串中是否存在模式. var str = "1a1b1c"; var reg = new RegExp("1.", ""); alert(reg.test(str)); // true 2.exec exec 查找并返回当前的匹配结果,并以数组的形式返回. var str = "1a1b1c"; var reg = new Re

c++-栈处理括号表达式,有个变量不知道什么用处

问题描述 栈处理括号表达式,有个变量不知道什么用处 这是一段利用栈处理括号表达式的程序: 1. 当你看到一个左括号,直接入栈: 2. 看到一个右括号,从stack总pop对象,直到遇到左括号,左括号也pop出栈. 3. 然后将一个值作为运算结果存入栈中. 题目来源于C++ Primer,给的程序如下. 问题: 1.这里有个变量seen记录了有多少个括号,但是这个seen有什么用? 2.expr这个变量,定义为什么要定义成引用? int main() { auto& expr = "Thi

OpenJudge一类括号匹配问题

问题描述 OpenJudge一类括号匹配问题 总时间限制: 1000ms 内存限制: 65536kB 描述 在程序设计中,常常使用小括号强调表达式的运算顺序,但是,左右小括号必须匹配.现给定一个不多于500个符号的表达式(串),其中可能存在多个小括号,想检查小括号的匹配问题.如果存在小括号不匹配,则输出 mismatch:如果所有小括号匹配,则按左右括号的匹配距离由小到大输出左.右括号的位置:若多个匹配的距离相等,则左括号先出现的匹配先输出:如果整个串中没有小括号,则左右位置均输出0,即 0,0

ata utput tream-关于for循环问题,加不加括号有什么区别

问题描述 关于for循环问题,加不加括号有什么区别 DataOutputStream dos=new DataOutputStream(new FileOutputStream("D:/zpc.txt")); int a[]={1,3,4,62,13,35}; for (int i = 0; i < a.length; i++) dos.writeInt(a[i]); dos.close(); } 这样就没问题,但是如果 for (int i = 0; i < a.leng

asp 过滤尖括号内所有内容的正则代码_应用技巧

当然这应该属于正常过滤手法,而还有一种过滤HTML标签的最终极手法,则是将一对尖括号及尖括号中的所有字符均替换不显示,该方法对于内容中必须描述有关尖括号内容过滤过头了. 不过,总归是有需要将所有尖括号中内容全部替换的时候,很显然是需要进行正则的,有两种代码,第一种如下: 复制代码 代码如下: Function nohtml(str) dim re Set re=new RegExp re.IgnoreCase =true re.Global=True re.Pattern="(\<.[^\