【无标题】

第6章 字符串与文件操作

第6章 字符串与文件操作H P1321 单词覆盖还原解析:1.分析题目得表:按数: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字母: a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z2.代码:3.反思:I P3741 honoka的键盘解析:1.分析题目思路:直接求VK个数,特判改变。2.代码3.反思:

H P1321 单词覆盖还原

题目:P1765 手机 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)](手机 - 洛谷)

解析:

1.分析题目

如此图,可得A按1下,A按1下,B按2下,C按1下,D按3下,E按1下,F按2下…………

如此循环,要注意P-Z,因为7,9键各控制四个键。

得表:

按数: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

字母: a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z

2.代码:

#include<bits/stdc++.h>
using namespace std;
string f;//输入变量 
int ans=0;//答案变量 
int g[27]={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};//表
int main ( )
{
    getline(cin,f);//录入整行 
    for (int i=0;i<f.size();i++//逐个分析 
    {
        if (f[i]>='a'&&f[i]<='z')//排除空格
        {
            ans+=g[f[i]-'a'];//取表 
        }
        if (f[i]==' ')//题目强制要求,若有换行,则getline无法全部录入,所以理论上可以直接else,但是如果使用,全WA,但样例下载测结果却AC无误。
            ans++;
    }
    cout<<ans;//输出 
}

3.反思:

这一次我因为大意,没有考虑完全,虽然“只包含英文小写字母和空格只包含英文小写字母和空格”

,但还是应该f[i]==' '特判,避免输入/n,/r。

I P3741 honoka的键盘

P3741 honoka的键盘 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)

解析:

1.分析题目

思路:直接求VK个数,特判改变。

2.代码

#include<bits/stdc++.h>
using namespace std;
string f;//输入变量 
int i,ans;//i凑满足题目,其实不需要。ans是答案。
bool p=0;//p=0时未改变原f。
int main ( )
{
    cin>>i>>f;//直接输入
    for (int i=1;i<f.size();i++)//枚举分f[i]。
    {
        if (f[i-1]=='V'&&f[i]=='K')//是直接VK
        {
            ans++;//答案加一
        }
        else if (f[i-1]=='V'&&f[i]=='V'&&p==0&&f[i+1]!='K')//特判,是否改变f[i],V->K,需要判断是否改变原个数,+1-1=0,改变无意义,不改变。VVV->vvk,vvk—>vkk未改变,无意义。
        {
            p=1;//以变
            ans++;//答案加一
        }
        else if (f[i-1]=='K'&&f[i]=='K'&&p==0&&(f[i-2]=='K'||i<2))
        {
            p=1;//以变
            ans++;//答案加一
        }
    }
    cout<<ans;//输出 
}

3.反思:

注意特判,思考全面,不用想到一个方面就写一个方面,切记不要让WA来在想。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值