空洞

空洞

时间: 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;
}

题目和答案均来自于互联网,仅供参考,如有问题请联系管理员修改或删除。

点赞

发表评论

电子邮件地址不会被公开。必填项已用 * 标注