UVA 10785 - The Mad Numerologist
2017-09-03 17:49
441 查看
题目大意:转换个意思,大概是这样的。m个样例。给定元音辅音的价值。每个样例输入n,输出长度为n的最小价值的组成字符串。其中奇数位为元音,一个元音最多用21次,偶数位为辅音,一个辅音最多用5次。奇偶位可以用的字母,分别讨论,都是从小价值到高价值。相同价值,从上往下。
解题思路:打表,将元音按价值排序到105长度的字符串。辅音按优先级为(价值 > 上下顺序)排序到105长度的字符串。定义两个字符串分别读奇偶的字符,每读入一奇偶字符,就可以表示出两个结果的字符串。对两个字符串排序,按奇偶读给结果字符串。
ps:之前打表一直出错,原因在于,将未能参与结果字符串的字符进行排序,导致了结果出现错误。
ac代码:
解题思路:打表,将元音按价值排序到105长度的字符串。辅音按优先级为(价值 > 上下顺序)排序到105长度的字符串。定义两个字符串分别读奇偶的字符,每读入一奇偶字符,就可以表示出两个结果的字符串。对两个字符串排序,按奇偶读给结果字符串。
ps:之前打表一直出错,原因在于,将未能参与结果字符串的字符进行排序,导致了结果出现错误。
ac代码:
#include <iostream> #include <algorithm> #include <cstring> using namespace std; char a[6] = {"AUEOI"}; char b[22] = {"JSBKTCLDMVNWFXGPYHQZR"}; char s[2][107]; int main() { char ll[107], kk[107], res[212][212], temp1[107], temp2[107]; int n, m, count=1, temp; for (int i=0; i<105; i++){ ll[i] = a[i/21]; kk[i] = b[i/5]; s[0][i] = ll[i]; sort(s[0], s[0]+1+i); for (int j=0,k1=0,k2=0; j<=2*i; j++){ sort(s[1], s[1]+i); if (j%2==0) res[2*i][j] = s[0][k1++]; else res[2*i][j] = s[1][k2++]; res[2*i][j+1] = '\0'; } s[1][i] = kk[i]; sort(s[1], s[1]+i+1); for (int j=0,k1=0,k2=0; j<=2*i+1; j++){ if (j%2==0) res[2*i+1][j] = s[0][k1++]; else res[2*i+1][j] = s[1][k2++]; res[2*i+1][j+1] = '\0'; } } cin >> n; while (n--){ cin >> m; printf("Case %d: %s\n", count, res[m-1]); count++; } return 0; }
相关文章推荐
- UVa 10785 - The Mad Numerologist
- UVA 10785 - The Mad Numerologist
- UVa 10785 The Mad Numerologist (排序)
- UVA - 10785 The Mad Numerologist
- UVA 10785 - The Mad Numerologist
- UVA 10785 The Mad Numerologist
- uva 10785 - The Mad Numerologist
- The Mad Numerologist UVA-10785 第五章
- uva 10785 The Mad Numerologist(遍历+sort排序)
- UVa 10785 - The Mad Numerologist
- UVa 10785 - The Mad Numerologist
- uva 10785 - The Mad Numerologist
- uva 10785 The Mad Numerologist
- UVA 10785 - The Mad Numerologist
- uva 10785 - The Mad Numerologist
- UVa10785 The Mad Numerologist
- UVA - 10785 The Mad Numerologist
- UVA - 10785 The Mad Numerologist 水题
- UVA - 10785 The Mad Numerologist
- uva 10785 The Mad Numerologist(字符串)