zoukankan      html  css  js  c++  java
  • [模拟] [洛谷] P1765 手机

    还是困扰了我不少时间的

    最早的思路是把题上的串穷举 ↓

    12abc3def4ghi5jkl6mno7pqrs8tuv9wxyz 

    设按键次数 t                                          ↑

    碰到数字次数清零                                   ↑

    当串里面的字母与输入的字母配对 (假如字母是e 则t的变化是0 0 1 2 3 0 1 2 最后t=2)

    总步数加t就行

    测试了不少数据 答案应该是没错的 

    结果爆零了。。。。持续迷茫 希望以后可以找到问题

    换思路过了

    正确代码↓

    #include <iostream>  
    using namespace std;  
    int main()  
    {  
        string b="abcdefghijklmnopqrstuvwxyz";//找下标  
        long long sum=0,flag;  
        int c[30]={1,2,3,1,2,3,1,2,3,1,2,3,1,2,3,1,2,3,4,1,2,3,1,2,3,4};//下标对应的步数  
        string a;  
        getline(cin,a);//因为要读入空格 cin是不可以的  
        for(int i=0;i<a.length();i++)  
        {  
            if(a[i]>='a'&&a[i]<='z')
            for(flag=0;a[i]!=b[flag]&&flag<=29;flag++);//在b串中找下标  
            sum+=c[flag];//在c串中加对应下标的步数  
            }  
            else if(a[i]==' ')  
                sum+=1;//空格加1  
        }  
        cout<<sum<<endl;  
        return 0;  
    }  
    
  • 相关阅读:
    修改表中的列
    查看表中都有什么约束
    数据库关系图
    删除约束
    T_SQL 语句想已有数据表添加约束
    判断回文联
    python自定义函数可以向前引用不用声明
    所有参数的和乘以基数
    子字符串在目标字符串中出现的次数
    除二取余倒序排列
  • 原文地址:https://www.cnblogs.com/zeolim/p/12270791.html
Copyright © 2011-2022 走看看