hdu1228双指针

#include <iostream>
#include <cstdio>
#include <cstring>
using namespace std;
char s[100],*dic[]={"zero","one","two","three","four","five","six","seven","eight","nine"};
int A[5],B[5],ANS_A,ANS_B,ca,cb;
bool compare(char *s,char *p){
    if(strlen(s)!=strlen(p)) return false;
    int i;for(i=0;i<strlen(s);++i) if(s[i]!=p[i]) return false;return true;
}
int convert(char* s){
    int i;for(i=0;i<10;++i) if(compare(s,dic[i])) return i;
}
void convA_B(){
    int i;ANS_A=0,ANS_B=0;//全局变量重新声明导致未初始化
    for(i=0;i<ca;++i)    ANS_A=ANS_A*10+A[i];
    for(i=0;i<cb;++i)    ANS_B=ANS_B*10+B[i];
}
int main(){
    char c;int cnt=0,i,j,END=0;
    while(!END){
        c=getchar();
        if(c!=‘\n‘) s[cnt++]=c;
        else{
            s[cnt++]=‘ ‘;s[cnt++]=‘\0‘;
            int p1=-1,p2=-1,flag=0;
            ca=0;cb=0;
            for(i=0;i<cnt-1;++i){
                if(s[i]!=‘ ‘){if(p1==-1)p1=p2=i;else p2=i;}
                else {
                    if(p1!=-1){
                        if(p1==p2){if(s[p1]==‘+‘) flag=1;}
                        else{
                            char str[10];int cc=0;
                            for(j=p1;j<=p2;++j) str[cc++]=s[j];str[cc]=‘\0‘;
                            if(!flag) A[ca++]=convert(str);
                            else      B[cb++]=convert(str);
                        }
                        p1=p2=-1;
                    }
                }
            }
            cnt=0;convA_B();
            if(ANS_A==0&&ANS_B==0) {END=1;break;}printf("%d\n",ANS_A+ANS_B);
        }
    }
    return 0;
}
时间: 2024-10-05 18:09:35

hdu1228双指针的相关文章

hdu_5806_NanoApe Loves Sequence Ⅱ(双指针)

题目链接:hdu_5806_NanoApe Loves Sequence Ⅱ 题意: 给你一段数,问你有多少个区间满足第K大的数不小于m 题解: 直接双指针加一下区间就行 1 #include<cstdio> 2 #include<algorithm> 3 #define F(i,a,b) for(int i=a;i<=b;i++) 4 using namespace std; 5 typedef long long ll; 6 const int N=2e5+7; 7 in

[转]深入理解双指针(上)

转载:http://blog.csdn.net/feiyinzilgd/archive/2010/02/09/5302369.aspx  对于C语言的参数传递都是值传递,当传传递一个指针给函数的时,其实质上还是值传递,除非使用双指针. 在讲双指针之前,还是先讲讲关于C语言函数调用的本质.函 数调用操作包括从一块代码到另一块代码之间的双向数据传递和执行控制转移.数据传递通过函数参数和返回值来进行,包括局部变量的空间分配与回收,都是通过 栈来实现的.绝大多数CPU上的程序实现使用栈来支持函数调用操作

hdu 6025 card card card(双指针)

题目链接:hdu 6025 card card card 题意: 有n对数(a,b),现在你可以将前x对(a,b)移到尾部. 操作完后,现在定义sum=ai-bi (1,x),当sum<0时,当前的价值为Σai (1<=i<=x-1). 问你移动前多少对(a,b),使得价值最大,如果有多个答案,输出最小的那个. 题解: 复制一份,双指针模拟一下就行了. 1 #include<bits/stdc++.h> 2 #define F(i,a,b) for(int i=a;i<

HZAU 1205 Sequence Number(双指针)

题目链接:http://acm.hzau.edu.cn/problem.php?id=1205 [题意]给你一串数,要求你找到两个数a[i],a[j],使得a[i]<=a[j]且j>=i且j-i最大. [分析]预处理1~i的最小值,然后从右往左双指针,维护右端点>左端点,如果右端点<1~L的最小值,则移动右端点. #include <cstdio> #include <vector> #include <cstring> #include <

125. Valid Palindrome【双指针】

2017/3/15 21:47:04 Given a string, determine if it is a palindrome, considering only alphanumeric characters and ignoring cases. For example,"A man, a plan, a canal: Panama" is a palindrome."race a car" is not a palindrome. Note:Have y

指针 &amp;&amp; 双指针

指针是C语言中的难点,C++中自然也免不了其身影. 以下是我学习中的积累,不足之处望不吝赐教. 指针类型: 指针 Const int* pstr 不能修改被指向的对象,可以使指针指向其他对象 如:const int* pvalue {&value}; *pvalue=6; //will not compile pvalue=nullptr; //ok Int* const pstr   不能修改指针中存储的地址,可修改指向的对象 如:Int* const pvalue {&value};

百度之星2017 HDU 6119 小小粉丝度度熊 二分+双指针

小小粉丝度度熊 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6119 Description 度度熊喜欢着喵哈哈村的大明星--星星小姐.为什么度度熊会喜欢星星小姐呢?首先星星小姐笑起来非常动人,其次星星小姐唱歌也非常好听.但这都不是最重要的,最重要的是,星星小姐拍的一手好代码!于是度度熊关注了星星小姐的贴吧.一开始度度熊决定每天都在星星小姐的贴吧里面签到.但是度度熊是一个非常健忘的孩子,总有那么几天,度度熊忘记签到,于是就断掉了他的连续签到.不过

用双指针实现PLC堆栈设计

关键技术:PLC 堆栈 关键算法:指针 某基地在设计MES现场调度模块时,架构了一个部署在车间现场的IT PLC,作为MES与ME PLC通讯的中间介质,用于处理握手信号并缓存业务数据. 此调度模块要实现以下业务数据的缓存:订单缓存.过站记录缓存.在制品队列缓存.其中订单缓存用于上线,过站记录缓存用于物料拉动,在制品队列缓存用于防错. 缓存的意义是为了防止应用系统环境(应用服务器/数据库/OPC/消息队列服务器)对现场(OEM PLC)作业的影响,毕竟PLC层面的交互要稳定及时得多. 从IT的层

【BZOJ2096】[Poi2010]Pilots 双指针+单调队列

[BZOJ2096][Poi2010]Pilots Description Tz又耍畸形了!!他要当飞行员,他拿到了一个飞行员测试难度序列,他设定了一个难度差的最大值,在序列中他想找到一个最长的子串,任意两个难度差不会超过他设定的最大值.耍畸形一个人是不行的,于是他找到了你. Input 输入:第一行两个有空格隔开的整数k(0<=k<=2000,000,000),n(1<=n<=3000,000),k代表Tz设定的最大值,n代表难度序列的长度.第二行为n个由空格隔开的整数ai(1&