空洞
时间: 1ms 内存:128M
描述:
春天来了,单身的霞姐越发地空虚寂寞,于是她想到一个办法,她认 为只要把英文字母上的洞都涂满就能填补心中的空洞,现在有一个字符串,请问霞姐需要涂几个洞。比如:a需要涂一次,k不需要涂,B需要填2次。提供参 考:abcdefghijklmnopqrstuvwxyz,ABCDEFGHIJKLMNOPQRSTUVWXYZ
输入:
第一行是一个正整数t,代表有t个字符串。
接下去t行,每行有一个字符串,长度<=1000,字符串中只有a-z,A
输出:
对于每个字符串输出霞姐需要涂鸦的次数。
示例输入:
2
abcg
ABCD
示例输出:
3
4
提示:
参考答案(内存最优[752]):
#include <stdio.h>
#include <string.h>
int main()
{int t,k,s,i,n;
char a[1005],b[10];
scanf("%d",&t);
gets(b);
while(t--)
{gets(a);
n=strlen(a);
k=0;s=0;
for(i=0;i<n;i++)
{if(a[i]=='a'||a[i]=='b'||a[i]=='d'||a[i]=='e'||a[i]=='g'||a[i]=='o'||a[i]=='p'||a[i]=='q'||a[i]=='A'||a[i]=='D'||a[i]=='O'||a[i]=='P'||a[i]=='Q'||a[i]=='R')
{k=1;s=s+k;}
else if(a[i]=='B')
{k=2;s=s+k;}
else{k=0;s=s+k;}
}
printf("%d\n",s);
}
return 0;
}
参考答案(时间最优[0]):
#include <algorithm>
#include <iostream>
#include <sstream>
#include <cstdlib>
#include <cstring>
#include <cstdio>
#include <string>
#include <bitset>
#include <vector>
#include <queue>
#include <stack>
#include <cmath>
#include <list>
#include <map>
#include <set>
using namespace std;
/***************************************/
typedef vector<int> VI;
typedef vector<char> VC;
typedef vector<string> VS;
typedef set<int> SI;
typedef set<string> SS;
typedef map<int ,int> MII;
typedef map<string,int> MSI;
typedef pair<int,int> PII;
typedef vector<PII> VII;
typedef vector<VI > VVI;
/***************************************/
#define clr(a,b) memset(a,b,sizeof(a))
#define all(x) (x).begin(), (x).end()
#define sz(x) ((int)(x).size())
#define ll long long
#define int64 __int64
#define pb push_back
#define mp make_pair
#define LL(x) ((x)<<1)
#define RR(x) ((x)<<1|1)
#define ri(x) scanf("%d",&x)
#define rii(x,y) scanf("%d%d",&x,&y)
#define rd(x) scanf("%lf",&x)
#define rdd(x,y) scanf("%lf%lf",&x,&y)
#define rs(x) scanf("%s",x)
#define pi(x) printf("%d",x)
#define pin(x) printf("%d\n",x)
#define ps(x) printf("%s",x)
#define pn() printf("\n")
#define sqr(x) ((x)*(x))
#define rep(i,a,b) for(int i=(a);i<(b);i++)
#define repu(i,a,b) for(int i=(a);i<=(b);i++)
#define repd(i,a,b) for(int i=(a);i>=(b);i--)
#define repc(i,a,c) for(int i=(a);(c);i++)
/***************************************/
const int INF = 0x7f7f7f7f;
const double eps = 1e-8;
const double PIE=acos(-1.0);
const int dx[]= {0,-1,0,1};
const int dy[]= {1,0,-1,0};
const int fx[]= {-1,-1,-1,0,0,1,1,1};
const int fy[]= {-1,0,1,-1,1,-1,0,1};
/***************************************/
void openfile()
{
freopen("first.in","rb",stdin);
freopen("first.out","wb",stdout);
}
/**********************华丽丽的分割线,以上为模板部分*****************/
const int a[] = { 1,1,0,1,1,0,1,0,0,0,0,0,0,0,1,1,1,0,0,0,0,0,0,0,0,0 };
const int A[] = { 1,2,0,1,0,0,0,0,0,0,0,0,0,0,1,1,1,1,0,0,0,0,0,0,0,0 };
int t, ans;
char s[1010];
int main()
{
scanf("%d", &t);
while (t--) {
ans = 0;
scanf("%s", s);
for (int i = 0; s[i]; i++)
if (s[i] >= 'a' && s[i] <= 'z')
ans += a[s[i] - 'a'];
else
ans += A[s[i] - 'A'];
printf("%d\n", ans);
}
return 0;
}
题目和答案均来自于互联网,仅供参考,如有问题请联系管理员修改或删除。
