POJ3602解题报告
2015-09-14 18:01
267 查看
题意
输入一串字符串,求问有多少种字符,重复出现的不算,限定条件为:ff,fi,fl,ffi,ffl,”,“这7种每种各算一种字符。
解题思路
先把字符串存起来,这里是难点,要注意题目中说的是空格和换行不存,这里就需要一个个的敲进去字符,然后存进字符串里面 然后对每个字符进行判断,是7种之一就把7种的矩阵置为1 是普通的就把普通的矩阵置为1,最后判断为真的数组有多少个,就是结果
代码
#include<cstdio> #include<cstring> #include<iostream> using namespace std; char s[1000]; int count1[1000]; int ff[7]; int len; void solve() { int ans = 0; memset(count1,0,sizeof(count1)); memset(ff,0,sizeof(ff)); for(int i = 0;i<len;i++) { if(s[i] == 'f') { if(s[i+1] == 'f' && (s[i+2] == 'i' || s[i+2]=='l')) { if(s[i+2] == 'i'){ ff[0]=1; } if(s[i+2] == 'l') { ff[1]=1; } i+=2; } else if(s[i+1]=='f'||s[i+1]=='i'||s[i+1]=='l') { if(s[i+1]=='f') ff[2]=1; if(s[i+1]=='i') ff[3]=1; if(s[i+1]=='l') ff[4]=1; i++; } else count1[s[i]]=1; } else if(s[i]=='`'&&s[i+1]=='`') { ff[5]=1; i++; } else if(s[i]=='\''&&s[i+1]=='\'') { ff[6]=1; i++; } else count1[s[i]]=1; } for(int i = 0;i<=256;i++) if(count1[i]) ans++; for(int i = 0;i<7;i++) if(ff[i]) ans++; cout<<ans<<endl; } int main() { char c; len = 0; while(cin>>c) { if(c == EOF) break; //注意 if(c == ' '||c == '\n') continue; s[len++] = c; } solve(); return 0; }
相关文章推荐
- Android使用fragment底部菜单栏
- C#_Winfrom下的中英文翻译
- ios开发日记- 5 屏幕截图
- 线性表【项目4 线性表-- 顺序表应用】之二
- Android:使用AsyncTask实现天气预报功能
- 纯线性同余随机数生成器
- Ajax跨域
- Nginx服务安装配置
- 智能终端双处理器架构
- LNMP系列——twemproxy缓存代理在memcached 缓存环境应用
- 实现图片轮流滑动
- Unicode、UTF8、GB2312、ANSI关系
- 程序中可能有三种类型的错误。
- 截屏
- java发邮件源码
- C语言中函数参数入栈的顺序
- C#_备份sqlserver数据库
- C#_加密解密
- IOS从视频中获取截图
- Objective-C入门03:类和对象