zoey
点击国内主页可以让浏览速度加快哦 ~ !

关于HDOJ 1219题(AC Me) 的理解(C/C++)

2019-08-12 hdoj 字符串 gets函数 统计 杭州电子科技大学第三届程序设计大赛
Word count: 591 | Reading time: 3min

    水题,但是注意下要求,每个实例后要求多空一行,最开始提交的代码就因为少空了一行所以WA,还是要注意下的




题目描述

AC Me
Time Limit: 2000/1000 MS (Java/Others)
Memory Limit: 65536/32768 K (Java/Others)
Total Submission(s): 26816
Accepted Submission(s): 10767

Problem Description
  Ignatius is doing his homework now. The teacher gives him some articles and asks him to tell how many times each letter appears.

  It’s really easy, isn’t it? So come on and AC ME.

Input
  Each article consists of just one line, and all the letters are in lowercase. You just have to count the number of each letter, so do not pay attention to other characters. The length of article is at most 100000. Process to the end of file.

  Note: the problem has multi-cases, and you may use “while(gets(buf)){…}” to process to the end of file.

Output
  For each article, you have to tell how many times each letter appears. The output format is like “X:N”.

  Output a blank line after each test case. More details in sample output.

Sample Input
hello, this is my first acm contest!
work hard for hdu acm.

Sample Output
a:1
b:0
c:2
d:0
e:2
f:1
g:0
h:2
i:3
j:0
k:0
l:2
m:2
n:1
o:2
p:0
q:0
r:1
s:4
t:4
u:0
v:0
w:0
x:0
y:1
z:0

a:2
b:0
c:1
d:2
e:0
f:1
g:0
h:2
i:0
j:0
k:1
l:0
m:1
n:0
o:2
p:0
q:0
r:3
s:0
t:0
u:1
v:0
w:1
x:0
y:0
z:0

Author
  Ignatius.L

Source
  杭州电子科技大学第三届程序设计大赛

原题链接

More info:Question

gets()函数(复习)

  gets的函数原型是:

char  *   gets(char *   buffer);

功能:从std in流中读取字符串,直至接受到换行符或EOF时停止,并将读取的结果存放在buffer指针所指向的字符数组中。换行符不作为读取串的内容,读取的换行符被转换为null值,并由此来结束字符串。

返回值:读入成功,返回与参数buffer相同的指针;读入过程中遇到EOF(End-of-File)或发生错误,返回NULL指针。

Accepted代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
#include<iostream>
#include<stdio.h>
#include<string>
using namespace std;
char s[100001];
string az = "abcdefghijklmnopqrstuvwxyz";
int num[26];
int main()
{
while (gets(s)) {
memset(num, 0, sizeof(num));
for (int i = 0; i < strlen(s); i++) {
for (int j = 0; j < 26; j++) {
if (s[i] == az[j]) {
num[j]++;
continue;
}
}
}
for (int i = 0; i < 26; i++) {
cout << az[i] << ":" << num[i] << endl;
}
cout << endl;//第一次没A过就因为少了这一行
}
return 0;
}

参考博客

Author: Zoey

Link: https://zoey1038569979.github.io/2019/08/12/hdoj1219/

Copyright: All articles in this blog are licensed under CC BY-NC-SA 3.0 unless stating additionally.

< PreviousPost
关于HDOJ 1234题(开门人和关门人) 的理解(C/C++)
NextPost >
关于HDOJ 1205题(吃糖果) 的理解(C/C++)
CATALOG
  1. 1. 题目描述
  2. 2. 原题链接
  3. 3. gets()函数(复习)
  4. 4. Accepted代码
  5. 5. 参考博客