2618 핸드폰 키보드

3149 단어 SDUTOJ
제목 설명
모두 가 그 9 키 의 휴대 전화 키 보드 를 본 적 이 있 을 것 이다. 키보드 의 각 자모의 분 포 는 아래 그림 과 같다.
우리 가 이런 키보드 로 자 모 를 입력 할 때, 어떤 자모 에 대해 서 는 종종 여러 번 눌 러 야만 입력 할 수 있다.
a, b, c 모두 "2" 키 에 입력 a 한 번 만 누 르 고 입력 하면 됩 니 다. c 세 번 연속 으로 눌 러 야 합 니 다.
여러 자 모 를 연속 으로 입력 하 는 규칙 은 다음 과 같 습 니 다.
1. 앞 뒤 두 글자 가 같은 버튼 에 없 으 면 앞 글 자 를 입력 한 후에 다음 글 자 를 직접 입력 할 수 있 습 니 다. 예 를 들 어 ad. 키보드 두 번 눌 러 야 돼, kz. 필요 하 다 6 차례
2. 앞 뒤 두 글자 가 같은 버튼 에 있 으 면 앞 글 자 를 입력 한 후에 시간 을 기 다 려 야 다음 글 자 를 입력 할 수 있 습 니 다. 예 를 들 어 ac, 입력 완료 a 이후, 잠시 기 다 려 야 입력 할 수 있 습 니 다. c。
지금 은 키 보드 를 한 번 누 를 때마다 한 시간 이 걸 리 고 기다 리 는 시간 이 두 시간 이 걸린다 고 가정 한다.
현재 소문 자 만 포 함 된 문자열 을 보 여 주 며 입력 에 걸 리 는 시간 을 계산 합 니 다.
입력
 
여러 그룹의 테스트 데 이 터 를 포함 하여 각 그룹의 테스트 데 이 터 를 입력 하 십시오:
소문 자 만 포함 하 는 문자열 로 입력 하 십시오. 문자열 의 길 이 는 100 을 넘 지 않 습 니 다.
출력
 
각 그룹의 테스트 데이터 에 대해 출력 에 걸 리 는 시간.
예제 입력
bob
www

예제 출력
7
7

제시 하 다.
 
근원
 '사 창 배' 산동이공대학 제5 회 ACM 프로 그래 밍 경연
 
#include 

int pan (char a)
{
    if (a >= 'a' && a<= 'c')
        return 2;
    else if (a >= 'd' && a<= 'f')
        return 3;
    else if (a >= 'g' && a<= 'i')
        return 4;
    else if (a >= 'j' && a<= 'l')
        return 5;
    else if (a >= 'm' && a<= 'o')
        return 6;
    else if (a >= 'p' && a<= 's')
        return 7;
    else if (a >= 't' && a<= 'v')
        return 8;
    else
        return 9;
}

int shu (char a)
{
    switch (a)
    {
    case 'a':
    case 'd':
    case 'g':
    case 'j':
    case 'm':
    case 'p':
    case 't':
    case 'w':
        return 1;
        break;

    case 'b':
    case 'e':
    case 'h':
    case 'k':
    case 'n':
    case 'q':
    case 'u':
    case 'x':
        return 2;
        break;

    case 'c':
    case 'f':
    case 'i':
    case 'l':
    case 'o':
    case 'r':
    case 'v':
    case 'y':
        return 3;
        break;

    case 's':
    case 'z':
        return 4;
        break;
    }
}

int main()
{
    char a[110] = {'\0'};
    char *p = a;
    int ji = 0;
    int sum = 0;

    while (gets (a) != NULL)
    {
        p = a;
        sum = 0;
        ji = pan (*p);
        sum += shu (*p);
        //printf ("%d
",sum); p++; while (*p != '\0') { if (ji != pan(*p)) { sum += shu(*p); //printf ("%d
",sum); ji = pan(*p); p++; } else { sum += 2 + shu (*p); p++; } } printf ("%d
",sum); } return 0; }

좋은 웹페이지 즐겨찾기