字符串与文件操作

字符串与文件操作

H P1321 单词覆盖还原

题目:P1765 手机 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)](https://www.luogu.com.cn/problem/P1765?contestId=85495)

解析:

1.分析题目

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

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

img

得表:
按数: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来在想。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值