题目链接: https://www.nowcoder.com/acm/contest/105/B
题意: 给你一个字母矩阵,和测试组数,让你统计字符串的字符累计出现的次数,然后让你找出需要找的字符,这个字符必须是每行每列里出现次数最多的。
题解: 暴力瞎搞。map列举一下啊。写的十分暴力,绝对不是最优解。QAQ。题好难读,看了好久才懂样例。
1 #include<iostream> 2 #include<string> 3 #include<cstring> 4 #include<cstdio> 5 #include<map> 6 using namespace std; 7 int a[6][6]; 8 int h[6]; 9 int l[6]; 10 int maxh; 11 int maxl; 12 map<int,char> m; 13 14 void init(){ 15 m[0] = '0';m[1] = '1';m[2] = '2';m[3] = '3';m[4] = '4';m[5] = '5'; 16 m[10] = '6';m[11] = '7';m[12] = '8';m[13] = '9';m[14] = 'A';m[15] = 'B'; 17 m[20] = 'C';m[21] = 'D';m[22] = 'E';m[23] = 'F';m[24] = 'G';m[25] = 'H'; 18 m[30] = 'I';m[31] = 'J';m[32] = 'K';m[33] = 'L';m[34] = 'M';m[35] = 'N'; 19 m[40] = 'O';m[41] = 'P';m[42] = 'Q';m[43] = 'R';m[44] = 'S';m[45] = 'T'; 20 m[50] = 'U';m[51] = 'V';m[52] = 'W';m[53] = 'X';m[54] = 'Y';m[55] = 'Z'; 21 } 22 23 int main(){ 24 init(); 25 int n; 26 cin >> n; 27 while(n--){ 28 memset(a,0,sizeof(a)); 29 memset(h,0,sizeof(h)); 30 memset(l,0,sizeof(l)); 31 maxh=0; 32 maxl=0; 33 string s; 34 cin >> s; 35 for(int i=0;i<s.size();i++){ 36 if(s[i]=='0') a[0][0]++; 37 if(s[i]=='1') a[0][1]++; 38 if(s[i]=='2') a[0][2]++; 39 if(s[i]=='3') a[0][3]++; 40 if(s[i]=='4') a[0][4]++; 41 if(s[i]=='5') a[0][5]++; 42 if(s[i]=='6') a[1][0]++; 43 if(s[i]=='7') a[1][1]++; 44 if(s[i]=='8') a[1][2]++; 45 if(s[i]=='9') a[1][3]++; 46 if(s[i]=='A') a[1][4]++; 47 if(s[i]=='B') a[1][5]++; 48 if(s[i]=='C') a[2][0]++; 49 if(s[i]=='D') a[2][1]++; 50 if(s[i]=='E') a[2][2]++; 51 if(s[i]=='F') a[2][3]++; 52 if(s[i]=='G') a[2][4]++; 53 if(s[i]=='H') a[2][5]++; 54 if(s[i]=='I') a[3][0]++; 55 if(s[i]=='J') a[3][1]++; 56 if(s[i]=='K') a[3][2]++; 57 if(s[i]=='L') a[3][3]++; 58 if(s[i]=='M') a[3][4]++; 59 if(s[i]=='N') a[3][5]++; 60 if(s[i]=='O') a[4][0]++; 61 if(s[i]=='P') a[4][1]++; 62 if(s[i]=='Q') a[4][2]++; 63 if(s[i]=='R') a[4][3]++; 64 if(s[i]=='S') a[4][4]++; 65 if(s[i]=='T') a[4][5]++; 66 if(s[i]=='U') a[5][0]++; 67 if(s[i]=='V') a[5][1]++; 68 if(s[i]=='W') a[5][2]++; 69 if(s[i]=='X') a[5][3]++; 70 if(s[i]=='Y') a[5][4]++; 71 if(s[i]=='Z') a[5][5]++; 72 } 73 74 for(int i = 0 ; i < 6 ; i++){ 75 int sum = 0; 76 for(int j = 0 ; j < 6; j++) 77 sum += a[i][j]; 78 79 h[i] = sum; 80 } 81 82 83 for(int i = 0 ; i < 6; i++){ 84 int sum = 0; 85 for(int j = 0 ; j < 6; j++) 86 sum += a[j][i]; 87 88 l[i] = sum; 89 } 90 91 for(int i = 0 ; i < 6; i++){ 92 if(h[i] > maxh) 93 maxh = h[i]; 94 if(l[i] > maxl) 95 maxl = l[i]; 96 } 97 98 //cout << maxh <<" " << maxl << endl; 99 for(int i = 0 ; i < 6; i++){ 100 for(int j = 0; j < 6; j++){ 101 //cout << h[i] << " " << l[j]<<endl; 102 if(h[i] == maxh && l[j] == maxl){ 103 int cnt = i*10+j; 104 printf("%c",m[cnt]); 105 } 106 } 107 } 108 cout << endl; 109 } 110 }