ACM준비/algospot
WORDLENGTH
조규현15
2015. 7. 9. 23:30
반응형
https://www.algospot.com/judge/problem/read/WORDLENGTH
algospot.com :: WORDLENGTH
단어 길이 재기 문제 정보 문제 (주의: 이 문제는 TopCoder SRM 202 Div 1 Easy 의 번역입니다) 단어들의 길이는 어떤 문장이 어렵게 쓰여진 문장인지, 쉬운 문장인지를 가르는 데 좋은 척도가 됩니다. 예
www.algospot.com
문자열을 이어서 조건을 3가지로 나눠 처리한다.
#include <stdio.h>
#define LINE_MAX 81
#define STR_MAX 50*LINE_MAX+1
int main()
{
int C;
for (scanf("%d", &C); C > 0; C--)
{
int i, j;
int N, words_len = 0, total_len = 0, words_count = 0, TAG = 0, STR_LEN = 0;
char STR[STR_MAX];
STR[0] = '\0';
scanf("%d", &N);
getchar();
for (i = 0; i < N; i++){
char buf[LINE_MAX];
fgets(buf, sizeof(buf)-1, stdin);
for (j = 0; buf[j] != '\0'; j++)
STR[STR_LEN++] = buf[j];
STR[STR_LEN] = '\0';
}
for (i = 0; i < STR_LEN; i++){
switch (STR[i])
{
case '-':
if (TAG == 0)
TAG = 1;
else if (words_len != 0){
++words_count;
total_len += words_len;
words_len = 0;
}
break;
case '\n':
if (TAG == 1)
TAG = 2;
else if (words_len != 0){
++words_count;
total_len += words_len;
words_len = 0;
}
break;
case ' ':
if (words_len != 0){
++words_count;
total_len += words_len;
words_len = 0;
}
break;
default:
if (TAG == 0 || TAG == 2 || words_len == 0)
++words_len;
else if (words_len != 0){
++words_count;
total_len += words_len;
words_len = 1;
}
TAG = 0;
break;
}
}
if (words_len != 0)
{
++words_count;
total_len += words_len;
}
printf("%.3lf\n", (double)total_len / (double)words_count);
}
return 0;
}
반응형