Files
UVA/2010-10-11/10415.cpp
2018-10-20 23:27:07 +08:00

223 lines
6.6 KiB
C++

/*
date:107/10/20
author:Chen Yi Jing
算手指按按鍵拿起來的次數,共十指
*/
#include <iostream>
#include <sstream>
using namespace std;
int main (){
int n = 0;
cin >> n;
string ss;
getline(cin, ss); //do nothing
//case by case
for (int i = 0; i < n; i++) {
string s;
int before[11] = {0};
int after[11] = {0};
int finger[11] = {0};
getline(cin, s);
// cin >> s;
if(s[0] == 1){
cout <<"qq";
}
for (int j = 0; j < s.length(); j++) {
//判斷指法
switch(s[j]) {
case 'c':
after[1] = 0;
after[2] = 1;
after[3] = 1;
after[4] = 1;
after[5] = 0;
after[6] = 0;
after[7] = 1;
after[8] = 1;
after[9] = 1;
after[10] = 1;
break;
case 'd':
after[1] = 0;
after[2] = 1;
after[3] = 1;
after[4] = 1;
after[5] = 0;
after[6] = 0;
after[7] = 1;
after[8] = 1;
after[9] = 1;
after[10] = 0;
break;
case 'e':
after[1] = 0;
after[2] = 1;
after[3] = 1;
after[4] = 1;
after[5] = 0;
after[6] = 0;
after[7] = 1;
after[8] = 1;
after[9] = 0;
after[10] = 0;
break;
case 'f':
after[1] = 0;
after[2] = 1;
after[3] = 1;
after[4] = 1;
after[5] = 0;
after[6] = 0;
after[7] = 1;
after[8] = 0;
after[9] = 0;
after[10] = 0;
break;
case 'g':
after[1] = 0;
after[2] = 1;
after[3] = 1;
after[4] = 1;
after[5] = 0;
after[6] = 0;
after[7] = 0;
after[8] = 0;
after[9] = 0;
after[10] = 0;
break;
case 'a':
after[1] = 0;
after[2] = 1;
after[3] = 1;
after[4] = 0;
after[5] = 0;
after[6] = 0;
after[7] = 0;
after[8] = 0;
after[9] = 0;
after[10] = 0;
break;
case 'b':
after[1] = 0;
after[2] = 1;
after[3] = 0;
after[4] = 0;
after[5] = 0;
after[6] = 0;
after[7] = 0;
after[8] = 0;
after[9] = 0;
after[10] = 0;
break;
case 'C':
after[1] = 0;
after[2] = 0;
after[3] = 1;
after[4] = 0;
after[5] = 0;
after[6] = 0;
after[7] = 0;
after[8] = 0;
after[9] = 0;
after[10] = 0;
break;
case 'D':
after[1] = 1;
after[2] = 1;
after[3] = 1;
after[4] = 1;
after[5] = 0;
after[6] = 0;
after[7] = 1;
after[8] = 1;
after[9] = 1;
after[10] = 0;
break;
case 'E':
after[1] = 1;
after[2] = 1;
after[3] = 1;
after[4] = 1;
after[5] = 0;
after[6] = 0;
after[7] = 1;
after[8] = 1;
after[9] = 0;
after[10] = 0;
break;
case 'F':
after[1] = 1;
after[2] = 1;
after[3] = 1;
after[4] = 1;
after[5] = 0;
after[6] = 0;
after[7] = 1;
after[8] = 0;
after[9] = 0;
after[10] = 0;
break;
case 'G':
after[1] = 1;
after[2] = 1;
after[3] = 1;
after[4] = 1;
after[5] = 0;
after[6] = 0;
after[7] = 0;
after[8] = 0;
after[9] = 0;
after[10] = 0;
break;
case 'A':
after[1] = 1;
after[2] = 1;
after[3] = 1;
after[4] = 0;
after[5] = 0;
after[6] = 0;
after[7] = 0;
after[8] = 0;
after[9] = 0;
after[10] = 0;
break;
case 'B':
after[1] = 1;
after[2] = 1;
after[3] = 0;
after[4] = 0;
after[5] = 0;
after[6] = 0;
after[7] = 0;
after[8] = 0;
after[9] = 0;
after[10] = 0;
break;
default:
break;
}
//判斷是否要加按下去的次數,還有將 before 更新
for (int k = 1; k < 11; k++) {
if (before[k] == 0 && after[k] == 1) {
finger[k]++;
before[k] = 1;
}
else if (before[k] == 1 && after[k] == 0) {
before[k] = 0;
}
}
}
for (int k = 1; k < 10; k++) {
cout << finger[k] << " ";
}
cout << finger[10];
cout << endl;
}
}